Orientdb连接没有关闭

时间:2016-11-09 15:17:13

标签: orientdb graph-databases orientdb-2.1 orientdb2.2

我正在使用 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()完成后,显示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 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)

这是一个错误还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您的服务器正在运行,您将在JConsole中看到它。