내 앱은 EntityManager를 만들고 그 후에 의도적으로 RuntimeException을 던졌습니다. 엔티티 관리자를 만들기 전에 RuntimeException 줄을 배치하면 예외가 main에서 올바르게 포착되고 앱이 종료됩니다 (예상대로). 그러나 그 이후에 예외가 발생하면 예외가 잡히지 만 (스택 트레이스를 볼 수 있음) 앱은 계속 실행되며 종료해야합니다. Netbeans에서 스레드의 상태는 "zombie"입니다.
사용 된 라이브러리
내 시험 수업
package test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class Main {
public static void main(String[] args) {
// throw an exception here, app closes as expected
EntityManagerFactory factory = Persistence.createEntityManagerFactory("pu");
EntityManager em = factory.createEntityManager();
// throw an exception here, it runs forever
throw new RuntimeException();
}
}
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_2_0.xsd">
<persistence-unit name="pu" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="javax.persistence.jdbc.driver" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="password"/>
<property name="javax.persistence.jdbc.url" value="jdbc:jtds:sqlserver://server:1433/database"/>
</properties>
</persistence-unit>
</persistence>
모든 EntityManagerFactory 는 적절한 정리가 필요한 중요한 자원을 확보 할 수 있습니다. 귀하의 예에서는 연결을 관리하는 스레드 일 것입니다. 팩토리가 닫혀 있는지 확인해야합니다. 일반적으로 프레임 워크는 적절한 종료를 처리하지만 리소스를 직접 관리하는 경우 다음 블록을 finally 블록 으로 묶어야합니다 .
EntityManagerFactory factory = Persistence.createEntityManagerFactory("pu");
try {
// rest of your application here
}
finally {
factory.close();
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다