由于ClassCastException

时间:2019-03-15 17:00:43

标签: tomcat jndi mongo-java-driver

我正在尝试使用http://mongodb.github.io/mongo-java-driver/3.5/driver/tutorials/jndi/的mongo-java-driver通过Tomcat(8)中的JNDI连接MongoDB(3.4.7) 我的tomcat配置是:

 - In context.xml  

    <Resource name="mongodb/MyMongoClient"
         auth="Container"
         type="com.mongodb.MongoClient"
         closeMethod="close"
         factory="com.mongodb.client.jndi.MongoClientFactory"
         singleton="true" connectionString="mongodb://localhost[correctUriToMongo]" />

 - In web.xml

     <resource-ref>
        <res-ref-name>
            mongodb/MyMongoClient
        </res-ref-name>
        <res-type>
            com.mongodb.MongoClient
        </res-type>
        <res-auth>
            Container
        </res-auth>
    </resource-ref> 


 - mongo-java-driver-3.5.0.jar added in TOMCAT_HOME/lib

当我尝试通过java:comp / env上下文中的JNDI名称mongodb / MyMongoClient实例化MongoClient时,

 1. MongoClient mongoClient() throws Exception {
            Context initCtx = new InitialContext()
            Context envCtx = (Context) initCtx.lookup("java:comp/env")
            return (MongoClient) envCtx.lookup("mongodb/MyMongoClient")
        }

 2. @Resource(lookup="java:comp/env/mongodb/MyMongoClient")
    MongoClient mongoClient

我收到ClassCastException->异常:无法使用类'com.mongodb强制转换对象'Mongo {options = MongoClientOptions { ... }}}'。 MongoClient”分类为“ com.mongodb.MongoClient”

我已经在我的应用程序的pom.xml上使用此代码尝试了此问题Can't connect MongoDb via JNDI in java的答案

 <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.5.0</version>
    <scope>provided</scope>
 </dependency>

但是我也获得了相同的ClassCastException,我尝试使用从3.4到3.9.1的所有不同版本的mongo-java-driver

¿有帮助吗? 谢谢

0 个答案:

没有答案