无法连接到mongodb副本集
我使用datanucleus mongodb maven插件和“访问平台”使用JPA将我的java应用程序连接到mongodb 我已经按照上面的说明做了 在ubuntu虚拟机上,将db1.mongo、db2.mongo和db3.mongo添加到来宾虚拟机和主机(Mac OS X)的主机文件中 我得到了一个连接到服务器的简单java应用程序(如中所述) 当我将应用程序连接到主应用程序时(连接url:无法连接到mongodb副本集,mongodb,maven,jpa,datanucleus,Mongodb,Maven,Jpa,Datanucleus,我使用datanucleus mongodb maven插件和“访问平台”使用JPA将我的java应用程序连接到mongodb 我已经按照上面的说明做了 在ubuntu虚拟机上,将db1.mongo、db2.mongo和db3.mongo添加到来宾虚拟机和主机(Mac OS X)的主机文件中 我得到了一个连接到服务器的简单java应用程序(如中所述) 当我将应用程序连接到主应用程序时(连接url:mongodb:db1.mongo:27017/ops?replicset=rs0),一切正常,但当
mongodb:db1.mongo:27017/ops?replicset=rs0
),一切正常,但当我将另外两个mongodb添加到连接url时,它会变成mongodb:db1.mongo:27017/ops?replicset=rs0,db2.mongo:27018,db3.mongo:27019
,我得到一个例外:
com.mongodb.MongoException: can't find a master
at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:503)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:236)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
...
我已经搜索了这个错误,但是我发现的那些错误与localhost/127.0.0.1的使用有关。我试图通过在一个单独的VM上运行mongodb,从而在一个非本地IP上运行mongodb,并将名称添加到主机文件中来缓解这种情况
尝试mongodb的主要目标是实现可用性,因此复制和故障切换非常重要。在发生故障时,节点之间的事务和一致性不是问题,我们也不担心偶尔会丢失一两次更新,因此mongodb看起来是使用JPA的好选择(我对mysql完全厌倦了:-)
提前感谢您的帮助 我最初编写支持并在那时工作时使用了多个MongoDB服务器。现在没有时间,但您可以查看并将其转换为MongoDB java API调用。应该分离服务器,然后调用“
newmongo(serverAddrs)
;”。如果它正确地传递它(调试器?),那么问题可能是特定于Mongo的,而不是DataNucleus为您所做的
还要确保您使用的是datanucleus mongodb的v3.1.2(或更高版本)我认为您的mongodb URI格式错误。与此相反:
mongodb:db1.mongo:27017/ops?replicaSet=rs0,db2.mongo:27018,db3.mongo:27019
这样做:
mongodb:db1.mongo:27017,db2.mongo:27018,db3.mongo:27019/ops?replicaSet=rs0