您好我在分布式环境中使用orientdb,其中有两个orientdb服务器实例,例如dbSrv-1和dbSrv-2。我已按照以下tutorial来设置分布式数据库,并且工作正常。
但我遇到的问题是当一个节点关闭并且java客户端试图连接到该特定节点时,在这种情况下,客户端似乎陷入无限循环的连接重试。 我试过通过命令行设置orientdb全局设置,如下所示:
java -Dnetwork.retry=1
也尝试在运行时设置它
OGlobalConfiguration.NETWORK_SOCKET_RETRY.setValue(1);
但似乎没有任何效果。以下是打开数据库连接的代码:
db = new ODatabaseDocumentTx("remote:localhost/mydb").open("admin", "admin");
Java异常跟踪如下:
Oct 15, 2015 8:03:48 PM com.orientechnologies.common.log.OLogManager log
SEVERE: Can not open database with url localhost:2424/mydb
com.orientechnologies.common.io.OIOException: Cannot open a connection to remote server: localhost:2424/mydb
at com.orientechnologies.orient.client.remote.OStorageRemote.getAvailableNetwork(OStorageRemote.java:2114)
at com.orientechnologies.orient.client.remote.OStorageRemote.openRemoteDatabase(OStorageRemote.java:1841)
at com.orientechnologies.orient.client.remote.OStorageRemote.open(OStorageRemote.java:222)
at com.orientechnologies.orient.client.remote.OStorageRemoteThread.open(OStorageRemoteThread.java:89)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:249)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPolled.internalOpen(OPartitionedDatabasePool.java:140)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.openDatabase(OPartitionedDatabasePool.java:343)
at com.orientechnologies.orient.core.db.OPartitionedDatabasePool.acquire(OPartitionedDatabasePool.java:313)
at com.worldhubcom.cc.mydb.db.DatabaseHelper.getDatabase(DatabaseHelper.java:45)
at com.worldhubcom.cc.mydb.db.SubscriberDao.save(SubscriberDao.java:35)
at com.worldhubcom.cc.mydb.authen.ServiceAuthenticate.main(ServiceAuthenticate.java:24)
Caused by: com.orientechnologies.common.io.OIOException: Error on connecting to localhost:2424/mydb
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager.createNetworkConnection(ORemoteConnectionManager.java:246)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager$1.createNewResource(ORemoteConnectionManager.java:80)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager$1.createNewResource(ORemoteConnectionManager.java:77)
at com.orientechnologies.common.concur.resource.OResourcePool.getResource(OResourcePool.java:94)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager.acquire(ORemoteConnectionManager.java:101)
at com.orientechnologies.orient.client.remote.OStorageRemote.getAvailableNetwork(OStorageRemote.java:2103)
... 10 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynchClient.<init>(OChannelBinaryAsynchClient.java:83)
at com.orientechnologies.orient.client.remote.ORemoteConnectionManager.createNetworkConnection(ORemoteConnectionManager.java:233)
... 15 more
答案 0 :(得分:0)
试试这段代码:
public static void main(String[] args) {
OrientGraphFactory factory = new OrientGraphFactory("remote:localhost/test", "admin", "admin");
OrientGraphNoTx graph = factory.getNoTx();
OrientInsert.testInsertion(graph);
graph.shutdown();
System.out.println("");
System.out.println("End main");
}
public static class OrientInsert {
public static void testInsertion(OrientGraphNoTx graph) {
System.out.println(new Date());
int count = 1000;
//create class 1
OClass clVertice1;
OrientVertex vVertice1;
clVertice1 = graph.createVertexType("CLASS1", "V");
clVertice1.createProperty("prop1", OType.STRING);
clVertice1.createProperty("prop2", OType.STRING);
clVertice1.createProperty("prop3", OType.STRING);
//create class 2
OClass clVertice2;
OrientVertex vVertice2;
clVertice2 = graph.createVertexType("CLASS2", "V");
clVertice2.createProperty("prop1", OType.STRING);
clVertice2.createProperty("prop2", OType.STRING);
clVertice2.createProperty("prop3", OType.STRING);
for (int i = 0; i < count; ++i) {
System.out.println("");
System.out.println("i :"+i+" -------------------" );
//....class 1
vVertice1 = graph.addVertex("class:CLASS1");
vVertice1.setProperties("prop1", Integer.toString(i));
vVertice1.setProperties("prop2", "22");
vVertice1.setProperties("prop3", "3333");
for (int j = 0; j < count; ++j) {
System.out.print("");
System.out.print(j+" ");
//...class 2
vVertice2 = graph.addVertex("class:CLASS2");
vVertice2.setProperties("prop1", Integer.toString(i + j / 1000));
vVertice2.setProperties("prop2", "22");
vVertice2.setProperties("prop3", "3333");
//edge
graph.addEdge(null, vVertice1, vVertice2, "v1v2");
}
}
}
}