[
https://issues.apache.org/jira/browse/TRINIDAD-1062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594621#action_12594621
]
Andrew Robinson commented on TRINIDAD-1062:
-------------------------------------------
I am looking into this, and I do not see why this is needed
The JDK implementation of resolveClass uses the current class loader:
return VMObjectInputStream.currentClassLoader();
See http://docjar.com/html/api/java/io/ObjectInputStream.java.html line 779
In http://docjar.com/docs/api/java/io/VMObjectInputStream.html you will see
this is defined as:
Returns the first user defined class loader on the call stack, or the context
class loader of the current thread, when no non-null class loader was found.
As you can see, the code should already be using the correct class loader. Is
it possible that this is an OC4J bug? Does it reproduce in Tomcat or Jetty or
only OC4J?
> ClassLoader exception when af:forEach is used with CLIENT_STATE_METHOD "all"
> ----------------------------------------------------------------------------
>
> Key: TRINIDAD-1062
> URL: https://issues.apache.org/jira/browse/TRINIDAD-1062
> Project: MyFaces Trinidad
> Issue Type: Bug
> Affects Versions: 1.2.7-core
> Reporter: Max Starets
> Fix For: 1.2.8-core
>
> Attachments: ObjectInputStream.diff
>
>
> To reproduce, set CLIENT_STATE_METHOD to "all", and run a page with
> af:forEach that performs postback.
> The following exception will be thrown:
> 2008-04-21 15:29:37.117
> oracle.classloader.util.AnnotatedClassNotFoundException:
> Missing class: javax.servlet.jsp.jstl.core.IndexedValueExpression
> Dependent class: java.io.ObjectInputStream
> Loader: jre.bootstrap:1.5.0_12
> Code-Source: unknown
> Configuration: jre bootstrap
> This load was initiated at oc4j:11.1.1.0.0 using the Class.forName() method.
> The missing class is available from the following locations:
> 1. Code-Source:
> /C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/lib/java/shared/oracle.jstl/1.2/jstl
> -api-1_2.jar (from <code-source> (ignore manifest Class-Path) in
> /C:/jdevsystem/system11.1.1.0.22.49.41/o.j2ee/embedded-oc4j/config/server.xml)
> This code-source is available in loader oracle.jstl:1.2. This
> shared-library can be made visible to the "oc4j" loader by modifying the boot
> descriptor.
> at oracle.classloader.PolicyClassLoader.handleClassNotFound
> (PolicyClassLoader.java:2176)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by [EMAIL PROTECTED]
> at oracle.classloader.PolicyClassLoader.internalLoadClass
> (PolicyClassLoader.java:1729)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by [EMAIL PROTECTED]
> at oracle.classloader.PolicyClassLoader.loadClass
> (PolicyClassLoader.java:1685)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by [EMAIL PROTECTED]
> at oracle.classloader.PolicyClassLoader.loadClass
> (PolicyClassLoader.java:1670)
> [/C:/JDEVADF_MAIN_GENERIC_080404.1239.4941/j2ee/home/lib/pcl.jar (from system
> property java.class.path), by [EMAIL PROTECTED]
> at java.lang.ClassLoader.loadClassInternal (ClassLoader.java:319) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> at java.lang.Class.forName0 (Native method) [unknown, by unknown]
> at java.lang.Class.forName (Class.java:242) [jre bootstrap, by
> jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.resolveClass (ObjectInputStream.java:585) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readNonProxyDesc (ObjectInputStream.java:1544)
> [jre bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readClassDesc (ObjectInputStream.java:1466)
> [jre bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readOrdinaryObject
> (ObjectInputStream.java:1699) [jre bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1305) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> at java.io.ObjectInputStream.readObject (ObjectInputStream.java:348) [jre
> bootstrap, by jre.bootstrap:1.5.0_12]
> The issue is that ObjectInputStream created by CoreResponseStateManager uses
> default class loader instead of context class loader.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.