有时

时间:2016-09-14 14:24:47

标签: java spring firebase firebase-realtime-database

我正在使用Firebase和Java Spring以及Tomcat8。我的firebase身份验证规则是

{
    "rules": {
        ".read": "auth!=null",
        ".write": "auth!=null"

    }
}

我在java spring应用程序中创建了一个单例类来加载firebase配置并启用匿名登录。部署服务器几个小时后会出现此问题。当我部署WAR文件时,它会将数据库更新几个小时,几小时后它就会失败。然后我需要重新加载服务器上下文。 我知道会议每24小时到期一次,但它在24小时之前也会出现问题。

我尝试过的事情

  1. 更改了auth规则中的" .write":true
  2. 在部署服务器之后,每25小时设置一个cron作业以初始化单例实例。
  3. CronJob实例初始化代码:

    @RequestMapping(value = "/cronJob/reloadSession", method = RequestMethod.POST)
        @ResponseBody
        public BasicResponse reloadSession(HttpServletRequest request) {
            BasicResponse response = new BasicResponse();
            FirebaseManager.INSTANCE = new FirebaseManager();
            return response;
        }
    

    Firebase Manager:Singleton类代码

    package com.dolphino.webapp.manager;
    
    import java.io.InputStream;
    import java.util.List;
    
    import org.springframework.scheduling.annotation.Async;
    import org.springframework.stereotype.Service;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    import com.google.firebase.database.DatabaseReference;
    import com.google.firebase.database.FirebaseDatabase;
    
    @Service
    public class FirebaseManager {
    
        public static FirebaseManager INSTANCE = new FirebaseManager();
    
        private static String FIREBASE_PATH = "/firebaseConnection.json";
    
        private static FirebaseOptions options;
        public FirebaseManager(){
            super();
            try{
                InputStream in = MobileManager.class.getResourceAsStream(FirebaseManager.FIREBASE_PATH);
                options = new FirebaseOptions.Builder()
                          .setServiceAccount(in)
                          .setDatabaseUrl("https://my-url.firebaseio.com/")
                          .build();     
                FirebaseApp.initializeApp(options);
            }catch(Exception e){
                //throw exception
            }
        }
    
        @Async
        public void saveUser(String parentId, String text){
                DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
                mDatabase.child("users").child(parentId).setValue(text);
        }       
    }
    

    我还尝试将 saveUser 方法保留在另一个类中,并自动连接它。但它仍然没有用。

    tomcat8服务器日志:

    logs/catalina.2016-09-15.log:21:15-Sep-2016 12:08:18.765 WARNING [http-nio-8443-exec-57] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [project-spring] appears to have started a thread named [MongoCleaner560407163] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
    logs/catalina.2016-09-15.log:24:15-Sep-2016 12:08:18.766 WARNING [http-nio-8443-exec-57] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [project-spring] appears to have started a thread named [FirebaseDatabaseWorker] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
    logs/catalina.2016-09-15.log:34:15-Sep-2016 12:08:18.766 WARNING [http-nio-8443-exec-57] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [project-spring] appears to have started a thread named [FirebaseDatabaseEventTarget] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
    logs/catalina.2016-09-15.log:43:15-Sep-2016 12:08:18.766 WARNING [http-nio-8443-exec-57] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [project-spring] appears to have started a thread named [java-sdk-http-connection-reaper] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
    logs/catalina.2016-09-15.log:46:15-Sep-2016 12:08:24.944 INFO [http-nio-8443-exec-57] org.apache.catalina.core.StandardContext.reload Reloading Context with name [/project-spring] is completed
    

0 个答案:

没有答案