myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Robinson (JIRA)" <...@myfaces.apache.org>
Subject [jira] Commented: (TRINIDAD-1062) ClassLoader exception when af:forEach is used with CLIENT_STATE_METHOD "all"
Date Tue, 06 May 2008 16:16:55 GMT

    [ 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 sun.misc.Launcher$AppClassLoader@20120943]
> 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 sun.misc.Launcher$AppClassLoader@20120943]
> 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 sun.misc.Launcher$AppClassLoader@20120943]
> 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 sun.misc.Launcher$AppClassLoader@20120943]
> 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.


Mime
View raw message