Configure MongoDB connectivity in Liberty
Applications that use MongoDB can run on Liberty. For access to a MongoDB instance, the applications use the MongoDB Java driver and data sources that you configure for the server.
MongoDB (from humongous
) is a scalable, high-performance, open source NoSQL database.
Stabilized feature: The mongodb-2.0 feature is stabilized. The MongoDB Java driver versions 2.10.0 to 2.14.2 that the feature supports are no longer in service. Instead of using the mongodb-2.0 feature, create a CDI producer for Mongo. The CDI producer can use any Mongo version that meets your requirements.
Only MongoDB Java driver versions 2.10.0 to 2.14.2 are supported. For SSL, the minimum is 2.11.0 and for certificate authentication the minimum is 2.12.0.
To enable an application to use MongoDB, you configure a shared library for the MongoDB Java driver and a library reference to the shared library in the server.xml file of Liberty. An application can access MongoDB directly from the application or through the mongodb-2.0 feature and mongoDB instance configurations in the server.xml file.
- Install the MongoDB Java driver in a location that your application and the Liberty runtime can access.
For example, place the MongoDB driver .jar file in the Liberty_profile_root/usr/servers/server_name/lib directory.
- Configure a shared library for the MongoDB driver .jar file in the server.xml file of the Liberty server.
<library id="MongoLib"> <file name="${server.config.dir}/lib/mongo.jar" /> </library>
- Enable the application to access MongoDB, either by direct access from the application or by
using the mongodb-2.0 feature.
- Enable direct access to MongoDB from the application.
- Configure a library reference for the shared library in an application element in the
server.xml
file.
<application ...> <classloader commonLibraryRef="MongoLib"/> </application>
- Configure a library reference for the shared library in an application element in the
server.xml
file.
The application can now access the MongoDB APIs directly. If we want the application to use the runtime injection engine, continue with the next steps.
- Enable direct access to MongoDB from the application.
- Add the mongodb-2.0 feature to the server.xml
file.
<featureManager> <feature>mongodb-2.0</feature> <feature>jndi-1.0</feature> </featureManager>
The JNDI feature is only required when we use jndi to look up resources. If we use resource injection, it is not required.
- Configure a mongo element that has a reference to the shared library created in a previous step.
<mongo id="mongo" libraryRef="MongoLib" />
- Configure the mongoDB
element.
<mongoDB jndiName="mongo/testdb" mongoRef="mongo" databaseName="db-test" />
Configure a JNDI name enables an application or the Liberty runtime to look up the MongoDB instance.
- Enable the application to access MongoDB.
The following example shows both JNDI lookup and resource injection:
public class TestServlet extends HttpServlet { @Resource(name = "mongo/testdb") protected DB db; ... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Alternatively use InitialContext lookup DB lookup = (DB) new InitialContext().lookup("java:comp/env/mongo/testdb"); ...
- If we are using JNDI lookup, add a resource environment reference to the
web.xml file of the
application:
<resource-env-ref> <resource-env-ref-name>mongo/testdb</resource-env-ref-name> <resource-env-ref-type>com.mongodb.DB</resource-env-ref-type> </resource-env-ref>
What to do next
Test use of the MongoDB from the application.
For more information about the MongoDB element, see MongoDB Integration 2.0.
Subtopics
- Configure secure MongoDB connections in Liberty
- Connecting to a distributed set of MongoDB instances
Parent topic: Administer data access applications on Liberty