Firebase ChildEventListener在Java Admin SDK中长时间无法使用

时间:2019-06-06 12:43:55

标签: android firebase java-ee firebase-realtime-database firebase-admin

在我当前的项目中,数据持久性就是这样;

Android> Firebase数据库> Java EE Web应用程序> MySQL数据库。

已完成从android向Firebase写入数据的工作,并且工作正常。在下一步中,从firebase中读取然后写入MySQL,我正在使用Firebase Admin SDK。

我的计划是为Web应用程序设置一个ServletContextListener,以便在Glassfish服务器上进行部署时使用Tiger,在该侦听器中,我使用以下代码为Firebase数据库上的某些数据库引用设置了childeventListeners

@Override
public void contextInitialized(ServletContextEvent arg0) {
    try {

        ClassLoader classLoader = getClass().getClassLoader();
        InputStream serviceAccount = classLoader
                .getResourceAsStream("/XXXXXX/firebase_private_key.json");

        FirebaseOptions options = new FirebaseOptions.Builder()
                .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                .setDatabaseUrl("https://xxxxxxxxxxx.com").build();

        FirebaseApp.initializeApp(options);
        FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();


        // SET UP LISTENER
        DatabaseReference ref = firebaseDatabase.getReference("XXXXXXXXX");
        ref.addChildEventListener(new ChildEventListener() {

            @Override
            public void onChildRemoved(DataSnapshot arg0) {
            }

            @Override
            public void onChildMoved(DataSnapshot arg0, String arg1) {
            }

            @Override
            public void onChildChanged(DataSnapshot arg0, String arg1) {
            }

            @Override
            public void onChildAdded(DataSnapshot arg0, String arg1) {
                   storeData(arg0);
            }

            @Override
            public void onCancelled(DatabaseError arg0) {
            }
            });
}

一切都按照我的预期进行得很好,但仅持续了几个小时。 ChildeventListeners会自动禁用。

我需要让监听器永远工作,以保持Firebase数据库与MySQL数据库之间的数据同步。

我错过了什么吗?或者我滥用ChildEventListeners吗?宁可使用上述过程,而是使用EJB Timers实施预定的同步过程,这是一个好习惯?

0 个答案:

没有答案