You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Mirwais Turjalei (JIRA)" <ji...@apache.org> on 2008/07/03 10:14:45 UTC

[jira] Created: (AXIS2-3886) Class loader problem by invoking EJB from Axis2-AAR with Spring

Class loader problem by invoking EJB from Axis2-AAR with Spring
---------------------------------------------------------------

                 Key: AXIS2-3886
                 URL: https://issues.apache.org/jira/browse/AXIS2-3886
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
    Affects Versions: 1.4
         Environment: JDK 1.4, Axis2 1.4, Spring 2.0.8, Weblogic 8.1 SP6
            Reporter: Mirwais Turjalei


As described in http://ws.apache.org/axis2/1_4/spring.html the "ServiceLifeCycle" was configured like this:

ClassLoader classLoader = service.getClassLoader();
ClassPathXmlApplicationContext appCtx = new
ClassPathXmlApplicationContext(new String[] {
"my-application-context.xml"}, false);
appCtx.setClassLoader(classLoader);
appCtx.refresh();

In "my-application-context.xml" we add a Spring-Bean to access the ejb:

<bean id="someService" class="org.springframework.jndi.JndiObjectFactoryB ean" lazy-init="true">
<property name="proxyInterface" value="org.SomeService" />
<property name="lookupOnStartup" value="false" />
<property name="jndiName" value="SomeService"/>
<property name="jndiTemplate">
<bean class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WL InitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7001</prop>
<prop key="java.naming.security.principal">username</prop>
<prop key="java.naming.security.credentials">password</prop>
</props>
</property>
</bean>
</property>
</bean>

By starting weblogic we get this exception:

... bean with name 'someService' defined in class path resource [my-application-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: interface org.SomeService is not visible from class loader
at org.apache.axis2.deployment.repository.util.Archiv eReader.processServiceGroup(ArchiveReader.java:151 )
at org.apache.axis2.deployment.ServiceDeployer.deploy (ServiceDeployer.java:81)
at org.apache.axis2.deployment.repository.util.Deploy mentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDep loy(DeploymentEngine.java:597)
at org.apache.axis2.deployment.repository.util.WSInfo List.update(WSInfoList.java:144)
at org.apache.axis2.deployment.RepositoryListener.upd ate(RepositoryListener.java:330)
at org.apache.axis2.deployment.RepositoryListener.che ckServices(RepositoryListener.java:227)
at org.apache.axis2.deployment.DeploymentEngine.loadS ervices(DeploymentEngine.java:131)
at org.apache.axis2.deployment.WarBasedAxisConfigurat or.loadServices(WarBasedAxisConfigurator.java:284)
at org.apache.axis2.context.ConfigurationContextFacto ry.createConfigurationContext(ConfigurationContext Factory.java:82)
at org.apache.axis2.transport.http.AxisServlet.initCo nfigContext(AxisServlet.java:511)
at org.apache.axis2.transport.http.AxisServlet.init(A xisServlet.java:431)
at weblogic.servlet.internal.ServletStubImpl$ServletI nitAction.run(ServletStubImpl.java:1099)
at weblogic.security.acl.internal.AuthenticatedSubjec t.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Se curityManager.java:121)
at weblogic.servlet.internal.ServletStubImpl.createSe rvlet(ServletStubImpl.java:975)
at weblogic.servlet.internal.ServletStubImpl.createIn stances(ServletStubImpl.java:954)
at weblogic.servlet.internal.ServletStubImpl.prepareS ervlet(ServletStubImpl.java:893)
at weblogic.servlet.internal.WebAppServletContext.pre loadServlet(WebAppServletContext.java:3456)
at weblogic.servlet.internal.WebAppServletContext.pre loadServlets(WebAppServletContext.java:3401)
at weblogic.servlet.internal.WebAppServletContext.pre loadResources(WebAppServletContext.java:3382)
at weblogic.servlet.internal.WebAppServletContext.set Started(WebAppServletContext.java:6262)
at weblogic.servlet.internal.WebAppModule.start(WebAp pModule.java:892)
at weblogic.j2ee.J2EEApplicationContainer.start(J2EEA pplicationContainer.java:2181)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2222)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2169)
at weblogic.management.deploy.slave.SlaveDeployer$App lication.setActivation(SlaveDeployer.java:3111)
at weblogic.management.deploy.slave.SlaveDeployer.set ActivationStateForAllApplications(SlaveDeployer.ja va:1769)
at weblogic.management.deploy.slave.SlaveDeployer.res ume(SlaveDeployer.java:352)
at weblogic.management.deploy.DeploymentManagerServer LifeCycleImpl.resume(DeploymentManagerServerLifeCy cleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(Subsystem Manager.java:136)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)

By moving the Jar with the EJB-Interface "org.SomeService" into "axis2.war/WEB-INF/lib", OR changing
the "ServiceLifeCycle" to the following the error above is gone and it seems that all spring-beans are configured correctly:

ClassLoader contextCl = Thread.currentThread().getContextClassLoader();
ClassLoader classLoader = service.getClassLoader();
Thread.currentThread().setContextClassLoader(class Loader);
ClassPathXmlApplicationContext appCtx =
new ClassPathXmlApplicationContext(
new String[]{"my-application-context.xml"}, false);
appCtx.setClassLoader(classLoader);
appCtx.refresh();
Thread.currentThread().setContextClassLoader(conte xtCl);

But by calling the EJB from wihthin the Web-Service we get an IllegaleArgumentException with "type mismatch":

org.springframework.remoting.RemoteProxyFailureExc eption: Invocation of RMI stub method failed: public abstract org.SomeOutputObject org.SomeService.someEjbMethode(org.SomeInputObject ); nested exception is java.lang.IllegalArgumentException: argument type mismatch
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at jrockit.reflect.VirtualNativeMethodInvoker.invoke( Ljava.lang.Object;[Ljava.lang.ObjectLjava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.springframework.remoting.rmi.RmiClientIntercep torUtils.doInvoke(RmiClientInterceptorUtils.java:1 03)
at org.springframework.ejb.access.SimpleRemoteSlsbInv okerInterceptor.doInvoke(SimpleRemoteSlsbInvokerIn terceptor.java:75)
...

Is this a generel class loader problem?
It seems that the Axis2 class loader is in conflict with Spring class loader.

To put the EJB-Interfaces Jar to System-Classpath can help, because both Axis2 and Spring uses the System class loader first.
But this is be problematicly if the accessed EJBs are also deployed in the same weblogic instance.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


[jira] Updated: (AXIS2-3886) Class loader problem by invoking EJB from Axis2-AAR with Spring

Posted by "Mirwais Turjalei (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AXIS2-3886?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mirwais Turjalei updated AXIS2-3886:
------------------------------------

    Description: 
As described in http://ws.apache.org/axis2/1_4/spring.html the "ServiceLifeCycle" was configured like this:

ClassLoader classLoader = service.getClassLoader();
ClassPathXmlApplicationContext appCtx = new
ClassPathXmlApplicationContext(new String[] {
"my-application-context.xml"}, false);
appCtx.setClassLoader(classLoader);
appCtx.refresh();

In "my-application-context.xml" we add a Spring-Bean to access the ejb:

<bean id="someService" class="org.springframework.jndi.JndiObjectFactoryB ean" lazy-init="true">
<property name="proxyInterface" value="org.SomeService" />
<property name="lookupOnStartup" value="false" />
<property name="jndiName" value="SomeService"/>
<property name="jndiTemplate">
<bean class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WL InitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7001</prop>
<prop key="java.naming.security.principal">username</prop>
<prop key="java.naming.security.credentials">password</prop>
</props>
</property>
</bean>
</property>
</bean>

By starting weblogic we get this exception:

... bean with name 'someService' defined in class path resource [my-application-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: interface org.SomeService is not visible from class loader
at org.apache.axis2.deployment.repository.util.Archiv eReader.processServiceGroup(ArchiveReader.java:151 )
at org.apache.axis2.deployment.ServiceDeployer.deploy (ServiceDeployer.java:81)
at org.apache.axis2.deployment.repository.util.Deploy mentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDep loy(DeploymentEngine.java:597)
at org.apache.axis2.deployment.repository.util.WSInfo List.update(WSInfoList.java:144)
at org.apache.axis2.deployment.RepositoryListener.upd ate(RepositoryListener.java:330)
at org.apache.axis2.deployment.RepositoryListener.che ckServices(RepositoryListener.java:227)
at org.apache.axis2.deployment.DeploymentEngine.loadS ervices(DeploymentEngine.java:131)
at org.apache.axis2.deployment.WarBasedAxisConfigurat or.loadServices(WarBasedAxisConfigurator.java:284)
at org.apache.axis2.context.ConfigurationContextFacto ry.createConfigurationContext(ConfigurationContext Factory.java:82)
at org.apache.axis2.transport.http.AxisServlet.initCo nfigContext(AxisServlet.java:511)
at org.apache.axis2.transport.http.AxisServlet.init(A xisServlet.java:431)
at weblogic.servlet.internal.ServletStubImpl$ServletI nitAction.run(ServletStubImpl.java:1099)
at weblogic.security.acl.internal.AuthenticatedSubjec t.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Se curityManager.java:121)
at weblogic.servlet.internal.ServletStubImpl.createSe rvlet(ServletStubImpl.java:975)
at weblogic.servlet.internal.ServletStubImpl.createIn stances(ServletStubImpl.java:954)
at weblogic.servlet.internal.ServletStubImpl.prepareS ervlet(ServletStubImpl.java:893)
at weblogic.servlet.internal.WebAppServletContext.pre loadServlet(WebAppServletContext.java:3456)
at weblogic.servlet.internal.WebAppServletContext.pre loadServlets(WebAppServletContext.java:3401)
at weblogic.servlet.internal.WebAppServletContext.pre loadResources(WebAppServletContext.java:3382)
at weblogic.servlet.internal.WebAppServletContext.set Started(WebAppServletContext.java:6262)
at weblogic.servlet.internal.WebAppModule.start(WebAp pModule.java:892)
at weblogic.j2ee.J2EEApplicationContainer.start(J2EEA pplicationContainer.java:2181)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2222)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2169)
at weblogic.management.deploy.slave.SlaveDeployer$App lication.setActivation(SlaveDeployer.java:3111)
at weblogic.management.deploy.slave.SlaveDeployer.set ActivationStateForAllApplications(SlaveDeployer.ja va:1769)
at weblogic.management.deploy.slave.SlaveDeployer.res ume(SlaveDeployer.java:352)
at weblogic.management.deploy.DeploymentManagerServer LifeCycleImpl.resume(DeploymentManagerServerLifeCy cleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(Subsystem Manager.java:136)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)

By moving the Jar with the EJB-Interface "org.SomeService" into "axis2.war/WEB-INF/lib", OR changing
the "ServiceLifeCycle" to the following the error above is gone and it seems that all spring-beans are configured correctly:

ClassLoader contextCl = Thread.currentThread().getContextClassLoader();
ClassLoader classLoader = service.getClassLoader();
Thread.currentThread().setContextClassLoader(class Loader);
ClassPathXmlApplicationContext appCtx =
new ClassPathXmlApplicationContext(
new String[]{"my-application-context.xml"}, false);
appCtx.setClassLoader(classLoader);
appCtx.refresh();
Thread.currentThread().setContextClassLoader(conte xtCl);

But by calling the EJB from within the Web-Service (in AAR) we get an IllegaleArgumentException with "type mismatch":

org.springframework.remoting.RemoteProxyFailureExc eption: Invocation of RMI stub method failed: public abstract org.SomeOutputObject org.SomeService.someEjbMethode(org.SomeInputObject ); nested exception is java.lang.IllegalArgumentException: argument type mismatch
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at jrockit.reflect.VirtualNativeMethodInvoker.invoke( Ljava.lang.Object;[Ljava.lang.ObjectLjava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.springframework.remoting.rmi.RmiClientIntercep torUtils.doInvoke(RmiClientInterceptorUtils.java:1 03)
at org.springframework.ejb.access.SimpleRemoteSlsbInv okerInterceptor.doInvoke(SimpleRemoteSlsbInvokerIn terceptor.java:75)
...

Is this a generel class loader problem?
It seems that the Axis2 class loader is in conflict with Spring class loader.

To put the EJB-Interfaces Jar to System-Classpath can help, because both Axis2 and Spring uses the System class loader first.
But this is be problematicly if the accessed EJBs are also deployed in the same weblogic instance.

  was:
As described in http://ws.apache.org/axis2/1_4/spring.html the "ServiceLifeCycle" was configured like this:

ClassLoader classLoader = service.getClassLoader();
ClassPathXmlApplicationContext appCtx = new
ClassPathXmlApplicationContext(new String[] {
"my-application-context.xml"}, false);
appCtx.setClassLoader(classLoader);
appCtx.refresh();

In "my-application-context.xml" we add a Spring-Bean to access the ejb:

<bean id="someService" class="org.springframework.jndi.JndiObjectFactoryB ean" lazy-init="true">
<property name="proxyInterface" value="org.SomeService" />
<property name="lookupOnStartup" value="false" />
<property name="jndiName" value="SomeService"/>
<property name="jndiTemplate">
<bean class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WL InitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7001</prop>
<prop key="java.naming.security.principal">username</prop>
<prop key="java.naming.security.credentials">password</prop>
</props>
</property>
</bean>
</property>
</bean>

By starting weblogic we get this exception:

... bean with name 'someService' defined in class path resource [my-application-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: interface org.SomeService is not visible from class loader
at org.apache.axis2.deployment.repository.util.Archiv eReader.processServiceGroup(ArchiveReader.java:151 )
at org.apache.axis2.deployment.ServiceDeployer.deploy (ServiceDeployer.java:81)
at org.apache.axis2.deployment.repository.util.Deploy mentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDep loy(DeploymentEngine.java:597)
at org.apache.axis2.deployment.repository.util.WSInfo List.update(WSInfoList.java:144)
at org.apache.axis2.deployment.RepositoryListener.upd ate(RepositoryListener.java:330)
at org.apache.axis2.deployment.RepositoryListener.che ckServices(RepositoryListener.java:227)
at org.apache.axis2.deployment.DeploymentEngine.loadS ervices(DeploymentEngine.java:131)
at org.apache.axis2.deployment.WarBasedAxisConfigurat or.loadServices(WarBasedAxisConfigurator.java:284)
at org.apache.axis2.context.ConfigurationContextFacto ry.createConfigurationContext(ConfigurationContext Factory.java:82)
at org.apache.axis2.transport.http.AxisServlet.initCo nfigContext(AxisServlet.java:511)
at org.apache.axis2.transport.http.AxisServlet.init(A xisServlet.java:431)
at weblogic.servlet.internal.ServletStubImpl$ServletI nitAction.run(ServletStubImpl.java:1099)
at weblogic.security.acl.internal.AuthenticatedSubjec t.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Se curityManager.java:121)
at weblogic.servlet.internal.ServletStubImpl.createSe rvlet(ServletStubImpl.java:975)
at weblogic.servlet.internal.ServletStubImpl.createIn stances(ServletStubImpl.java:954)
at weblogic.servlet.internal.ServletStubImpl.prepareS ervlet(ServletStubImpl.java:893)
at weblogic.servlet.internal.WebAppServletContext.pre loadServlet(WebAppServletContext.java:3456)
at weblogic.servlet.internal.WebAppServletContext.pre loadServlets(WebAppServletContext.java:3401)
at weblogic.servlet.internal.WebAppServletContext.pre loadResources(WebAppServletContext.java:3382)
at weblogic.servlet.internal.WebAppServletContext.set Started(WebAppServletContext.java:6262)
at weblogic.servlet.internal.WebAppModule.start(WebAp pModule.java:892)
at weblogic.j2ee.J2EEApplicationContainer.start(J2EEA pplicationContainer.java:2181)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2222)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2169)
at weblogic.management.deploy.slave.SlaveDeployer$App lication.setActivation(SlaveDeployer.java:3111)
at weblogic.management.deploy.slave.SlaveDeployer.set ActivationStateForAllApplications(SlaveDeployer.ja va:1769)
at weblogic.management.deploy.slave.SlaveDeployer.res ume(SlaveDeployer.java:352)
at weblogic.management.deploy.DeploymentManagerServer LifeCycleImpl.resume(DeploymentManagerServerLifeCy cleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(Subsystem Manager.java:136)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)

By moving the Jar with the EJB-Interface "org.SomeService" into "axis2.war/WEB-INF/lib", OR changing
the "ServiceLifeCycle" to the following the error above is gone and it seems that all spring-beans are configured correctly:

ClassLoader contextCl = Thread.currentThread().getContextClassLoader();
ClassLoader classLoader = service.getClassLoader();
Thread.currentThread().setContextClassLoader(class Loader);
ClassPathXmlApplicationContext appCtx =
new ClassPathXmlApplicationContext(
new String[]{"my-application-context.xml"}, false);
appCtx.setClassLoader(classLoader);
appCtx.refresh();
Thread.currentThread().setContextClassLoader(conte xtCl);

But by calling the EJB from wihthin the Web-Service we get an IllegaleArgumentException with "type mismatch":

org.springframework.remoting.RemoteProxyFailureExc eption: Invocation of RMI stub method failed: public abstract org.SomeOutputObject org.SomeService.someEjbMethode(org.SomeInputObject ); nested exception is java.lang.IllegalArgumentException: argument type mismatch
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at jrockit.reflect.VirtualNativeMethodInvoker.invoke( Ljava.lang.Object;[Ljava.lang.ObjectLjava.lang.Object;(Unknown Source)
at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
at org.springframework.remoting.rmi.RmiClientIntercep torUtils.doInvoke(RmiClientInterceptorUtils.java:1 03)
at org.springframework.ejb.access.SimpleRemoteSlsbInv okerInterceptor.doInvoke(SimpleRemoteSlsbInvokerIn terceptor.java:75)
...

Is this a generel class loader problem?
It seems that the Axis2 class loader is in conflict with Spring class loader.

To put the EJB-Interfaces Jar to System-Classpath can help, because both Axis2 and Spring uses the System class loader first.
But this is be problematicly if the accessed EJBs are also deployed in the same weblogic instance.


> Class loader problem by invoking EJB from Axis2-AAR with Spring
> ---------------------------------------------------------------
>
>                 Key: AXIS2-3886
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3886
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>    Affects Versions: 1.4
>         Environment: JDK 1.4, Axis2 1.4, Spring 2.0.8, Weblogic 8.1 SP6
>            Reporter: Mirwais Turjalei
>
> As described in http://ws.apache.org/axis2/1_4/spring.html the "ServiceLifeCycle" was configured like this:
> ClassLoader classLoader = service.getClassLoader();
> ClassPathXmlApplicationContext appCtx = new
> ClassPathXmlApplicationContext(new String[] {
> "my-application-context.xml"}, false);
> appCtx.setClassLoader(classLoader);
> appCtx.refresh();
> In "my-application-context.xml" we add a Spring-Bean to access the ejb:
> <bean id="someService" class="org.springframework.jndi.JndiObjectFactoryB ean" lazy-init="true">
> <property name="proxyInterface" value="org.SomeService" />
> <property name="lookupOnStartup" value="false" />
> <property name="jndiName" value="SomeService"/>
> <property name="jndiTemplate">
> <bean class="org.springframework.jndi.JndiTemplate">
> <property name="environment">
> <props>
> <prop key="java.naming.factory.initial">weblogic.jndi.WL InitialContextFactory</prop>
> <prop key="java.naming.provider.url">t3://localhost:7001</prop>
> <prop key="java.naming.security.principal">username</prop>
> <prop key="java.naming.security.credentials">password</prop>
> </props>
> </property>
> </bean>
> </property>
> </bean>
> By starting weblogic we get this exception:
> ... bean with name 'someService' defined in class path resource [my-application-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: interface org.SomeService is not visible from class loader
> at org.apache.axis2.deployment.repository.util.Archiv eReader.processServiceGroup(ArchiveReader.java:151 )
> at org.apache.axis2.deployment.ServiceDeployer.deploy (ServiceDeployer.java:81)
> at org.apache.axis2.deployment.repository.util.Deploy mentFileData.deploy(DeploymentFileData.java:136)
> at org.apache.axis2.deployment.DeploymentEngine.doDep loy(DeploymentEngine.java:597)
> at org.apache.axis2.deployment.repository.util.WSInfo List.update(WSInfoList.java:144)
> at org.apache.axis2.deployment.RepositoryListener.upd ate(RepositoryListener.java:330)
> at org.apache.axis2.deployment.RepositoryListener.che ckServices(RepositoryListener.java:227)
> at org.apache.axis2.deployment.DeploymentEngine.loadS ervices(DeploymentEngine.java:131)
> at org.apache.axis2.deployment.WarBasedAxisConfigurat or.loadServices(WarBasedAxisConfigurator.java:284)
> at org.apache.axis2.context.ConfigurationContextFacto ry.createConfigurationContext(ConfigurationContext Factory.java:82)
> at org.apache.axis2.transport.http.AxisServlet.initCo nfigContext(AxisServlet.java:511)
> at org.apache.axis2.transport.http.AxisServlet.init(A xisServlet.java:431)
> at weblogic.servlet.internal.ServletStubImpl$ServletI nitAction.run(ServletStubImpl.java:1099)
> at weblogic.security.acl.internal.AuthenticatedSubjec t.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(Se curityManager.java:121)
> at weblogic.servlet.internal.ServletStubImpl.createSe rvlet(ServletStubImpl.java:975)
> at weblogic.servlet.internal.ServletStubImpl.createIn stances(ServletStubImpl.java:954)
> at weblogic.servlet.internal.ServletStubImpl.prepareS ervlet(ServletStubImpl.java:893)
> at weblogic.servlet.internal.WebAppServletContext.pre loadServlet(WebAppServletContext.java:3456)
> at weblogic.servlet.internal.WebAppServletContext.pre loadServlets(WebAppServletContext.java:3401)
> at weblogic.servlet.internal.WebAppServletContext.pre loadResources(WebAppServletContext.java:3382)
> at weblogic.servlet.internal.WebAppServletContext.set Started(WebAppServletContext.java:6262)
> at weblogic.servlet.internal.WebAppModule.start(WebAp pModule.java:892)
> at weblogic.j2ee.J2EEApplicationContainer.start(J2EEA pplicationContainer.java:2181)
> at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2222)
> at weblogic.j2ee.J2EEApplicationContainer.activate(J2 EEApplicationContainer.java:2169)
> at weblogic.management.deploy.slave.SlaveDeployer$App lication.setActivation(SlaveDeployer.java:3111)
> at weblogic.management.deploy.slave.SlaveDeployer.set ActivationStateForAllApplications(SlaveDeployer.ja va:1769)
> at weblogic.management.deploy.slave.SlaveDeployer.res ume(SlaveDeployer.java:352)
> at weblogic.management.deploy.DeploymentManagerServer LifeCycleImpl.resume(DeploymentManagerServerLifeCy cleImpl.java:229)
> at weblogic.t3.srvr.SubsystemManager.resume(Subsystem Manager.java:136)
> at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)
> By moving the Jar with the EJB-Interface "org.SomeService" into "axis2.war/WEB-INF/lib", OR changing
> the "ServiceLifeCycle" to the following the error above is gone and it seems that all spring-beans are configured correctly:
> ClassLoader contextCl = Thread.currentThread().getContextClassLoader();
> ClassLoader classLoader = service.getClassLoader();
> Thread.currentThread().setContextClassLoader(class Loader);
> ClassPathXmlApplicationContext appCtx =
> new ClassPathXmlApplicationContext(
> new String[]{"my-application-context.xml"}, false);
> appCtx.setClassLoader(classLoader);
> appCtx.refresh();
> Thread.currentThread().setContextClassLoader(conte xtCl);
> But by calling the EJB from within the Web-Service (in AAR) we get an IllegaleArgumentException with "type mismatch":
> org.springframework.remoting.RemoteProxyFailureExc eption: Invocation of RMI stub method failed: public abstract org.SomeOutputObject org.SomeService.someEjbMethode(org.SomeInputObject ); nested exception is java.lang.IllegalArgumentException: argument type mismatch
> Caused by: java.lang.IllegalArgumentException: argument type mismatch
> at jrockit.reflect.VirtualNativeMethodInvoker.invoke( Ljava.lang.Object;[Ljava.lang.ObjectLjava.lang.Object;(Unknown Source)
> at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown Source)
> at org.springframework.remoting.rmi.RmiClientIntercep torUtils.doInvoke(RmiClientInterceptorUtils.java:1 03)
> at org.springframework.ejb.access.SimpleRemoteSlsbInv okerInterceptor.doInvoke(SimpleRemoteSlsbInvokerIn terceptor.java:75)
> ...
> Is this a generel class loader problem?
> It seems that the Axis2 class loader is in conflict with Spring class loader.
> To put the EJB-Interfaces Jar to System-Classpath can help, because both Axis2 and Spring uses the System class loader first.
> But this is be problematicly if the accessed EJBs are also deployed in the same weblogic instance.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org