2013-06-11 98 views
0

我寫了一個簡單的Java服務器。基本的想法是,單擊按鈕後,servlet會將一些數據加載到MongoDB中。MongoDB與Tomcat v7 Java服務器

但是,每當我嘗試實際的東西加載到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實例沒有運行。你能通過shell/CLI連接到mongo嗎? –

+0

感謝您的快速回復,Miguel。看起來像在後臺運行Mongod修復了這個問題。現在我得到一個新的錯誤,即「HTTP狀態500 - '確定'不應該爲空...」,但我會看看我是否可以弄清楚是什麼。再次感謝,男士! –

回答

0

我發現我的mongod實例在執行命令時沒有運行。

請務必在您使用服務器的所有時間在控制檯中運行「mongod」。

我遇到的是沒有指定MongoClient的主機和端口,以下列方式的第二個錯誤:

MongoClient mongo = new MongoClient(); 

相反,你可以這樣做:

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

你能堅持到這你的servlet上下文並根據需要將它傳遞給其他servlet,而我在這裏用new語句聲明MongoClient mongo時,我建議將它保留爲ContextListener的類變量。