2013-05-30 4 views
0

JPA를 사용하여 mongodb에 내 Java 응용 프로그램을 연결하기 위해 datanucleus mongodb maven 플러그인과 "액세스 플랫폼"을 사용하고 있습니다.mongodb 복제본 세트에 연결할 수 없습니다

나는, VM 우분투에 http://docs.mongodb.org/manual/tutorial/deploy-replica-set/ 의 지시에 따라 db1.mongo, db2.mongo을 추가하고, 호스트가 게스트 VM 및 호스트 (맥 OS X) 모두에서 파일에 db3.mongo했습니다.

(http://www.datanucleus.org/products/accessplatform_3_0/mongodb/support.html에 설명 된대로) 서버에 연결하는 간단한 Java 응용 프로그램이 있습니다.

나는 차 (연결 URL : mongodb:db1.mongo:27017/ops?replicaSet=rs0)에 응용 프로그램을 연결하면 모든 것이 잘 작동하지만 mongodb:db1.mongo:27017/ops?replicaSet=rs0,db2.mongo:27018,db3.mongo:27019가되도록 내가 연결 URL로 다른 두 MongoDB의의의를 추가 할 때 예외 얻을 :

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을 사용합니다. 필자는 mongodb를 별도의 VM에서 실행하고 비 로컬 IP를 실행하고 호스트 파일에 이름을 추가하여 완화하려고했습니다.

mongodb를 사용하는 주 목표는 복제를 가능하게하고 장애 조치가 가능하도록 가용성을 확보하는 것입니다. 문제가 발생해도 노드 간의 트랜잭션과 일관성은 문제가되지 않으며, 한 번에 두 번 업데이트를 잃어 버릴 염려가 없으므로 mongodb는 JPA를 사용하여 좋은 대안으로 보입니다 (나는 완전히 mysql :-)로 몸살을 앓고 있습니다

미리 도움을 주셔서 감사합니다.

답변

0

필자는 처음에 그 지원을 작성하고 다시 작업했을 때 다중 MongoDB 서버를 사용했습니다. 지금은 시간이 없지만 the DataNucleus code that parses your datastore connection URL을보고 MongoDB java API 호출로 변환합니다. 서버를 분리하고 "new Mongo(serverAddrs);"을 호출하십시오. 그것이 올바르게 전달되면 (디버거?), DataNucleus가 당신을 위해하는 것과는 달리 Mongo에만 국한된 문제 일 수 있습니다. 또한

나는 당신이 당신의 MongoDB를 URI를 형식이 잘못되었습니다 것 같아요 당신이 datanucleus - MongoDB를

0

의 V3.1.2을 사용하여 (또는 그 이상)하고 있는지 확인하십시오. 대신이의 :

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 
관련 문제