当前位置: 首页 > 知识库问答 >
问题:

mongodb套接字中的java.lang.Throwable错误意味着什么?

司马项明
2023-03-14

我想弄明白那个错误是什么。当我将mongoDB放到另一个实例中时,它就开始发生了。

错误有一个很大的信息,但它没有说什么,也没有已知的触发它的操作。

错误消息图像:

@Log
@WebListener
public class AppServletContextListener implements ServletContextListener {
    @Inject
    MongoClientProvider mongo;

    @Override
    public void contextDestroyed(ServletContextEvent arg) {
        log.info("ServletContextListener destroyed");
        DbUtils.closeMongoConnections(mongo);
    }

    @Override
    public void contextInitialized(ServletContextEvent arg) {
        log.info("ServletContextListener started");
    }
}

.

public class DbUtils {
    public static void closeMongoConnections(MongoClientProvider mongo) {
        mongo.getDeletedGroups().getManager().close();
        mongo.getMessages().getManager().close();
        mongo.getGameficationInfos().getManager().close();
        mongo.getDgsa().getManager().close();
        mongo.getRisa().getManager().close();
        mongo.getExpiredEmailLinks().getManager().close();
    }
}

共有1个答案

谢唯
2023-03-14

您已经从错误中删除了有用的部分,但它已经出现在屏幕截图中。在at Tue Jan 12 19:34:31 UTC 2016部分之前也会有一些内容,它会告诉您错误来自ASURLClassLoader并告诉您一些关于类加载器状态的信息。

关键部分是图像中的最后一行:

...
was requested to find class org.bson.codecs.EncoderContext$1 after done was invoked from the following stack trace

它所讨论的done()方法是一个清理方法,当类加载器准备好进行垃圾收集时调用该方法。因此,此时,EncoderContext类正在尝试加载一个类,但是它到达的AsurlClassLoader处于被标记为要清理但尚未清理的这种边缘状态。

我以前也见过类似的问题,目前正在针对Payara服务器进行调查,Payara服务器是从GlassFish派生出来的。如果您能在Payara Github存储库中提出一个问题,我将不胜感激:https://Github.com/Payara/Payara/issues

在此之前,我们将继续对此进行研究。在此之前,我们将继续对此进行研究。在此之前,我们将继续对此进行研究。在此之前,我们将继续对此进行研究。在此之前,我们将继续对此进行研究。在此之前,我们将继续对此进行研究。在此之前,我们将继续对此进行研究。在此之前,我们将继续进行研究。

编辑:实际上,仔细看ASURLClassLoader堆栈(大屏幕截图),它看起来像是因为取消部署而调用了done()。因此,MongoDB很可能是从一个未部署的应用程序中调用的,同时也没有处理MongoDB。

这可能是您想要的,但在这种情况下,MongoDB资源不应该从应用程序中创建。否则,需要在取消部署应用程序之前对其进行适当的销毁。

 类似资料:
  • ELIFECYCLE是什么意思? 我在寻找两个答案中的一个:ELIFECYCLE是什么意思?(或者)为什么我的应用程序代码中出现错误?

  • 套接字由ip:port定义。服务器和客户端都将有自己的套接字 套接字连接由五个touples定义:server_ip、server_port、client_ip、client_port、protocol 套接字描述符是标识套接字的整数值 我尝试实现自己的服务器,其中socket()和accept()返回不同的套接字描述符值(总是这样吗?)。我的问题是,为什么说accept()会创建一个新的套接字,

  • 问题内容: 这是什么? 这是有关警告,错误和注意事项的许多答案,这些警告,错误和注意事项在您对PHP进行编程时可能会遇到,并且不知道如何解决它们。这也是一个社区Wiki,因此邀请所有人参与添加并维护此列表。 为什么是这样? 诸如“已发送标题”或“呼叫非对象成员”之类的问题经常在堆栈溢出中弹出。这些问题的根本原因总是相同的。因此,这些问题的答案通常会重复它们,然后向OP显示在特定情况下应更改的行。这

  • 本文向大家介绍max字段在MongoDB db。 .stats()的输出中意味着什么?,包括了max字段在MongoDB db。 .stats()的输出中意味着什么?的使用技巧和注意事项,需要的朋友参考一下 使用最大字段为了限制收集中的文档数。以下是使用上限集合中的max字段的查询- 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出-

  • 我想创建一个