Moving to JBossWS-CXF in AS 6 Final
asoldano Jan 7, 2011 2:31 AMKuntal Mondal wrote on https://issues.jboss.org/browse/JBAS-8779 :
Alessio - thanks a lot for responding to this issue. I am not using anything very specific to JBossWS-Metro and will be happy to use JBossWS-CXF stack if it works.
Below here is my exception detail.
I am using SpringSecurity (3.0.3) for user authentication/authorization. I have 2 WAR modules under EAR.
All the Spring libraries are placed within EAR/lib so that both of my WAR modules can access those.
With "Jboss6-Final" release I am getting following exception while invoking web service. The complete stack trace has been attached - I have specified the relevant portion here.
=======================================
11:04:05,769 ERROR [[/edm]] Servlet /edm threw load() exception: java.lang.ClassNotFoundException: org.springframework.beans.BeansException from BaseClassLoader@138847d{vfs:///C:/Workspace/DM1.0/dependencies/repository/jboss/jboss-6.0.0.Final/server/default/conf/jboss-service.xml}
at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:480) [jboss-classloader.jar:2.2.0.GA]
at java.lang.ClassLoader.loadClass(ClassLoader.java:248) [:1.6.0_23]
at org.jboss.wsf.stack.cxf.client.configuration.JBossWSBusFactory.getSpringBusFactory(JBossWSBusFactory.java:120) [:3.4.1.GA]
at org.jboss.wsf.stack.cxf.client.configuration.JBossWSBusFactory.createBus(JBossWSBusFactory.java:54) [:3.4.1.GA]
at org.jboss.wsf.stack.cxf.client.ProviderImpl.createServiceDelegate(ProviderImpl.java:69) [:3.4.1.GA]
at javax.xml.ws.Service.<init>(Service.java:57) [:1.0.0.Final]
at com.towersoft.schema.webservice.trim2.Engine.<init>(Engine.java:42) [:]
at com.im.server.edm.datasource.trim.TrimSession.createTrimSession(TrimSession.java:73) [:]
at com.im.server.edm.datasource.trim.TrimDatasource.createSession(TrimDatasource.java:60) [:]
at com.im.server.edm.datasource.trim.TrimDatasource.createSession(TrimDatasource.java:15) [:]
at com.im.server.edm.datasource.SessionCache.acquire(SessionCache.java:34) [:]
at com.im.server.edm.datasource.Datasource.openSession(Datasource.java:96) [:]
at com.im.server.edm.buslogic.DatasourceBL.persistTrimCustomFields(DatasourceBL.java:186) [:]
at com.im.server.edm.buslogic.InstallBL.createDatasources(InstallBL.java:211) [:]
at com.im.server.edm.buslogic.InstallBL.createDevDatasources(InstallBL.java:172) [:]
at com.im.server.edm.buslogic.InstallBL.initializeApplication(InstallBL.java:40) [:]
at com.im.server.edm.ejb.ApplicationBean.initializeApplication(ApplicationBean.java:42) [:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_23]
==================================================
I have no idea why "org.springframework.beans.BeansException" class has been referred from JBossWS-CXF library.
Is it because I am using SpringSecurity??
Since CXF libraries are under {JBOSS}\common\lib, those are loaded by BaseClassLoaders - where as my Spring libraries are under EAR and loaded by different classloader.
After lot of trial and error ultimately I have found that if I place following 8 Spring libraries (together with aopalliance.jar) under {JBOSS}\common\lib, I can avoid all Spring-class-not-found related exceptions. These are:
1) aopalliance.jar
2) org.springframework.aop-3.0.3.RELEASE.jar
3) org.springframework.asm-3.0.3.RELEASE.jar
4) org.springframework.beans-3.0.3.RELEASE.jar
5) org.springframework.context-3.0.3.RELEASE.jar
6) org.springframework.context.support-3.0.3.RELEASE.jar
7) org.springframework.core-3.0.3.RELEASE.jar
8) org.springframework.expression-3.0.3.RELEASE.jar
I have serious doubt why I have to keep these libs under {JBOSS}\common\lib? - these are app-specific lib, so these should not be placed under {JBOSS}\common\lib.
But without these spring libs JBossWS-CXF always thorws exception. Can you "please" advise??
Because of this reason last time (JBoss 6.0.0.CR1) I switched to "JBossWS-Metro".
Now for webservice-invocation I also need to place following 3 additional libraries under {JBOSS}\common\lib. These are:
1) commons-lang-2.5.jar
2) saaj-api.jar
3) saaj-impl.jar
With these modification I was able to invoke my web services (at least 2 out of 3).
I have to invoke webservice to 3 different web servers. Two of them are working with above configuration.
For the 3rd one I am getting following error. Not sure it is related to JBossWS-CXF library or not - but the server is up and I can access the WSDL using browser.
So I am at lost here.
Any suggestion/advise will be very helpful.
====================================================================
Caused by: javax.xml.ws.soap.SOAPFaultException: Can't find input stream in message
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146) [:2.3.1]
at $Proxy203.execute(Unknown Source) at com.im.server.edm.datasource.trim.Sessionexecute(TrimSession.java:563) [:]
at com.im.server.edm.datasource.trim.Sessionexecute(TrimSession.java:556) [:]
at com.im.server.edm.datasource.trim.SessionrunQuery(TrimSession.java:144) [:]
at com.im.server.edm.datasource.trim.SessionfetchMetadata(TrimSession.java:96) [:]
at com.im.server.edm.datasource.DatasourceSession.runQuery(DatasourceSession.java:51) [:]
at com.im.server.edm.buslogic.FederationBL.runQuery(FederationBL.java:99) [:]
at com.im.server.edm.ejb.FederationBean.runQuery(FederationBean.java:50) [:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_23]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_23]
at org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122) [jboss-aop.jar:2.2.1.GA]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.interceptors.container.ContainerMethodInvocationWrapper.invokeNext(ContainerMethodInvocationWrapper.java:72) [:1.1.3]
at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:76) [:1.1.3]
at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:62) [:1.1.3]
at sun.reflect.GeneratedMethodAccessor461.invoke(Unknown Source) [:1.6.0_23]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_23]
at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_23]
at org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174) [jboss-aop.jar:2.2.1.GA]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:74) [:1.1.3]
at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_21583340.invoke(InvocationContextInterceptor_z_fillMethod_21583340.java) [:]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:90) [:1.1.3]
at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_21583340.invoke(InvocationContextInterceptor_z_setup_21583340.java) [:]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.async.impl.interceptor.AsynchronousServerInterceptor.invoke(AsynchronousServerInterceptor.java:128) [:1.7.17]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62) [:1.7.17]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56) [:1.7.17]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) [:1.7.17]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.tx.StatelessBMTInterceptor.handleInvocation(StatelessBMTInterceptor.java:106) [:1.0.3]
at org.jboss.ejb3.tx.BMTInterceptor.invoke(BMTInterceptor.java:55) [:1.0.3]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68) [:1.7.17]
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) [jboss-aop.jar:2.2.1.GA]
at org.jboss.ejb3.core.context.SessionInvocationContextAdapter.proceed(SessionInvocationContextAdapter.java:95) [:1.7.17]
at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:247) [:0.0.1]
... 39 more
Caused by: java.lang.RuntimeException: Can't find input stream in message
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:116) [:2.3.1]
at org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handleMessage(ReadHeadersInterceptor.java:60) [:2.3.1]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) [:2.3.1]
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:755) [:2.3.1]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2330) [:2.3.1]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2192) [:2.3.1]
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2036) [:2.3.1]
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) [:2.3.1]
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:696) [:2.3.1]
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) [:2.3.1]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) [:2.3.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516) [:2.3.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) [:2.3.1]
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265) [:2.3.1]
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) [:2.3.1]
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) [:2.3.1]
... 82 more