The following comment has been added to this issue:
Author: Jimmi Dyson
Created: Wed, 15 Sep 2004 3:01 AM
Body:
Good stuff. it certainly is a defect of mine to only be able to use the
interceptor on subinterfaces of Session, but I couldn't think of another way to
get hold of the session to be able to begin/commit/rollback the transaction.
Using the ThreadLocalStorage is something I didn't think of.
I think that you should use the SessionFactoryProxy - this enables you to have
multiple SessionFactories and hence produce connections to multiple databases.
You can specify a different hibernate config file for each SessionFactory
rather than using the default name as you do.
Another problem is that by using the ThreadLocalStorage with a single named
key, you're limiting the thread to one database connection per thread. By using
a threaded model, as I do in the SessionProxy, you're not. But that creates
problems in getting the Session in TransactionManagerImpl, as it would mean
that the SessionSource wasn't a singleton anymore.
---------------------------------------------------------------------
View this comment:
http://issues.apache.org/jira/browse/HIVEMIND-54?page=comments#action_53106
---------------------------------------------------------------------
View the issue:
http://issues.apache.org/jira/browse/HIVEMIND-54
Here is an overview of the issue:
---------------------------------------------------------------------
Key: HIVEMIND-54
Summary: Request for built-in support for Hibernate in HiveMind lib
Type: New Feature
Status: Open
Priority: Major
Project: HiveMind
Components:
documentation
examples
hivebuild
Assignee: Howard M. Lewis Ship
Reporter: Yuxiang Bu
Created: Mon, 13 Sep 2004 2:24 AM
Updated: Wed, 15 Sep 2004 3:01 AM
Description:
Request for adding build-in support for Hibernate Session and Transaction
management in HiveMind lib.
Since Hibernate is so popular now, I believe it will become a hot request.
At first I try to develop an HibernateInterceptorFactory service using
javassist.
But I found javassist cannot support "finally" yet. And the target code like
this:
boolean isTransactionBegunInThisMethod = false;
try {
isTransactionBegunInThisMethod = tm.beginTransaction();
Object result = _inner....
if (isTransactionBegunInThisMethod)
tm.commitTransaction();
return result;
} finally {
if (isTransactionBegunInThisMethod)
tm.rollbackTransaction();
}
And I cannot develop similar codes in javassist.
Then I developed an Interceptor with JDK proxy.
However, the interceptor cannot be used after HiveMind LoggingInterceptor.
The Registry successfully applies my HibernateInterceptor to service but fail
to apply the Logging Interceptor.
org.apache.hivemind.ApplicationRuntimeException: Unable to construct service
doconline.Adder: Unable to lookup $Proxy0: $Proxy0
at
org.apache.hivemind.impl.servicemodel.AbstractServiceModelImpl.constructNewServiceImplementation(AbstractServiceModelImpl.java:156)
......
Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to lookup
$Proxy0: $Proxy0
at
org.apache.hivemind.service.impl.CtClassSource.getCtClass(CtClassSource.java:60)
at
org.apache.hivemind.service.impl.ClassFabImpl.addField(ClassFabImpl.java:71)
at
org.apache.hivemind.service.impl.LoggingInterceptorFactory.createInfrastructure(LoggingInterceptorFactory.java:236)
......
Caused by: javassist.NotFoundException: $Proxy0
at javassist.ClassPoolTail.openClassfile(ClassPoolTail.java:300)
at javassist.ClassPoolTail.checkClassName(ClassPoolTail.java:177)
at javassist.ClassPool.checkClassName(ClassPool.java:709)
at javassist.ClassPool.get0(ClassPool.java:572)
at javassist.ClassPool.get(ClassPool.java:561)
at
org.apache.hivemind.service.impl.CtClassSource.getCtClass(CtClassSource.java:56)
... 48 more
The problem seems occurs when javassist want to find the class file in
classpath but cannot find it( Of course it cannot ).
If I put Transaction Interceptor before the Logging Interceptor, all works well.
---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]