[
https://issues.apache.org/jira/browse/OWB-468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rohit Dilip Kelapure updated OWB-468:
-------------------------------------
Description:
In tiered classloading environments, lifecycle start --> BeansDeployer deploy
--> AnnotatedElementFactory.newAnnotatedType(Class<X>) sometimes throws
ClassNotFoundException and NoClassDefFoundError's from the following methods
Field[] fields = SecurityUtil.doPrivilegedGetDeclaredFields(annotatedClass);
Method[] methods =
SecurityUtil.doPrivilegedGetDeclaredMethods(annotatedClass);
These exceptions and errors are typically due to incorrect or erroneous
application packaging of classes and dependencies.
I would like OpenWebBeans to continue loading other classes even if one/few
classes cannot be loaded correctly i.e. the assumption is that we don't punish
the majority for the crimes of a few. We define Managed Beans ONLY for classes
that yield a AnnotatedType.
At runtime, if the application exercises any CDI function on the "bad" classes,
then the results are indeterminate.
I will attach a patch that will explain my approach of fixing this.
java.lang.NoClassDefFoundError: com.example svt.acme.AnnuityMgmt
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:260)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
at
com.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:803)
at
com.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:718)
at
com.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:541)
at java.lang.ClassLoader.loadClass(ClassLoader.java:612)
at
com.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:539)
at java.lang.ClassLoader.loadClass(ClassLoader.java:612)
at java.lang.Class.getDeclaredMethodsImpl(Native Method)
at java.lang.Class.getDeclaredMethods(Class.java:674)
at
org.apache.webbeans.util.SecurityUtil$PrivilegedActionForClass.run(SecurityUtil.java:137)
at
java.security.AccessController.doPrivileged(AccessController.java:203)
at
org.apache.webbeans.util.SecurityUtil.doPrivilegedGetDeclaredMethods(SecurityUtil.java:84)
at
org.apache.webbeans.portable.AnnotatedElementFactory.newAnnotatedType(AnnotatedElementFactory.java:102)
was:
Sometimes in tiered classloading environments during lifecycle start -->
BeansDeployer deploy --> AnnotatedElementFactory.newAnnotatedType(Class<X>)
throws ClassNotFoundException and NoClassDefFoundError's from the following
methods
Field[] fields = SecurityUtil.doPrivilegedGetDeclaredFields(annotatedClass);
Method[] methods =
SecurityUtil.doPrivilegedGetDeclaredMethods(annotatedClass);
These exceptions and errors are typically due to incorrect or erroneous
application packaging of classes and dependencies.
I would like OpenWebBeans to continue loading other classes even if one/few
classes cannot be loaded correctly i.e. the assumption is that we don't punish
the majority for the crimes of a few. We define Managed Beans ONLY for classes
that yield a AnnotatedType.
At runtime, if the application exercises any CDI function on the "bad" classes,
then the results are indeterminate.
I will attach a patch that will explain my approach of fixing this.
java.lang.NoClassDefFoundError: com.example svt.acme.AnnuityMgmt
at java.lang.ClassLoader.defineClassImpl(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:260)
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
at
com.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:803)
at
com.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:718)
at
com.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:541)
at java.lang.ClassLoader.loadClass(ClassLoader.java:612)
at
com.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:539)
at java.lang.ClassLoader.loadClass(ClassLoader.java:612)
at java.lang.Class.getDeclaredMethodsImpl(Native Method)
at java.lang.Class.getDeclaredMethods(Class.java:674)
at
org.apache.webbeans.util.SecurityUtil$PrivilegedActionForClass.run(SecurityUtil.java:137)
at
java.security.AccessController.doPrivileged(AccessController.java:203)
at
org.apache.webbeans.util.SecurityUtil.doPrivilegedGetDeclaredMethods(SecurityUtil.java:84)
at
org.apache.webbeans.portable.AnnotatedElementFactory.newAnnotatedType(AnnotatedElementFactory.java:102)
> Make BeansDeployer.deployFromClassPath(ScannerService) resilient to
> ClassNotFoundException and NoClassDefFoundError's
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: OWB-468
> URL: https://issues.apache.org/jira/browse/OWB-468
> Project: OpenWebBeans
> Issue Type: Bug
> Components: Core, Java EE Integration, Lifecycle
> Affects Versions: 1.1.0, 1.0.1, 1.0.0, 1.0.0-alpha-2
> Environment: Windows Server 2003
> Reporter: Rohit Dilip Kelapure
> Assignee: Gurkan Erdogdu
>
> In tiered classloading environments, lifecycle start --> BeansDeployer
> deploy --> AnnotatedElementFactory.newAnnotatedType(Class<X>) sometimes
> throws ClassNotFoundException and NoClassDefFoundError's from the following
> methods
> Field[] fields = SecurityUtil.doPrivilegedGetDeclaredFields(annotatedClass);
> Method[] methods =
> SecurityUtil.doPrivilegedGetDeclaredMethods(annotatedClass);
> These exceptions and errors are typically due to incorrect or erroneous
> application packaging of classes and dependencies.
> I would like OpenWebBeans to continue loading other classes even if one/few
> classes cannot be loaded correctly i.e. the assumption is that we don't
> punish the majority for the crimes of a few. We define Managed Beans ONLY for
> classes that yield a AnnotatedType.
> At runtime, if the application exercises any CDI function on the "bad"
> classes, then the results are indeterminate.
> I will attach a patch that will explain my approach of fixing this.
> java.lang.NoClassDefFoundError: com.example svt.acme.AnnuityMgmt
> at java.lang.ClassLoader.defineClassImpl(Native Method)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:260)
> at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:69)
> at
> com.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:803)
> at
> com.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:718)
> at
> com.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:541)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:612)
> at
> com.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:539)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:612)
> at java.lang.Class.getDeclaredMethodsImpl(Native Method)
> at java.lang.Class.getDeclaredMethods(Class.java:674)
> at
> org.apache.webbeans.util.SecurityUtil$PrivilegedActionForClass.run(SecurityUtil.java:137)
> at
> java.security.AccessController.doPrivileged(AccessController.java:203)
> at
> org.apache.webbeans.util.SecurityUtil.doPrivilegedGetDeclaredMethods(SecurityUtil.java:84)
> at
> org.apache.webbeans.portable.AnnotatedElementFactory.newAnnotatedType(AnnotatedElementFactory.java:102)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.