Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法连接到mongodb副本集_Mongodb_Maven_Jpa_Datanucleus - Fatal编程技术网

无法连接到mongodb副本集

无法连接到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),一切正常,但当

我使用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添加到连接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