我创建了一个需要在Firebase数据库上编写多个节点的后端模块 . 这在本地完美地工作(localhost),但是一旦部署在AppEngine上,就不会创建任何节点,但服务器返回200 .

如文档中所述,我已配置 appengine-web.xml ,因此App Engine后端使用手动缩放

<manual-scaling>
<instances>1</instances>
</manual-scaling>

在我的servlet下面

public class UseCaseServlet extends HttpServlet {

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    FirebaseUtils.initFirebase(getServletContext());

    ArrayList<User> users = getSomeUsers();
    for(User user :users){
        writeUserNodeAsTrue(user);
    }

    writeOverallServiceStatus();
    resp.setContentType("text/plain");
}

private void writeUserNodeAsTrue(User user) {
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference(user.id);
    myRef.setValue(true);
}

private void writeOverallServiceStatus(){
    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference myRef =      database.getReference("service_status");
    myRef.setValue(true);
}
}

此代码在本地完美运行,但不适用于应用引擎 . 我尝试使用任务或交易,但我想我应该遗漏一些东西 .

任何帮助都将超过赞赏:)干杯

欲获得更多信息 :

-initFirebase()遵循本教程建议https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio

public static void initFirebase(ServletContext servletContext){
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setServiceAccount(servletContext.getResourceAsStream("/WEB-INF/youApp-xxxxxxx.json"))
            .setDatabaseUrl("https://your-app.firebaseio.com/")
            .build();
    try {
        FirebaseApp.getInstance();
    } catch (Exception error) {
        Log.info("doesn't exist...");
    }
    try {
        FirebaseApp.initializeApp(options);
    } catch (Exception error) {
        Log.info("already exists...");
    }
}
  • getSomeUsers()返回一个String数组(没什么好玩的)