簡體   English   中英

在neo4j查詢后java進程不會停止

[英]java process won't stop after neo4j query

我正在使用來自neo4j OGM的ConfigrationSourceSessionFactory連接到遠程neo4j數據庫,如下所示:

private final static ConfigurationSource props = new ClasspathConfigurationSource("neo4j-connection.properties");
    private final static Configuration configuration = new Configuration.Builder(props).build();
    private final static SessionFactory sessionFactory = new SessionFactory(configuration, "domain");

然后我運行一個密碼查詢並取回一個 Iterable 的 POJO 映射到帶有 OGM 注釋的 neo4j 節點

private final LinkedBlockingQueue<Session> sessionPool = new LinkedBlockingQueue<>(8192);
@Override
    public Iterable<Location> findAll() {
        try {
            return session.loadAll(Location.class, 1);
        } finally {
            closeSession(session);
        }
    }
private void closeSession(Session session) {
        if (session != null) {
            try {
                sessionPool.offer(session, 100, TimeUnit.MILLISECONDS);
            } catch (Throwable e) {
                e.printStackTrace();
            }
        }
    }

一切正常,在我的主要方法中,我使用 neo4j 值創建了 POJO 對象

public static void main(String[] args) {
        LocationServiceImpl locationService = new LocationServiceImpl();
        Iterable<Location> locations = locationService.findAll();
        for(Location location : locations) {
            System.out.println(location.getSubType());//eg. prints Floor, Building etc
        }
        System.out.println("End");
    }

但是在 main 方法完成后,應用程序不會停止。 正在打印的“End”字符串上方。 所以有些線程掛在某處,我不知道在哪里以及為什么。

我嘗試關閉 neo4j ogm 會話,但沒有成功。

我的 neo4j ogm pom 依賴項

 <dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-ogm-bolt-driver</artifactId>
            <version>3.1.2</version>
            <scope>runtime</scope>
        </dependency>
 <dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-jdbc-driver</artifactId>
            <version>3.4.0</version>
        </dependency>
<dependency>
            <groupId>org.neo4j</groupId>
            <artifactId>neo4j-ogm-core</artifactId>
            <version>3.1.3</version>
        </dependency>

從視覺虛擬機打印屏幕在此處輸入圖片說明

您還必須關閉SessionFactory

一些背景:我假設您使用 Bolt 協議進行連接。 創建SessionFactory的實例還將創建一個 java (bolt) 驅動程序實例及其所有連接池等。要進行干凈的關閉調用sessionFactory.close()也將關閉/關閉驅動程序。

暫無
暫無

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

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