标题:CentOS7防火墙导致Java程序访问MongoDB3.0.1报错的问题分析
开发环境:CentOS7、Java、MongoDB3.0.1
问题描述
在CentOS7系统中使用Java程序访问MongoDB3.0.1时,程序会报错。经过排查,发现是CentOS7系统默认开启的防火墙导致的问题。
具体报错信息如下:
Caused by: com.mongodb.MongoSocketReadException: Prematurely reached end of stream
at com.mongodb.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:528)
at com.mongodb.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:219)
at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:147)
at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:114)
at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)
at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)
at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:106)
at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:63)
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129)
... 31 more
解决步骤
步骤1:查看防火墙状态
在终端输入以下命令,查看CentOS7系统中防火墙的状态。
systemctl status firewalld.service
如果防火墙状态为Running,则说明防火墙正在运行。
步骤2:开启mongodb端口
在终端输入以下命令,开启mongodb的端口。
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
示例1:使用以上命令,开放mongodb的端口后,Java程序可以顺利访问MongoDB数据库。
示例2:在没有开放mongodb端口的情况下,使用Java程序访问MongoDB数据库时,程序会报错。报错信息显示,Java程序无法连接MongoDB数据库。
结论
在CentOS7系统中,如果默认开启了防火墙,会导致Java程序访问MongoDB3.0.1时出现错误。需要手动开启mongodb的端口,以解决该问题。
以上是CentOS7防火墙导致Java程序访问MongoDB3.0.1报错的完整攻略。若有不当之处,还请指出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析 - Python技术站