2

我正在使用 Jetty 作为 Web 服务器。我已经构建了一个使用 MongoDb 来获取用户的自定义 LoginService/realm。这个 LoginService 在它自己的 jar 中,并且在码头服务器容器的类路径上。

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

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

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

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

4

1 回答 1

0

你的 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.
}
于 2014-10-08T05:04:12.970 回答