0
我正在使用Orientdb 2.2.12。Orientdb連接不關閉
這下面是從那裏我得到連接實例
public static synchronized Connection getOrientDbConnection(String appName)
{
try {
// address of Db Server
OServerAdmin serverAdmin = new OServerAdmin
("remote:" + ip + ":" + port + "/"
+ appName).connect("root", "1234");
if (serverAdmin.existsDatabase())
{
serverAdmin.close();
Properties info = new Properties();
info.put("user", "root");
info.put("password", "1234");
Connection conn = (OrientJdbcConnection) DriverManager.getConnection("jdbc:orient:remote:" + ip + ":" + port + "/"
+ appName, info);
//System.out.println(" Database Connection instance returned for : " + appName + " for thread ID : " + Thread.currentThread().getId());
return conn;
}
else
{
// "Type_Of_Db", "Type_Of_Storage"
serverAdmin.createDatabase("GRAPH", "plocal");
serverAdmin.close();
OrientGraphFactory graphFactory = new OrientGraphFactory(
"remote:" + ip + ":" + port + "/" + appName);
/**
* ####################### Do This only Ones-Per-Database #####################
* 1. Create index with unique field
* @name = unique index will be created only one time for a particular database
*
*
*/
OrientGraphNoTx graph = graphFactory.getNoTx();
graph.createKeyIndex("name", Vertex.class, new Parameter<String, String>("type", "UNIQUE"));
// shutdown the graph which created Index immediately
graph.commit();
graph.shutdown();
// close all db pools
graphFactory.close();
try
{
Properties info = new Properties();
info.put("user", "root");
info.put("password", "pcp");
Connection conn = (OrientJdbcConnection) DriverManager.getConnection("jdbc:orient:remote:" +ip + ":" + port + "/" + appName, info);
//System.out.println(" Database created and Connection instance return for : " + appName + " for thread ID : " + Thread.currentThread().getId());
return conn;
} catch (Exception e) {
//System.out.println("Problem creating database or getting connection from database " + " for thread ID : " + Thread.currentThread().getId() + e.getMessage());
e.getMessage();
return null;
}
}
}
catch(Exception e)
{
e.getMessage();
}
return null;
}
我的用例單一來源是創造: -
- 頂點
- 邊緣
- 更新頂點,邊緣等。
App.java
Connection conn = DB.getOrientDbConnection(String appName)
// create vertex
// create edges
conn.commit()
conn.close();
我面臨什麼問題?
即使程序完成並且conn.close()
完成,顯示Orientdb連接的JConsole仍然處於活動狀態。
Name: OrientDB <- Asynch Client (/192.168.1.11:4424)
State: RUNNABLE
Total blocked: 0 Total waited: 136
Stack trace:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.socketRead(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
java.io.BufferedInputStream.fill(Unknown Source)
java.io.BufferedInputStream.read(Unknown Source)
- locked [email protected]
java.io.DataInputStream.readByte(Unknown Source)
com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.readByte(OChannelBinary.java:68)
com.orientechnologies.orient.client.binary.OChannelBinaryAsynchClient.beginResponse(OChannelBinaryAsynchClient.java:189)
com.orientechnologies.orient.client.binary.OAsynchChannelServiceThread.execute(OAsynchChannelServiceThread.java:51)
com.orientechnologies.common.thread.OSoftThread.run(OSoftThread.java:77)
這是一個錯誤還是我做錯了什麼?
在100線程系統上,有一個有100個Orientdb未關閉連接。 請問這不會導致內存堆問題? –