簡體   English   中英

EclipseLink連接超時

[英]EclipseLink Connection Timeout

這應該是一個老問題,但我搜索了很多,沒有發現任何有用的東西。 我的主要問題是當連接丟失時,我的Java swing應用程序會凍結。 必須存在連接超時,以便應用程序通知用戶。

我想這個這個 ,但他們沒有任何幫助。

這真的是EclipseLink中的一個弱點,或者這是我無法弄清楚的事情嗎?

編輯:這是我通過EclipseLink連接的方式:

private static javax.persistence.EntityManager em = null;
public static javax.persistence.EntityManager getEntityManager()
{
    if (em == null || !em.isOpen())
    {
        try
        {
            em = Persistence
                  .createEntityManagerFactory("persistenceUnitName", getPersistenceConfig()).createEntityManager();
        } catch (Exception e)
        {
           //log
        }
    }
    return em;
}

這是我的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence  http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="persistenceUnitName" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>org.entities.MyEntity</class>
<shared-cache-mode>NONE</shared-cache-mode>
<validation-mode>NONE</validation-mode>
<properties>
  <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
</properties>

swing和em在同一個線程中, em無法檢索數據,因此swing正在等待em並且它會凍結。

您的應用程序掛在哪里? 請中斷或調試進程並獲取堆棧轉儲。

如果它掛起在查詢上,您可以設置可能有用的查詢超時。

它很可能掛在JDBC驅動程序上,JPA沒有什么可以做的。 檢查JDBC驅動程序中是否有任何設置以防止掛起。

暫無
暫無

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

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