2012-01-09 3 views
6

Tôi gặp phải lỗi này khi chạy các ứng dụng của mình. Nó xảy ra đôi khi vì vậy tôi không biết chính xác những gì trong mã của tôi lỗi này bắt nguồn. Ngoại lệ không cho biết bất kỳ chi tiết rõ ràng nào.Nguyên nhân của lỗi này java.lang.IllegalStateException: Cố gắng trả về một kết nối không xác định2 là gì?

Một đoạn ngăn xếp.

java.lang.IllegalStateException: Trying to return an unknown connection2! [email protected]1 
    at org.jboss.resource.connectionmanager.CachedConnectionManager.unregisterConnection(CachedConnectionManager.java:330) 
    at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionClosed(TxConnectionManager.java:720) 
    at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle(BaseWrapperManagedConnection.java:362) 
    at org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnection.java:155) 
    at org.hibernate.connection.DatasourceConnectionProvider.closeConnection(DatasourceConnectionProvider.java:97) 

Có ai đã mã hóa lỗi này trước khi vui lòng trợ giúp không. Im sử dụng jboss 6, đường nối 2, jsf 2 và richfaces 3.

Trả lời

8

Điều này được trả lời trong JBoss wiki. Dưới đây là trích dẫn về mức độ liên quan:

Nhiều kết nối mở và đóng "ngẫu nhiên" (Hibernate2/OBJ) kết nối mở và đóng "ngẫu nhiên". Theo như JBoss là có liên quan nó trông giống như một ejb phân bổ kết nối và một đóng nó. Kết nối kiểm tra chặt chẽ không hiểu hành vi này. Nó hy vọng cùng một ejb phân bổ kết nối để đóng nó.

Nếu bạn sử dụng mẫu như vậy hoặc khung như vậy, bạn có thể tắt thông báo này (xem bên dưới) nhưng bạn đang tự phát hiện khi phát hiện rò rỉ kết nối. Từ 3.2.6 có một "listInUseConnections()" trên CachedConnectionManager.

Tuy nhiên, đây là known issue với một số ngữ nghĩa phân giới giao dịch. Đây không thực sự là một sử dụng JBoss, nhiều hơn rằng các mẫu ThreadLocal bỏ qua ngữ nghĩa J2EE.

Nếu bạn gặp phải sự cố, việc xóa CachedConnectionInterceptor khỏi ngăn chặn chặn trong conf/standardjboss.xml sẽ giải quyết thông báo giả. Đặc biệt với Hibernate2, đây là an toàn vì bạn có thể tin tưởng ngủ đông ít nhất để đóng các kết nối đúng cách cung cấp cho bạn giao dịch người dùng cuối chính xác.

Để xóa tệp CachedConnectionInterceptor, hãy chỉnh sửa tệp conf/standardjboss.xml và xóa tất cả các tham chiếu đến trình chặn. Những điều này sẽ giống như thế:

<container-configuration> 
    <container-name>Standard Stateless SessionBean</container-name> 
    <call-logging>false</call-logging> 
    <invoker-proxy-binding-name>stateless-http-invoker</invoker-proxy-binding-name> 
    <container-interceptors> 
    ... 
    <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor> 

Hibernate3 cung cấp other mechanisms để quản lý phiên (và Connections) và do đó nó rất dễ dàng để tránh vấn đề này.

+0

Cảm ơn bạn rất nhiều. Điều này rất hữu ích. :) –

+0

Bạn được chào đón. – BalusC