簡體   English   中英

OrientDB連接未關閉

[英]Orientdb connection not closing

我正在使用Orientdb 2.2.12

這是我從中獲得Connection實例的單一來源

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)

這是一個錯誤還是我做錯了什么?

如果服務器正在運行,您將在JConsole中看到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM