我创建了一个需要在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数组(没什么好玩的)