繁体   English   中英

我可以使用JNDI共享MongoClient实例吗?

[英]Can I use JNDI to share a MongoClient instance?

我正在将Jetty用于Web服务器。 我建立了一个使用MongoDb来获取用户的自定义LoginService /领域。 这个LoginService在它自己的jar中,在码头服务器容器的类路径中。

我也想在Web应用程序中使用MongoDb。 通常,对于SQL,您将设置一个通过JNDI共享的连接池。 我可以用MongoDb做类似的事情吗?

每个MongoClient管理一个连接池。 是否可以在JNDI中存储任意对象(即MongoClient实例),还是必须使用ObjectFactory接口?

如果必须创建某种ObjectFactory,基本上可以将其变成单例并返回相同的MongoClient实例吗?

我没有完全理解JNDI,因为那里几乎没有资源可以真正解释JNDI的魔力,所以我什至没有问正确的问题。

您需要在server.xml中添加以下内容:

<mongo id="mongo">
    <hostNames>YOUR.MONGODB.HOSTNAME.HERE</hostNames>
</mongo>

<mongoDB databaseName="YOUR_DATABASE_NAME" jndiName="mongo/mongodb" mongoRef="mongo"/>

然后在您的java类中:

@Resource(name = "mongo/mongodb")
DB mongoDB;

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  DBCollection table = mongoDB.getCollection("YOUR_TABLE_NAME");
  // etc.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM