2013-06-11 1 views
0

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

Однако, когда я пытаюсь загрузит что-то в 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

David, кажется, что ваш экземпляр mongod не работает. Можете ли вы подключиться к mongo через shell/CLI? –

+0

Спасибо за быстрый ответ, Мигель. Похоже, что работает Mongod в фоновом режиме, исправил эту проблему. Теперь я получаю новую ошибку, которая «HTTP Status 500 -« ok »никогда не должна быть нулевой ...», но я посмотрю, смогу ли я понять, что это такое. Еще раз спасибо, человек! –

ответ

0

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

Убедитесь, что вы запускаете «mongod» на своей консоли в любое время, когда используете сервер.

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

MongoClient mongo = new MongoClient(); 

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

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

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