【问题标题】:How to terminate Firebase thread in Spring MVC app如何在 Spring MVC 应用程序中终止 Firebase 线程
【发布时间】:2014-01-16 02:13:11
【问题描述】:

我在 tomcat 的 Spring MVC 应用程序中使用 Firebase。 似乎 firebase 创建了一个非守护线程来阻止 tomcat 关闭。

如何在我的 Spring 应用中终止/关闭 Firebase?

这就是我使用 Firebase 的方式:

private static Firebase getUserRef(String username)
{
    Firebase ref = new Firebase("https://<firebaseurl>"); 
    return ref.child(username);
}
private static void createUserName(final String name)
{
    final Firebase userref = getUserRef(name);
    userref.addListenerForSingleValueEvent(new ValueEventListener()
    {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot)
        {
            Object value = dataSnapshot.getValue();
            // logic
        }

        @Override
        public void onCancelled(FirebaseError firebaseError)
        {

        }
    });
}

createUserName() 方法在控制器方法中调用。

我应该使用 bean 吗?

【问题讨论】:

  • 向我们展示您如何使用 Firebase。你声明 bean 吗? Firebase 入口点是什么?
  • 已更新。如您所见,我没有使用 bean,也不确定是否应该使用?
  • 我根本不知道Firebase API,但请尝试使用调用contextDestroyed()ServletContextListener 方法添加Firebase.goOffline()
  • 这是可能的。但我正在等待 Firebase 支持人员提供官方答案
  • 好吧,根据this,似乎没有API调用来杀死工作线程。另外,Firebase.goOffline() 只是关闭网络连接,它对工作线程没有任何作用。

标签: spring tomcat spring-mvc firebase


【解决方案1】:

自 Firebase Java 客户端 v1.0.15 起,此问题已得到修复。您可以在此处下载最新版本: https://www.firebase.com/docs/java-quickstart.html

Firebase 现在只创建守护线程,因此您的进程将按预期干净退出。

【讨论】:

  • 来自匿名用户的评论:“您可以调用Firebase.goOffline(),Firebase 将关闭其所有线程,让您的进程干净地退出。”
  • 这没有解决,当应用程序被取消部署时,FirebaseDatabaseWorker 线程永远不会在 tomcat 上终止:apache-tomee-plus-7.0.1 firebase-server-sdk 3.0.1 警告 - Web 应用程序 [myApp]似乎已经启动了一个名为 [FirebaseDatabaseWorker] 的线程,但未能阻止它。这很可能造成内存泄漏。 JVisualVM 将 FirebaseDatabaseWorker 报告为已停放。我在 ServletContextListener.contextDestroyed 方法上调用 firebase.goOffline(),但它不会释放 FirebaseDatabaseWorker thead。
  • 这个还没解决,我用的是com.google.firebase:firebase-admin:5.2.0版本
  • com.google.firebase:firebase-admin:5.5.0 中仍未修复此问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 2022-01-17
  • 2012-05-30
  • 1970-01-01
相关资源
最近更新 更多