Hallo Experten,
die Anwendung läuft auf einem JBoss. Mittels Web-Applikation auf einem Tomcat wird auf die JBoss-Anwendung remote zugegriffen.
Solange ich nichts aus dem CommonsJAR lade, funktionierts, d.h. die Remote-Beans werden anstandslos geladen, wenn deren Methoden nichts aus dem CommonsJAR benutzen. Sonst kommt:
Wie der Fehlermeldung zu entnehmen ist, kommt der Fehler vom JBoss.
Remote-Loader:
jboss-app.xml:
JBoss 4.2.3 - offen deploytes EAR:
Tomcat - offen deploytes WAR:
Woran könnte das liegen?
die Anwendung läuft auf einem JBoss. Mittels Web-Applikation auf einem Tomcat wird auf die JBoss-Anwendung remote zugegriffen.
Solange ich nichts aus dem CommonsJAR lade, funktionierts, d.h. die Remote-Beans werden anstandslos geladen, wenn deren Methoden nichts aus dem CommonsJAR benutzen. Sonst kommt:
Code:
...
Caused by: java.lang.ClassNotFoundException: [Klasse aus dem CommonsJAR]
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 java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604)
at org.jboss.invocation.MarshalledValueInputStream.resolveClass(MarshalledValueInputStream.java:109)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1624)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at org.jboss.invocation.MarshalledValue.get(MarshalledValue.java:91)
at org.jboss.invocation.unified.interfaces.UnifiedInvokerProxy.invoke(UnifiedInvokerProxy.java:196)
at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
Remote-Loader:
Code:
privatestatic Object lookupHome(java.util.Hashtable environment, String jndiName, Class narrowTo) throws javax.naming.NamingException {
// Obtain initial context
Context initialContext = new javax.naming.InitialContext(environment);
try {
Object objRef = initialContext.lookup(jndiName);
// only narrow if necessary
if (java.rmi.Remote.class.isAssignableFrom(narrowTo))
return javax.rmi.PortableRemoteObject.narrow(objRef, narrowTo);
else
return objRef;
} finally {
initialContext.close();
}
}
jboss-app.xml:
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 1.4//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd">
<jboss-app>
<loader-repository>
[Package]:loader=[Name ROOT-Folder s.u.]
<loader-repository-config>
java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</jboss-app>
JBoss 4.2.3 - offen deploytes EAR:
HTML:
ROOT-Folder
-JAR mit EJB2-Bean
ROOT-Folder/lib
-JAR mit EJB2-Remote-Interface und Home
-CommonsJAR
Tomcat - offen deploytes WAR:
HTML:
ROOT-Folder/WEB-INF/lib
-JAR dieses Web-Clients
-JAR mit EJB2-Remote-Interface und Home
-CommonsJAR
Woran könnte das liegen?