java - 将 MongoDb 与 Java Servlet 结合使用

标签 java mongodb servlets

我在 Java servlet 上使用 Mongo DB 时遇到问题。

我的 servlet 有许多方法(~20)访问数据库以检索和添加数据。一个非常简短的例子:

public static String getSomething(String s) {
  String json = "[]";
  JSONArray jsonArray = new JSONArray();
  DBCollection table;

  try {
    Mongo mongo = new Mongo("localhost", 27017);
    DB db = mongo.getDB( "myDb" );  
        BasicDBObject quoteQuery = new BasicDBObject("abc", abc);
    DBCursor cursor = table.find(quoteQuery);

    try {
      while(cursor.hasNext()) {
        jsonArray.put(cursor.next());
      }
    } finally {
      cursor.close();
    }

// ...

现在的问题是当这个Java servlet部署在linux服务器上时,它可以正常工作10天左右。

之后它崩溃了。

当我转到 var/log 目录中的 mongodb.log 时,我得到以下重复输出:

“连接被拒绝,因为打开的连接太多”

我不确定现在在哪里编辑内容或如何处理这个问题。我试图增加服务器中打开连接的限制,但结果仍然相同。

有什么建议吗?

最佳答案

来自 API 文档:http://api.mongodb.org/java/2.11.3/

公共(public)类 Mongo 扩展对象

具有内部连接池的数据库连接。 对于大多数应用程序,您应该为整个 JVM 使用一个 Mongo 实例

关于java - 将 MongoDb 与 Java Servlet 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18785175/

相关文章:

java - HTTP 状态 500 - 错误实例化 servlet 类 org.springframework.web.servlet.DispatcherServlet : Error Log while running

java - 如何以编程方式杀死第三个应用程序?

java - 如何将 ImageView 固定到布局的底部?

java - AngularJS:服务器端架构

mongodb - 在 mongo 中的日期之间的数组中查找

javax.servlet.lastUpdated 问题

java - 使用 getRequestDispatcher 了解 JSP 代码行

java - 为什么 Epoch 使用 java.util.date 没有失败?

java - 尝试查询 MongoDB 数据时出现问题

mongodb - 每 20 分钟到 2 小时体验一次 Mongo::OperationTimeout