Java Naming and Directory Interface (JNDI)
The driver includes a JNDI ObjectFactory implementation,
MongoClientFactory
(legacy version
), that returns MongoClient
instances based on a
connection string.
Examples
The configuration of the MongoClientFactory
differs depending on the application server. Below are examples of a few popular ones.
Wildfly (formerly JBoss)
In a Wildfly installation, create a new module for MongoDB at
modules/system/layers/base/org/mongodb/main
.Copy the mongo-java-driver jar file into the module.
Add the following module.xml file into the module:
<module xmlns="urn:jboss:module:1.3" name="org.mongodb"> <resources> <resource-root path="mongodb-driver-sync-4.3.0.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> <module name="javax.servlet.api" optional="true"/> </dependencies> </module>
Add a binding to JBoss’s naming subsystem configuration that references the above module, the
MongoClientFactory
class, and the connection string for the MongoDB cluster.<subsystem xmlns="urn:jboss:domain:naming:2.0"> <bindings> <object-factory name="java:global/MyMongoClient" module="org.mongodb" class="com.mongodb.client.MongoClientFactory"> <environment> <property name="connectionString" value="mongodb://localhost:27017"/> </environment> </object-factory> </bindings> <remote-naming/> </subsystem>
A MongoClient instance will be accessible via the JNDI name java:global/MyMongoClient
.
Tomcat
In a Tomcat installation, copy the mongo-java-driver jar file into the lib directory.
In context.xml of a web application, add a resource that references the
MongoClientFactory
class, and the connection string for the MongoDB cluster:<Resource name="mongodb/MyMongoClient" auth="Container" type="com.mongodb.MongoClient" closeMethod="close" factory="com.mongodb.client.MongoClientFactory" singleton="true" connectionString="mongodb://localhost"/>
In web.xml of a web application, add a reference to the above resource:
<resource-ref> <res-ref-name> mongodb/MyMongoClient </res-ref-name> <res-type> com.mongodb.MongoClient </res-type> <res-auth> Container </res-auth> </resource-ref>
A MongoClient instance will be accessible via the JNDI name mongodb/MyMongoClient
in the java:comp/env
context.