On Aug 29, 2007, at 7:02 AM, Paolo Denti wrote:

Ok Kevan, found. browsing through the sources i see the the ProxyManager interface has changed. the signature of the createProxy methods is the following
public Object createProxy(AbstractName target, ClassLoader loader);
public Object createProxy(AbstractName target, Class type);
now i do not know exactly how to modify the GeronimoTransactionManagerLookup in order to use new ProxyManager.

Doh... Sorry. Was right in front of my face... Perhaps we should start meeting for a second cup of coffee? ;-)

What a pain all this reflection, is... The following compiles. I haven't tested. Dario or Viet, could you give it a spin?

Note that the this doesn't contain a package name. You'll need to add one... I'd rather the example not use the org.hibernate namespace...

javac CLASSPATH setup:
export CLASSPATH=geronimo-tomcat6-jee5-2.0.1/lib/geronimo- kernel-2.0.1.jar:geronimo-tomcat6-jee5-2.0.1/repository/org/apache/ geronimo/specs/geronimo-jta_1.1_spec/1.1/geronimo- jta_1.1_spec-1.1.jar:hibernate-3.2/build/hibernate3.jar

New source:

import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.KernelRegistry;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.AbstractNameQuery;

import org.hibernate.HibernateException;
import org.hibernate.transaction.TransactionManagerLookup;

import java.util.Properties;
import java.util.Set;
import javax.transaction.TransactionManager;

public class GeronimoTransactionManagerLookup
    implements TransactionManagerLookup
{

public static final String UserTransactionName = "java:comp/ UserTransaction";

public TransactionManager getTransactionManager(Properties props) throws HibernateException {
            Kernel kernel = KernelRegistry.getSingleKernel();
AbstractNameQuery tmQuery = new AbstractNameQuery(null, null, TransactionManager.class.getName());
            Set tmSet = kernel.listGBeans(tmQuery);
            if (tmSet.size() != 1) {
throw new HibernateException("Geronimo TransactionManager Lookup Failed. Too many GBean instances");
            }
            return (TransactionManager)tmSet.toArray()[0];
    }

    public String getUserTransactionName() {
        return UserTransactionName;
    }
}


--kevan



Paolo Denti wrote:
the problem is

java.lang.NoSuchMethodException: org.apache.geronimo.kernel.proxy.ProxyManager.createProxy (javax.management.ObjectName, java.lang.Class)

?? are the online javadocs correct for the 2.0.1 version ?

Paolo Denti wrote:
no, never mind ... too many tries and i wrote this "nonsense" stuff ... the clzArray is the parameter list of the createProxyMethod ... it is correct. anyway it fails on the proxyManagerClass.getMethod("createProxy", clzArray) call.

Paolo Denti wrote:
Kevan, i tried and following the execution, the problem is in the proxyManagerClass.getMethod("createProxy", clzArray);
the getMethod call fails.

But looking at the javadoc i see that the signature of the ProxyManager createProxy method is
 Object createProxy(javax.management.ObjectName, Class)
but we are inovoking proxyManagerClass.getMethod("createProxy", clzArray) where clzArray is a Class[] as if the signature were
 Object createProxy(javax.management.ObjectName, Class[])




Kevan Miller wrote:

On Aug 28, 2007, at 11:34 AM, Paolo Denti wrote:

ok, thanks. therefore the problem "should" lie in how the transactionManager is looked up, that is the method getTransactionManager of the GeronimoTransactionManagerLookup class.

Right. Paolo, at a minimum, I think you need to update your GeronimoTransactionManagerLookup class to contain the following setting of TransactionMgrGBeanName:

public static final String TransactionMgrGBeanName="geronimo:J2EEServer=geronimo,ServiceModul e=org.apache.geronimo.configs/transaction/2.0.1/ car,j2eeType=TransactionManager,name=TransactionManager";

I don't have a working hibernate environment, at the moment. If you could try this new setting, it would be great...

--kevan


Reply via email to