我正在尝试使用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
¿有帮助吗? 谢谢