MongoDB с Java-сервером Tomcat v7

Я написал простой Java-сервер. Основная идея заключается в том, что после нажатия кнопки сервлет загружает некоторые данные в MongoDB.

Однако всякий раз, когда я пытаюсь что-то загрузить в MongoDB (в моем случае, сохраняя коллекцию), я получаю следующую ошибку:

com.mongodb.MongoException$Network: can't call something : /127.0.0.1:27017/
com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:295)
com.mongodb.DBTCPConnector.call(DBTCPConnector.java:257)
com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:310)
com.mongodb.DB.command(DB.java:274)
com.mongodb.DB.command(DB.java:256)
com.mongodb.DB.command(DB.java:313)
com.mongodb.DB.command(DB.java:211)
com.mongodb.DB.createCollection(DB.java:170)
servlets.ImportData.doPost(ImportData.java:60)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

Кто-нибудь знает, в чем здесь проблема? Когда я искал эту проблему, я обнаружил, что люди догадываются обо всем - от конфликтов портов до устаревших соединений и неправильной установки MongoDB, поэтому было бы здорово получить некоторую ясность в этом вопросе.

Если это поможет увидеть исходный код, я был бы более чем рад поделиться им.

Заранее спасибо!

1 ответ

Решение

Оказывается, мой экземпляр mongod не работал в то время, когда я выполнял команды.

Обязательно запускайте "mongod" в вашей консоли все время, когда вы используете сервер.

Вторая ошибка, с которой я столкнулся, заключалась в невозможности указать хост и порт MongoClient следующим образом:

MongoClient mongo = new MongoClient();

Вместо этого вы можете сделать:

MongoClient mongo = new MongoClient("localhost", 27017);

Вы можете вставить это в свой контекст сервлета и передать его по мере необходимости другим сервлетам, и хотя я объявил MongoClient mongo с новым оператором здесь, я бы рекомендовал оставить его как переменную класса ContextListener.

Другие вопросы по тегам