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)

  1. In a Wildfly installation, create a new module for MongoDB at modules/system/layers/base/org/mongodb/main.

  2. Copy the mongo-java-driver jar file into the module.

  3. 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> 
  4. 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

  1. In a Tomcat installation, copy the mongo-java-driver jar file into the lib directory.

  2. 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"/> 
  3. 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.