2011-03-30 5 views
2

eclipselink를 스윙 응용 프로그램 내에서 사용하여 작업 그룹 환경에서 직접 데이터베이스 서버에 연결하는 방법 현재이 사용하고 있지만 일부 응용 프로그램 (20-30 트랜잭션 후) 내 응용 프로그램이 고정되어 있습니다. 내의 persistence.xml는 eclipselink jpa 2.0 with j2se 스윙 응용 프로그램 동결

SwingWorker-pool-1-thread-10" daemon prio=6 tid=0x03143400 nid=0xbec in Object.wait() [0x052ff000] 
    java.lang.Thread.State: WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    at org.eclipse.persistence.sessions.server.ConnectionPool.acquireConnection(ConnectionPool.java:102) 
    - locked <0x27d6d7e0> (a org.eclipse.persistence.sessions.server.ConnectionPool) 
    at org.eclipse.persistence.sessions.server.ServerSession.allocateReadConnection(ServerSession.java:477) 
    at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:525) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:205) 
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191) 
..................... 
또한

AWT 스레드가 심지어 몸이 좀 도와주세요

"AWT-EventQueue-0" prio=6 tid=0x02c6d400 nid=0xfcc in Object.wait() [0x033ae000] 
    java.lang.Thread.State: WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    at org.eclipse.persistence.sessions.server.ConnectionPool.acquireConnection(ConnectionPool.java:102) 

상태

을 wainting을했다 ..

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://192.0.0.1:3306/myhotel"/> 
     <property name="javax.persistence.jdbc.password" value="123"/> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> 
     <property name="javax.persistence.jdbc.user" value="root"/> 

내가 스레드를 통해 보여줍니다 덤프 갔다,

입니다! !! !!

+1

수"

또는 풀의 크기를 증가 (2.2) " 당신은 당신의 퍼시스턴스 관련 코드입니까? 획득 한 연결을 재평가하지 않는 것 같습니다. –

+0

EntityManagerFactory emf = Persistence.createEntityManagerFactory ("dbpers"); EntityManager em = emf.createEntityManager(); public void save() { em.getTransaction(). begin(); em.persist (em); em.getTransaction(). commit(); } – jawath

+0

클래스 수준의 엔터티 관리자를 사용합니다. 저장을 커밋 한 후 연결을 해제하는 방법과 새 엔티티 관리자를 여는 방법 EntityManager em = emf.createEntityManager(); – jawath

답변

5

기본 연결 풀 크기는 32 연결입니다. 32 개 이상의 활성 트랜잭션이있는 경우, 다음 요청은 연결이 해제 될 때까지 대기합니다. EntityManager에서 close()를 호출하고 거래에서 commit() 또는 rollback()을 사용하고 있습니까?

전체 persistence.xml을 포함합니다.

풀 크기를 초과하는 경우는 예외를 트리거하는 연결 풀 대기 시간을 구성 할 수

"eclipselink.jdbc.connections.wait - 타임 아웃"또는 "eclipselink.connection-pool.default.wait eclipselink.jdbc.connections.max "또는"(2.2) - eclipselink.connection pool.default.max "

관련 문제