Spring boot 中集成MongoDB遇到報(bào)錯(cuò)的問(wèn)題

centos7防火墻導(dǎo)致spring?boot訪問(wèn)mongodb是出現(xiàn)異常查看詳情http://blog.csdn.net/hkh_1012/article/details/44899561

環(huán)境描述:

數(shù)據(jù)庫(kù):mongodb3.0.1

數(shù)據(jù)庫(kù)系統(tǒng):centos7,(虛擬機(jī),最小安裝)

數(shù)據(jù)庫(kù)驅(qū)動(dòng):mongo-java-driver-3.0.0.jar

問(wèn)題描述:shell環(huán)境下用mongo客戶端程序能正常連接mongod,但java程序始終報(bào)錯(cuò)颂翼。

java代碼很簡(jiǎn)單忽孽,如下:

[java]?view plain?copy

Mongo?mg?=?new?Mongo("192.168.59.128",27017);??

DB?db?=?mg.getDB("mydb");??

for(String?s:db.getCollectionNames()){??

????????????System.out.println(s);??

????????}??

報(bào)錯(cuò)如下:

四月?05,?2015?8:26:27?下午?com.mongodb.diagnostics.logging.JULLogger?log

信息:?Cluster?created?with?settings?{hosts=[192.168.59.128:27017],?mode=SINGLE,?requiredClusterType=UNKNOWN,?serverSelectionTimeout='30000?ms',?maxWaitQueueSize=50}

四月?05,?2015?8:26:28?下午?com.mongodb.diagnostics.logging.JULLogger?log

信息:?No?server?chosen?by?ReadPreferenceServerSelector{readPreference=primary}?from?cluster?description?ClusterDescription{type=UNKNOWN,?connectionMode=SINGLE,?all=[ServerDescription{address=192.168.59.128:27017,?type=UNKNOWN,?state=CONNECTING}]}.?Waiting?for?30000?ms?before?timing?out

四月?05,?2015?8:26:48?下午?com.mongodb.diagnostics.logging.JULLogger?log

信息:?Exception?in?monitor?thread?while?connecting?to?server?192.168.59.128:27017

com.mongodb.MongoSocketOpenException:?Exception?opening?socket

at?com.mongodb.connection.SocketStream.open(SocketStream.java:63)

at?com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:114)

at?com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:127)

at?java.lang.Thread.run(Unknown?Source)

Caused?by:?java.net.SocketTimeoutException:?connect?timed?out

at?java.net.DualStackPlainSocketImpl.waitForConnect(Native?Method)

at?java.net.DualStackPlainSocketImpl.socketConnect(Unknown?Source)

at?java.net.AbstractPlainSocketImpl.doConnect(Unknown?Source)

at?java.net.AbstractPlainSocketImpl.connectToAddress(Unknown?Source)

at?java.net.AbstractPlainSocketImpl.connect(Unknown?Source)

at?java.net.PlainSocketImpl.connect(Unknown?Source)

at?java.net.SocksSocketImpl.connect(Unknown?Source)

at?java.net.Socket.connect(Unknown?Source)

at?com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:50)

at?com.mongodb.connection.SocketStream.open(SocketStream.java:58)

...?3?more

Exception?in?thread?"main"?com.mongodb.MongoTimeoutException:?Timed?out?after?30000?ms?while?waiting?for?a?server?that?matches?ReadPreferenceServerSelector{readPreference=primary}.?Client?view?of?cluster?state?is?{type=UNKNOWN,?servers=[{address=192.168.59.128:27017,?type=UNKNOWN,?state=CONNECTING,?exception={com.mongodb.MongoSocketOpenException:?Exception?opening?socket},?caused?by?{java.net.SocketTimeoutException:?connect?timed?out}}]

at?com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:370)

at?com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:101)

at?com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.(ClusterBinding.java:75)

at?com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.(ClusterBinding.java:71)

at?com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)

at?com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:166)

at?com.mongodb.operation.ListCollectionsOperation.execute(ListCollectionsOperation.java:172)

at?com.mongodb.operation.ListCollectionsOperation.execute(ListCollectionsOperation.java:80)

at?com.mongodb.Mongo.execute(Mongo.java:736)

at?com.mongodb.Mongo$2.execute(Mongo.java:723)

at?com.mongodb.OperationIterable.iterator(OperationIterable.java:47)

at?com.mongodb.OperationIterable.forEach(OperationIterable.java:66)

at?com.mongodb.MappingIterable.forEach(MappingIterable.java:50)

at?com.mongodb.MappingIterable.into(MappingIterable.java:60)

at?com.mongodb.DB.getCollectionNames(DB.java:223)

at?mongodbtest.TestMongodbCurd.main(TestMongodbCurd.java:13)

報(bào)錯(cuò)信息中有“Exception opening socket”推測(cè)應(yīng)該是java程序與服務(wù)器建立連接時(shí)報(bào)錯(cuò)姐刁,

執(zhí)行命令ps -aux | grep mong余掖,查看mongod進(jìn)程田篇,結(jié)果顯示mongod運(yùn)行正常许布。

root ? ? ?2139 ?1.1 ?6.9 631964 70364 ? ? ? ? ?Sl ? 16:15 ? 0:48 mongod -f /usr/local/mongodb/mongodb-linux-x86_64-3.0.1/bin/mongodb.conf

執(zhí)行命令netstat -ntlp 兴革,查看數(shù)據(jù)庫(kù)27017端口監(jiān)聽(tīng)是否正常,結(jié)果正常

tcp ? ? ? ?0 ? ? ?0 0.0.0.0:27017 ? ? ? ? ? 0.0.0.0:* ? ? ? ? ? ? ? LISTEN ? ? ?2139/mongod

執(zhí)行命令?cat /usr/local/mongodb/mongodb-linux-x86_64-3.0.1/bin/mongodb.conf蜜唾,再次查看mongod的啟動(dòng)配置文件杂曲,結(jié)果如下,仍沒(méi)有問(wèn)題

dbpath = /usr/local/mongodb/data/db

logpath = /usr/local/mongodb/logs/mongodb.log

#bind_ip = 192.1168.59.128

port = 27017

fork = true

#nohttpinterface = true

至此袁余,再結(jié)合shell下mongo客戶端可以正常使用擎勘,基本可以推斷不是mongodb數(shù)據(jù)庫(kù)的問(wèn)題,應(yīng)該是系統(tǒng)安全設(shè)置的問(wèn)題颖榜,首先想到的是防火墻棚饵。

查看centos7的官方文檔,知道centos7最小安裝默認(rèn)只安裝防火墻的動(dòng)態(tài)配置規(guī)則服務(wù)(firewalld)掩完,靜態(tài)配置規(guī)則服務(wù)(iptables與ip6tables)需要另行安裝噪漾。

安裝防火墻靜態(tài)配置規(guī)則服務(wù),并設(shè)置成可用狀態(tài)

yum install iptables-services

systemctl mask firewalld.service

systemctl enable iptables.service

systemctl enable ip6tables.service

修改配置:vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

停用動(dòng)態(tài)規(guī)則服務(wù)且蓬,啟用靜態(tài)規(guī)則服務(wù)

systemctl stop firewalld.service

systemctl start iptables.service

systemctl start ip6tables.service

再次運(yùn)行java程序,得到結(jié)果如下:

信息: Opened connection [connectionId{localValue:2, serverValue:3}] to 192.168.59.128:27017

inventory

person

personInfo

system.indexes

testData

與想要的結(jié)果一致欣硼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市缅疟,隨后出現(xiàn)的幾起案子分别,更是在濱河造成了極大的恐慌,老刑警劉巖存淫,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耘斩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡桅咆,警方通過(guò)查閱死者的電腦和手機(jī)括授,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人荚虚,你說(shuō)我怎么就攤上這事薛夜。” “怎么了版述?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵梯澜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我渴析,道長(zhǎng)晚伙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任俭茧,我火速辦了婚禮咆疗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘母债。我一直安慰自己午磁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布毡们。 她就那樣靜靜地躺著迅皇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漏隐。 梳的紋絲不亂的頭發(fā)上喧半,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音青责,去河邊找鬼挺据。 笑死,一個(gè)胖子當(dāng)著我的面吹牛脖隶,可吹牛的內(nèi)容都是我干的扁耐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼产阱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婉称!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起构蹬,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤王暗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后庄敛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體俗壹,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年藻烤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了绷雏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片头滔。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涎显,靈堂內(nèi)的尸體忽然破棺而出坤检,到底是詐尸還是另有隱情,我是刑警寧澤期吓,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布早歇,位于F島的核電站,受9級(jí)特大地震影響膘婶,放射性物質(zhì)發(fā)生泄漏缺前。R本人自食惡果不足惜蛀醉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一悬襟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拯刁,春花似錦脊岳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至帚桩,卻和暖如春亿驾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背账嚎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工莫瞬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人郭蕉。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓疼邀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親召锈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旁振,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355