Hi Jon, So far this change seems to be working fine. Looking forward to your eyes on the tck:-)
thanks david jencks On Aug 5, 2010, at 4:39 PM, Jonathan Gallimore wrote: > Hi David, > > I did suspect there would an issue with which classloader the proxy got > attached to at some point when I wrote this :-). I think your change is > fine, I can't see any problems with it. Does fix the TCK now? If not, I'm > happy to try and help out more. The necessary paperwork is in so I should be > able to start having a go with the TCK. > > Jon > > On Thu, Aug 5, 2010 at 6:39 AM, David Jencks <[email protected]> wrote: > >> It would be really really great to have more eyes on the tck. >> >> This particular problem seems to be due to an interaction between geronimo >> and openejb. In geronimo the classloader that the proxy is attached to is a >> wrapper for the osgi bundle and doesn't actually load any classes itself. >> So once the proxy is attached to that classloader it becomes completely >> inaccessible. >> >> I'm changing the code involved to use the original proxied class's >> classloader and protection domain. So far I don't see any problems in >> geronimo or openejb. >> >> Class<?> cls = (Class<?>) unsafe.defineClass(proxyName, >> proxyBytes, 0, proxyBytes.length, clsToProxy.getClassLoader(), >> clsToProxy.getProtectionDomain()); >> >> I've opened https://issues.apache.org/jira/browse/OPENEJB-1321 to provide >> a hook for any problems this may cause. I'd really appreciate some review >> and informed criticism. >> >> many thanks >> david jencks >> >> On Aug 4, 2010, at 12:22 PM, David Blevins wrote: >> >>> Thinking it might be good to get more of us setup in the TCK. Currently, >> Geronimo is the only one with a TCK setup, but it is better than nothing. >>> >>> With all the EJB 3.1 work there of course comes a ton of TCK work related >> to getting that functionality to be spec compliant in the pass/fail sense. >> As Geronimo is the only one with a TCK setup it translates to Geronimo >> getting stuck having to finish the EJB 3.1 development work. Seems to make >> the most sense to get the people doing EJB 3.1 feature involved in ensuring >> it passes the TCK. >>> >>> Any committer can request Java EE 6 TCK access via singing faxing or >> emailing ([email protected]) this NDA: >>> >>> http://www.apache.org/jcp/ApacheNDA.pdf >>> >>> >>> Anyway, here is the issue that prompted me to send this note. Related to >> @LocalBean support. David J. poking at it currently, but any help is >> welcome. There will definitely be many more like this. Having the most >> people with access to the TCK as possible is probably a very good thing. >>> >>> >>> Caused by: java.lang.LinkageError: loader (instance of >> org/apache/xbean/osgi/bundle/util/BundleClassLoader): attempted duplicate >> class definition for name: "com/moon/sometest/SomeBean$LocalBeanProxy" >>> at sun.misc.Unsafe.defineClass(Native Method) >>> at >> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:65) >>> at >> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:48) >>> at >> org.apache.openejb.util.proxy.LocalBeanProxyFactory.newProxyInstance(LocalBeanProxyFactory.java:27) >>> at >> org.apache.openejb.core.ivm.EjbHomeProxyHandler.createProxy(EjbHomeProxyHandler.java:139) >>> at >> org.apache.openejb.core.ivm.EjbHomeProxyHandler.create(EjbHomeProxyHandler.java:286) >>> at >> org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:169) >>> at >> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:282) >>> at $Proxy52.create(Unknown Source) >>> at >> org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference.getObject(BusinessLocalBeanReference.java:34) >>> at >> org.apache.openejb.core.ivm.naming.Reference.getContent(Reference.java:40) >>> at >> org.apache.xbean.naming.context.ContextUtil.resolve(ContextUtil.java:61) >>> at >> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:116) >>> at >> org.apache.xbean.naming.context.AbstractContext.lookup(AbstractContext.java:605) >>> at >> org.apache.geronimo.openejb.DeepBindableContext$ContextWrapper.lookup(DeepBindableContext.java:97) >>> at >> org.apache.openejb.core.ivm.naming.IntraVmJndiReference.getObject(IntraVmJndiReference.java:39) >>> at >> org.apache.openejb.core.ivm.naming.Reference.getContent(Reference.java:40) >>> >>> >>> -David >>> >> >>
