Ok I looked at these issues. Seems to be tricky...
Here is the stack trace I get :
java.lang.reflect.InvocationTargetException
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.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: java.lang.NoClassDefFoundError:
net/atos/xastory/csm/core/product/Currency
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
at java.lang.Class.getDeclaredMethods(Class.java:1791)
at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:164)
at org.apache.openejb.finder.ClassFinder.<init>(ClassFinder.java:146)
at
org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:786)
at
org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy(AnnotationDeployer.java:549)
at
org.apache.openejb.config.AnnotationDeployer.deploy(AnnotationDeployer.java:184)
at
org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:243)
at
org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:597)
at
org.apache.openejb.tomcat.catalina.TomcatWebAppBuilder.start(TomcatWebAppBuilder.java:245)
at
org.apache.openejb.tomcat.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:58)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4148)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at
org.apache.catalina.core.StandardService.start(StandardService.java:448)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
... 6 more
Caused by: java.lang.ClassNotFoundException:
net.atos.xastory.csm.core.product.Currency
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at
org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:102)
at
org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.java:50)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 27 more
Tomcat StandardClassLoader does not find the Currency type.
To be honest, I'm a bit lost with classloaders. TempClassLoader is in charge
of loading sessions beans and entities while Tomcat class loader loads all
what is in openejb/lib ? Is that correct ?
Still investigating...
Regards,
Jean-Sébastien Scrève.
David Blevins wrote:
>
> Also looking at this info:
> https://issues.apache.org/jira/browse/OPENJPA-646
>
> Jean-Sébastien, if you have a stacktrace of the ClassNotFoundException
> that'd be great.
>
>
> -David
>
>
> On May 27, 2009, at 4:58 PM, David Blevins wrote:
>
>> Moving this to the dev list.
>>
>> Still looking over the info but the svn revision for the isEnum
>> method pulls up this info:
>>
>> http://svn.apache.org/viewvc?view=rev&revision=720223
>> http://issues.apache.org/jira/browse/OPENEJB-951
>>
>> -David
>>
>>
>> On May 27, 2009, at 9:56 AM, Jean-Sébastien Scrève wrote:
>>
>>>
>>> Hi,
>>>
>>> I have a pretty annoying problem with Enum types.
>>>
>>> I have the following session bean implementation :
>>>
>>> @WebService
>>> @Stateless (name =
>>> "net.atos.xastory.csm.contract.CatalogueStockManagementService")
>>> @Local (CatalogueStockManagementService.class)
>>> public class CatalogueStockManagementServiceImpl implements
>>> net.atos.xastory.csm.contract.CatalogueStockManagementService {
>>>
>>> public Price getPrice() {
>>> return new Price();
>>> }
>>>
>>> private Currency getCurrency() {
>>> return net.atos.xastory.csm.core.product.Currency.EUR;
>>> }
>>> }
>>>
>>> Price is a POJO. Currency is an Enum type.
>>> I have a Class Not Found exception on the Currency type at OpenEJB
>>> startup.
>>> (OpenEJB + Tomcat).
>>>
>>> I dug into the problem and I think I found the problem.
>>>
>>> In TempClassLoader I see the following change :
>>>
>>> // Annotation classes must be loaded by the normal classloader
>>> // So must Enum classes to prevent problems with the sun jdk.
>>> if (isAnnotationClass(bytes) || isEnum(bytes)) {
>>> return Class.forName(name, resolve,
>>> getClass().getClassLoader());
>>> }
>>>
>>> isEnum was added recently and causes my problem. Was is the problem
>>> we want
>>> to avoid with Jdk ?
>>> Shouldn't we try loading from TempClassLoader first then do a
>>> Class.forName() ?
>>>
>>> I can fill up a JIRA if want to.
>>>
>>> Regards,
>>>
>>> Jean-Sébastien Scrève.
>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Enum-class-loading-in-a-session-bean-tp23746554p23746554.html
>>> Sent from the OpenEJB User mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>
>
>
--
View this message in context:
http://www.nabble.com/Re%3A-Enum-class-loading-in-a-session-bean-tp23752987p23757608.html
Sent from the OpenEJB Dev mailing list archive at Nabble.com.