Orientdb соединение не закрывается
Я использую Orientdb 2.2.12.
Это ниже один источник, откуда я получаю экземпляр подключения
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()
сделано, JConsole показывает соединение с Orientdb все еще активным.
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 java.io.BufferedInputStream@1780dcd
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)
Это ошибка или я что-то не так делаю?