簡體   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