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.