これは古い質問のはずですが、私はたくさん検索しましたが、何も役に立ちませんでした。私の主な問題は、接続が失われると、私の 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>
スイングとem
同じスレッドにありem
、データを取得できないため、スイングが待機しem
てフリーズします。