【问题标题】:Can't connect MongoDb via JNDI in java无法通过Java中的JNDI连接MongoDb
【发布时间】:2019-05-25 13:14:39
【问题描述】:

我正在尝试使用以下代码通过 Wildfly 中的 JNDI 连接 MongoDB。

Context ctx = new InitialContext();
MongoClient mongoClient = (MongoClient) ctx.lookup("java:global/MyMongoClient");

但我收到以下错误。

 Exception->com.mongodb.MongoClient cannot be cast to com.mongodb.MongoClient

我在“wildfly-10.1.0.Final/modules/system/layers/base/org/mongodb/main”目录和“mongodb-driver-3.4. “wildfly-10.1.0.Final/standalone/deployments/APPLICATION.war/WEB-INF/lib”中的 0.jar”。为什么会出现上述异常。

【问题讨论】:

    标签: java mongodb jackson mongo-java mongo-java-driver


    【解决方案1】:

    当使用一个类加载器加载类时,您将收到 ClassCastExceptions,然后尝试将其强制转换为由不同类加载器加载的同一类。

    这些类在 JVM 中由两个不同的 Class 对象表示,并且转换将失败。

    由于 Mongo 驱动程序由 WildFly 提供,请尝试将其与您的应用程序 (WAR) 捆绑在一起 - 如果使用 Maven,请将驱动程序标记为已提供

    【讨论】:

    • 感谢您提供线索。我通过使用 jboss-deployment-structure.xml 加载 Wildfly 提供的 Mongo-driver 解决了这个问题。我的另一个问题是,有什么方法可以从 MongoClient 对象中获取连接的数据库名称。
    猜你喜欢
    • 2019-05-25
    • 2011-05-03
    • 2018-04-02
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多