[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2281?page=c...
]
Rodrigo Cesar Gevaerd de Faria commented on HHH-2281:
-----------------------------------------------------
I got exactly the same stack trace in the following enviroment with Hibernate 3.2.3ga:
- Tomcat with webapp-A and webapp-B.
- webapp-A contains hibernate libraries, webapp-B don't.
- webapp-A dispatchs to a jsp in webapp-B, including in the request an attribute that
implements an interface available in the shared class loader. Webapp-B calls that
interface instance webapp-A made available. This operation in webapp-A calls
session.connect(), and the error occurs.
Setting the current thread context class loader to null before calling the
Session.connection(), and putting it back later, served as a workaround for me.
CLONE -Calling Session.connection() generates
java.lang.IllegalArgumentException: interface org.hibernate.jdbc.ConnectionWrapper is not
visible from class loader
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: HHH-2281
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2281
Project: Hibernate3
Issue Type: Bug
Affects Versions: 3.2.1
Environment: Hibernate checked out from trunk; revision 10717
Reporter: Sergey Polzunov
Calling Session.connection() always generates an exception. Here is the stacktrace I get
from the attached test case:
Exception in thread "main" java.lang.IllegalArgumentException: interface
org.hibernate.jdbc.ConnectionWrapper is not visible from class loader
at java.lang.reflect.Proxy.getProxyClass(Proxy.java:353)
at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:581)
at
org.hibernate.jdbc.BorrowedConnectionProxy.generateProxy(BorrowedConnectionProxy.java:56)
at org.hibernate.jdbc.ConnectionManager.borrowConnection(ConnectionManager.java:163)
at org.hibernate.jdbc.JDBCContext.borrowConnection(JDBCContext.java:111)
at org.hibernate.impl.SessionImpl.connection(SessionImpl.java:359)
at TestSession.main(TestSession.java:16)
Changing the Connection.class.getClassLoader() to
BorrowedConnectionProxy.class.getClassLoader() on line 57 in the generateProxy() method
solves the problem. I am not very familiar with class loaders so I don't know if this
is likeley to cause other problems elsewhere. Removing the ConnectionWrapper.class from
the PROXY_INTERFACES array in the org.hibernate.jdbc.BorrowedConnectionProxy also solves
the problem, but I guess it was added for a reason.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira