You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by Sebastien ARBOGAST <se...@gmail.com> on 2010/05/06 15:48:57 UTC

AbstractMethodException with Hibernate 3.4.0.GA

I'm using OpenEJB in combination with Hibernate 3.4.0.GA to unit test my
EJB's.
Ever since I upgraded to this version of Hibernate, when I run the following
code:

public T findByExample(final T exampleInstance) {
        Session session = getHibernateSession();
        Criteria crit = session.createCriteria(entityClass);
        crit.add(Example.create(exampleInstance));
        return (T) crit.uniqueResult();
    }

    private Session getHibernateSession() {
        if (factory instanceof EntityManagerFactoryImpl) {
            return ((EntityManagerFactoryImpl)
factory).getSessionFactory().getCurrentSession();
        } else if (entityManager.getDelegate() instanceof Session) {
            return (Session) entityManager.getDelegate();
        } else throw new RuntimeException("Cannot retrieve Hibernate
session");
    }

I get the following exception:

javax.ejb.EJBTransactionRolledbackException: The transaction has been marked
rollback only because the bean encountered a non-application exception
:java.lang.AbstractMethodError :
org.apache.openejb.hibernate.TransactionManagerLookup.getTransactionIdentifier(Ljavax/transaction/Transaction;)Ljava/lang/Object;
    at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:340)
    at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:286)
    at $Proxy47.findAllByExample(Unknown Source)
    at
org.ellixxir.lxr.xeos.business.impl.EconomicOperatorServiceBean.retrieve(EconomicOperatorServiceBean.java:172)
    ... 43 more
Caused by: java.lang.AbstractMethodError:
org.apache.openejb.hibernate.TransactionManagerLookup.getTransactionIdentifier(Ljavax/transaction/Transaction;)Ljava/lang/Object;
    at
org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:122)
    at
org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)
    at
org.ellixxir.lxr.xeos.dao.hibernate.HibernateBaseDaoImpl.getHibernateSession(HibernateBaseDaoImpl.java:54)
    at
org.ellixxir.lxr.xeos.dao.hibernate.HibernateBaseDaoImpl.findAllByExample(HibernateBaseDaoImpl.java:62)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:158)
    at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:141)
    at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:122)
    at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:221)
    at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:174)
    at
org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
    at
org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
    at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:281)

Is it a known bug? Any idea what this means?

Sébastien Arbogast

Re: AbstractMethodException with Hibernate 3.4.0.GA

Posted by Jean-Louis MONTEIRO <je...@atosorigin.com>.
Hi Sebastien,

The #getTransactionIdentifier(Transaction tx) is a new method of the
Hibernate API.
Here is the javadoc 
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/transaction/TransactionManagerLookup.html#getTransactionIdentifier(javax.transaction.Transaction)
http://docs.jboss.org/hibernate/stable/core/api/org/hibernate/transaction/TransactionManagerLookup.html#getTransactionIdentifier(javax.transaction.Transaction) 

I pushed a JIRA ( https://issues.apache.org/jira/browse/OPENEJB-1276
https://issues.apache.org/jira/browse/OPENEJB-1276 ) and i gonna try to fix
it today.

Jean-Louis



Sebastien ARBOGAST wrote:
> 
> I'm using OpenEJB in combination with Hibernate 3.4.0.GA to unit test my
> EJB's.
> Ever since I upgraded to this version of Hibernate, when I run the
> following
> code:
> 
> public T findByExample(final T exampleInstance) {
>         Session session = getHibernateSession();
>         Criteria crit = session.createCriteria(entityClass);
>         crit.add(Example.create(exampleInstance));
>         return (T) crit.uniqueResult();
>     }
> 
>     private Session getHibernateSession() {
>         if (factory instanceof EntityManagerFactoryImpl) {
>             return ((EntityManagerFactoryImpl)
> factory).getSessionFactory().getCurrentSession();
>         } else if (entityManager.getDelegate() instanceof Session) {
>             return (Session) entityManager.getDelegate();
>         } else throw new RuntimeException("Cannot retrieve Hibernate
> session");
>     }
> 
> I get the following exception:
> 
> javax.ejb.EJBTransactionRolledbackException: The transaction has been
> marked
> rollback only because the bean encountered a non-application exception
> :java.lang.AbstractMethodError :
> org.apache.openejb.hibernate.TransactionManagerLookup.getTransactionIdentifier(Ljavax/transaction/Transaction;)Ljava/lang/Object;
>     at
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:340)
>     at
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:286)
>     at $Proxy47.findAllByExample(Unknown Source)
>     at
> org.ellixxir.lxr.xeos.business.impl.EconomicOperatorServiceBean.retrieve(EconomicOperatorServiceBean.java:172)
>     ... 43 more
> Caused by: java.lang.AbstractMethodError:
> org.apache.openejb.hibernate.TransactionManagerLookup.getTransactionIdentifier(Ljavax/transaction/Transaction;)Ljava/lang/Object;
>     at
> org.hibernate.context.JTASessionContext.currentSession(JTASessionContext.java:122)
>     at
> org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:574)
>     at
> org.ellixxir.lxr.xeos.dao.hibernate.HibernateBaseDaoImpl.getHibernateSession(HibernateBaseDaoImpl.java:54)
>     at
> org.ellixxir.lxr.xeos.dao.hibernate.HibernateBaseDaoImpl.findAllByExample(HibernateBaseDaoImpl.java:62)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:158)
>     at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:141)
>     at
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:122)
>     at
> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:221)
>     at
> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:174)
>     at
> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:217)
>     at
> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:77)
>     at
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:281)
> 
> Is it a known bug? Any idea what this means?
> 
> Sébastien Arbogast
> 
> 

-- 
View this message in context: http://openejb.979440.n4.nabble.com/AbstractMethodException-with-Hibernate-3-4-0-GA-tp2132656p2195697.html
Sent from the OpenEJB User mailing list archive at Nabble.com.