2013-05-30 3 views
3

원격 mongodb 인스턴스에 연결하려고 시도하고 있지만 오류가 계속 발생합니다.Java로 원격 mongodb 서버에 연결

자바 코드 :

Mongo mongo = new Mongo("172.234.52.24"); 
DB db = mongo.getDB("myDB"); 
collection = db.getCollection("myCollection"); 

하지만 다음과 같은 예외가 점점 계속 :

java.io.IOException: couldn't connect to [/172.234.52.24:27017] bc:java.net.ConnectException: Connection refused 

내가해야 할 다른 무언가가 있습니까? 데이터베이스에 액세스하거나 몽고 쪽에서 일부 사용 권한을 변경하려고하면 사용자 이름/암호를 설정 하시겠습니까? 그것의 정상적인 mongo 우분투 서버에 추가 구성이나 권한을 설치합니다.

추가 정보 : mongo 172.234.52.24:8888이 작동하지 않습니다. 예외 : 연결에 실패했습니다. 나는 다른 호스트에게 ping 할 수 있고, mongo가 그것에 달리고 있다는 것을 알 수있다.

아이디어가 있으십니까? 감사합니다.

+0

포트가 열려 확장 - 당신은 등록 정보 파일을 읽을 수있는 코드 아래에 사용할 수 있습니까? 왜 172.234.52.24 : 8888에 접속하려고 했습니까?''8888'은 기본 포트가 아닙니다. http : //docs.mongodb.org/manual/tutorial/configure-linux-iptables-firewall/ – WiredPrairie

+0

"mongo 172.234.52.24"가 효과가 있습니까? 서버로 ssh하면 "mongo localhost"가 작동합니까? –

답변

5

나는 그것을 알아 냈다 ... 너희 모두에게 큰 제안이 있었지만 문제는 더 근본적이었다.

원격 서버에있는 mongo 구성 파일에 로컬 IP에 설정된 bind_ip 변수가 있습니다. 일단 내가 이것을 주석 처리하면, 모든 것이 제대로 작동했다.

감사합니다.

+0

안녕하세요 exxodus7! 어떻게 문제를 해결했는지에 대해 자세히 이야기 해 주시겠습니까? – Chiran

+0

@Chiran mongod 구성 파일을 /etc/mongod.conf에서 열고 bind_ip = 127.0.0.1 줄을 주석으로 처리하십시오. – slownage

+0

@slonage에 감사드립니다. 실제로 파일을 편집 한 후 mongod 서비스를 다시 시작하면됩니다. – saching

0

나를 위해 다음 작품 :

private static final String DB_NAME = "yourDbName"; 

MongoClient mongo = new MongoClient(); 
DB db = mongo.getDB(DB_NAME); 
collection = db.getCollection("myCollection"); 

DB를 이름이 드라이버에 의해 사용됩니다; 연결 문자열 (172.234.52.24:27017)은 데이터 (MongoVue 또는 MongoExplorer)를 볼 때 클라이언트가 사용합니다. 또한 포트 27017을 고수하십시오.

편집 : Java 용 MongoDriver를 사용하여 연결합니다.

0

당신이 당신의 pom.xml 1. 스프링 데이터 MongoDB를 (1.5.2.RELEASE) (2.13.0)

그냥 업데이트 2. 몽고 - 자바 드라이버에서 올바른 받는다는 의존성을 추가했는지 확인 자바 코드에 따라 귀하의 자격 증명이 당신을 위해 작동합니다. 아래 코드의 "$ external"은 원격 위치의 Linux 컴퓨터에있는 데이터베이스에 연결하려고한다는 것을 나타냅니다.

아래 코드는 독립 실행 형 Java 프로그램에서 작동합니다.

String database = "TestDev"; 
    String username = "[email protected]"; 
    String pass = "XXXXX"; 
    char[] password = pass.toCharArray(); 

    try { 

     List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>(); 
     ServerAddress address = new ServerAddress("hostname", portnumber); 
     serverAddresses.add(address); 
     List<MongoCredential> credentials = new ArrayList<MongoCredential>(); 
     MongoCredential credential = MongoCredential.createPlainCredential(username, "$external", password); 
     credentials.add(credential); 
     MongoClient mongoClient1 = new MongoClient(serverAddresses, credentials); 
     DB db = mongoClient1.getDB(database); 
     System.out.println(db.getCollectionNames()); 


     System.out.println("Done"); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
    } 
0

Java 웹 응용 프로그램을 사용하여 원격 MongoDB 데이터베이스에 연결하십시오. 코드 아래에 반드시 도움이됩니다.

아래 코드를 사용하기 전에 자격 증명이 필요한 속성 파일을 추가하십시오. spring-config.xml에서 해당 속성 파일을 읽습니다.

<context:property-placeholder location='classpath:/config/configTest.properties'/> 

@Configuration 공용 클래스 MongoConfiguration는 AbstractMongoConfiguration {

@Value("${mongodb.dbname}") 
private String dbName; 

@Value("${mongodb.host}") 
private String host; 

@Value("${mongodb.port}") 
private Integer port; 

@Value("${mongodb.username}") 
private String userName; 

@Value("${mongodb.password}") 
private String password; 

@Value("${mongodb.authenticationdatabase}") 
private String authenticationDatabase; 

@Override 
protected String getDatabaseName() { 
    return this.dbName; 
} 

@Override 
public MongoClient mongo() throws Exception { 
    List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>(); 
    ServerAddress address = new ServerAddress(host, port); 
    serverAddresses.add(address); 
    List<MongoCredential> credentials = new ArrayList<MongoCredential>(); 
    MongoCredential credential = MongoCredential.createPlainCredential(userName, authenticationDatabase, password.toCharArray()); 
    credentials.add(credential); 
    return new MongoClient(serverAddresses, credentials); 
} 

@Override 
@Bean 
public SimpleMongoDbFactory mongoDbFactory() throws Exception { 
    return new SimpleMongoDbFactory(mongo(), getDatabaseName()); 
} 

@Override 
@Bean 
public MongoTemplate mongoTemplate() throws Exception { 

    final MongoTemplate mongoTemplate = new MongoTemplate(mongo(), getDatabaseName()); 
    mongoTemplate.setWriteConcern(WriteConcern.SAFE); 
    return mongoTemplate; 
} 
관련 문제