Your post is kind of too long and I am not really seeing how your client is calling the method and how your service is setting the value, Could you compare that to the cxf's sample code at samples/soap_header/src/main/java/demo/soap_header/(client|server)?
2014-11-28 18:21 GMT+01:00 André Costa Lima <[email protected]>: > Hello, > > I am a new CXF (v3.0.0) user. Actually, I am new to the whole JAX-WS thing. > :) > I have set up a JAX-WS service, SOAP over JMS with ActiveMQ. The server > methods invocations are working fine, but I am having some trouble > regarding the Holder class. > I am using the holder class as a container for the outgoing SOAP header for > all web methods, as specified in the WSDL. > I started from WSDL first with Spring configuration for both clients and > servers. > I have provided an async binding to the wsdl2java tool to generate the > async method signatures, because I want to use those instead of the sync > ones. > > The problem is that when I pass the Holder object to the client method and > assign the value field in the server, the client sees it as null but no > exception is thrown. > Further, if I put the @UseAsyncMethod annotation to command CXF to use the > pure async method I have implemented, CXF throws NPE at > HolderOutInterceptor class. > I noticed that if the web method has no arguments besides the SOAP headers > everything works just fine, otherwise what I have described above happens. > > Below there are my configurations. > > Maven plugin: > > <plugin> > <groupId>org.apache.cxf</groupId> > <artifactId>cxf-codegen-plugin</artifactId> > <executions> > <execution> > <id>generate-sources</id> > <phase>generate-sources</phase> > <configuration> > <defaultOptions> > <bindingFiles> > > <bindingFile>${basedir}/src/main/resources/oa_types-binding.xml</bindingFile> > > <bindingFile>${basedir}/src/main/resources/oa_async-binding.xml</bindingFile> > </bindingFiles> > > <noAddressBinding>true</noAddressBinding> > </defaultOptions> > <sourceRoot> > > ${basedir}/target/generated-sources/cxf > </sourceRoot> > <wsdlOptions> > <wsdlOption> > > <wsdl>${basedir}/src/main/resources/OA_Server.wsdl</wsdl> > > <wsdlLocation>classpath:OA_Server.wsdl</wsdlLocation> > <extraargs> > <extraarg>-p</extraarg> > <extraarg> > http://www.multispeak.org/Version_4.1_Release=org.multispeak.version_4_1_6.OA > </extraarg> > <extraarg>-p</extraarg> > > <extraarg>cpsm_V4.1_Release=org.cspm.version_4_1.OA</extraarg> > <extraarg>-p</extraarg> > > <extraarg>gml_V4.1_Release=org.gml.version_4_1.OA</extraarg> > <extraarg>-p</extraarg> > <extraarg> > http://www.w3.org/1999/xlink=org.w3.xlink.OA</extraarg> > <extraarg>-p</extraarg> > <extraarg> > http://www.w3.org/2001/XMLSchema=org.w3.xmlschema.OA</extraarg> > <!-- > <extraarg>-p</extraarg> --> > <!-- > <extraarg>org.multispeak.version_4_1_6.OA</extraarg> --> > <!-- > <extraarg>-impl</extraarg> --> > <!-- > <extraarg>-server</extraarg> --> > <!-- > <extraarg>-client</extraarg> --> > > <extraarg>-autoNameResolution</extraarg> > <extraarg>-fe</extraarg> > <extraarg>jaxws21</extraarg> > <extraarg>-exsh</extraarg> > <extraarg>true</extraarg> > </extraargs> > </wsdlOption> > </wsdlOptions> > </configuration> > <goals> > <goal>wsdl2java</goal> > </goals> > </execution> > </executions> > </plugin> > > Spring: > > <beans:bean id="connection-factory" > class="org.apache.activemq.ActiveMQConnectionFactory"> > <beans:property name="brokerURL" > value="${outside.multispeak.jms.broker}"/> > </beans:bean> > > <beans:bean id="pooled-connection-factory" > class="org.apache.activemq.pool.PooledConnectionFactory" > destroy-method="stop"> > <beans:constructor-arg index="0" ref="connection-factory"/> > <beans:property name="expiryTimeout" > value="${outside.multispeak.jms.pool.expiryTimeout}"/> > </beans:bean> > > <!-- multispeak call handling interface (OA) --> > > <!-- client side --> > > <jaxws:client > id="multispeak-oa-client" > xmlns:ns="http://www.multispeak.org/Version_4.1_Release" > serviceClass="org.multispeak.version_4_1_6.OA.OAServerSoap" > serviceName="ns:OA_Server" > endpointName="ns:OA_ServerSoap" > address="#{'jms:queue:' > + '${outside.multispeak.oa.jms.queue}' > + '?timeToLive=' + '${outside.multispeak.jms.timeToLive}' > + '&requestTimeout' + > '${outside.multispeak.jms.receiveTimeout}'}" > wsdlLocation="classpath:OA_Server.wsdl"> > <jaxws:features> > <beans:bean class="org.apache.cxf.feature.LoggingFeature "/> > <beans:bean > class="org.apache.cxf.transport.jms.ConnectionFactoryFeature"> > <beans:constructor-arg index="0" > ref="pooled-connection-factory"/> > </beans:bean> > </jaxws:features> > </jaxws:client> > > <!-- server side --> > > <beans:bean id="forwarding-oa-server" > class="${outside.multispeak.oa.server}" /> > <beans:bean id="multispeak-oa-obj-factory" > class="org.multispeak.version_4_1_6.OA.ObjectFactory" /> > > <jaxws:endpoint > id="multispeak-oa-server" > xmlns:tns="http://www.multispeak.org/Version_4.1_Release" > implementor="x.x.outside.multispeak.oa.server.OAServerSoapImpl" > serviceName="tns:OA_Server" > endpointName="tns:OA_ServerSoap" > address="#{'jms:queue:' + '${outside.multispeak.oa.jms.queue}' > + ''}" > publish="false" > wsdlLocation="classpath:OA_Server.wsdl"> > <jaxws:features> > <beans:bean class="org.apache.cxf.feature.LoggingFeature "/> > <beans:bean > class="org.apache.cxf.transport.jms.ConnectionFactoryFeature"> > <beans:constructor-arg index="0" > ref="pooled-connection-factory"/> > </beans:bean> > </jaxws:features> > </jaxws:endpoint> > > The Service Endpoint Interface generated. > There are two methods: pingURL and odEventNotification. > pingURLAsync, as it has no arguments besides the headers, works just fine, > but odEventNotificationAsync does not. > Note that I am using an AsyncHandler of course. In case of pingURLAsync I > can get Holder.value in the handleResponse(Response<T>) callback without > any problems. > > @WebService(targetNamespace = "http://www.multispeak.org/Version_4.1_Release", > name = "OA_ServerSoap") > @XmlSeeAlso({ObjectFactory.class, org.w3.xlink.OA.ObjectFactory.class, > org.gml.version_4_1.OA.ObjectFactory.class, > org.cspm.version_4_1.OA.ObjectFactory.class}) > public interface OAServerSoap { > > ... > > @RequestWrapper(localName = "PingURL", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.PingURL") > @ResponseWrapper(localName = "PingURLResponse", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.PingURLResponse") > @WebMethod(operationName = "PingURL") > public Response<org.multispeak.version_4_1_6.OA.PingURLResponse> > pingURLAsync( > @WebParam(name = "MultiSpeakMsgHeader", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", header = true) > MultiSpeakMsgHeader multiSpeakMsgHeader, > @WebParam(mode = WebParam.Mode.OUT, name = "MultiSpeakMsgHeader", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", header = > true) > javax.xml.ws.Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1 > ); > > @RequestWrapper(localName = "PingURL", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.PingURL") > @ResponseWrapper(localName = "PingURLResponse", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.PingURLResponse") > @WebMethod(operationName = "PingURL") > public Future<?> pingURLAsync( > @WebParam(name = "MultiSpeakMsgHeader", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", header = true) > MultiSpeakMsgHeader multiSpeakMsgHeader, > @WebParam(mode = WebParam.Mode.OUT, name = "MultiSpeakMsgHeader", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", header = > true) > javax.xml.ws.Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1, > @WebParam(name = "asyncHandler", targetNamespace = "") > AsyncHandler<org.multispeak.version_4_1_6.OA.PingURLResponse> > asyncHandler > ); > > /** > * Requester pings URL of OA to see if it is alive. Returns > errorObject(s) as necessary to communicate application status. > */ > @WebResult(name = "PingURLResult", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > @RequestWrapper(localName = "PingURL", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.PingURL") > @WebMethod(operationName = "PingURL", action = " > http://www.multispeak.org/Version_4.1_Release/PingURL") > @ResponseWrapper(localName = "PingURLResponse", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.PingURLResponse") > public org.multispeak.version_4_1_6.OA.ArrayOfErrorObject pingURL( > @WebParam(name = "MultiSpeakMsgHeader", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", header = true) > MultiSpeakMsgHeader multiSpeakMsgHeader, > @WebParam(mode = WebParam.Mode.OUT, name = "MultiSpeakMsgHeader", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", header = > true) > javax.xml.ws.Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1 > ); > > @RequestWrapper(localName = "ODEventNotification", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.ODEventNotification") > @ResponseWrapper(localName = "ODEventNotificationResponse", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", > className = "org.multispeak.version_4_1_6.OA.ODEventNotificationResponse") > @WebMethod(operationName = "ODEventNotification") > public > Response<org.multispeak.version_4_1_6.OA.ODEventNotificationResponse> > odEventNotificationAsync( > @WebParam(name = "ODEvents", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > org.multispeak.version_4_1_6.OA.ArrayOfOutageDetectionEvent > odEvents, > @WebParam(name = "transactionID", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > java.lang.String transactionID, > @WebParam(name = "MultiSpeakMsgHeader", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", header = true) > MultiSpeakMsgHeader multiSpeakMsgHeader, > @WebParam(mode = WebParam.Mode.OUT, name = "MultiSpeakMsgHeader", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", header = > true) > javax.xml.ws.Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1 > ); > > @RequestWrapper(localName = "ODEventNotification", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.ODEventNotification") > @ResponseWrapper(localName = "ODEventNotificationResponse", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", > className = "org.multispeak.version_4_1_6.OA.ODEventNotificationResponse") > @WebMethod(operationName = "ODEventNotification") > public Future<?> odEventNotificationAsync( > @WebParam(name = "ODEvents", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > org.multispeak.version_4_1_6.OA.ArrayOfOutageDetectionEvent > odEvents, > @WebParam(name = "transactionID", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > java.lang.String transactionID, > @WebParam(name = "MultiSpeakMsgHeader", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", header = true) > MultiSpeakMsgHeader multiSpeakMsgHeader, > @WebParam(mode = WebParam.Mode.OUT, name = "MultiSpeakMsgHeader", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", header = > true) > javax.xml.ws.Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1, > @WebParam(name = "asyncHandler", targetNamespace = "") > > AsyncHandler<org.multispeak.version_4_1_6.OA.ODEventNotificationResponse> > asyncHandler > ); > > /** > * Publisher notifies OA of a change in OutageDetectionEvents by > sending an array of changed OutageDetectionEvent objects. OA returns > information about failed transactions using an array of errorObjects. The > message header attribute 'registrationID' should be added to all publish > messages to indicate to the subscriber under which registrationID they > received this notification data. > */ > @WebResult(name = "ODEventNotificationResult", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > @RequestWrapper(localName = "ODEventNotification", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", className = > "org.multispeak.version_4_1_6.OA.ODEventNotification") > @WebMethod(operationName = "ODEventNotification", action = " > http://www.multispeak.org/Version_4.1_Release/ODEventNotification") > @ResponseWrapper(localName = "ODEventNotificationResponse", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", > className = "org.multispeak.version_4_1_6.OA.ODEventNotificationResponse") > public org.multispeak.version_4_1_6.OA.ArrayOfErrorObject > odEventNotification( > @WebParam(name = "ODEvents", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > org.multispeak.version_4_1_6.OA.ArrayOfOutageDetectionEvent > odEvents, > @WebParam(name = "transactionID", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release") > java.lang.String transactionID, > @WebParam(name = "MultiSpeakMsgHeader", targetNamespace = " > http://www.multispeak.org/Version_4.1_Release", header = true) > MultiSpeakMsgHeader multiSpeakMsgHeader, > @WebParam(mode = WebParam.Mode.OUT, name = "MultiSpeakMsgHeader", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", header = > true) > javax.xml.ws.Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1 > ); > > ... > > The SEI implementation. > Both pingURL and odEventNotification simply forward the call to a delegate. > Both inbound and outbound headers are placed in a common container and > handed over to the delegate. > The async methods simply execute the calls in background and end up calling > the sync methods internally. > The line > mspkHeader.setOutbound(mObjectFactory.createMultiSpeakMsgHeader()); > simply calls multiSpeakMsgHeader1.value = ... > > @WebService( > serviceName = "OA_Server", > portName = "OA_ServerSoap", > targetNamespace = "http://www.multispeak.org/Version_4.1_Release", > wsdlLocation = "classpath:OA_Server.wsdl", > endpointInterface = "org.multispeak.version_4_1_6.OA.OAServerSoap") > public class OAServerSoapImpl implements OAServerSoap { > > ... > > @Override > public ArrayOfErrorObject pingURL(MultiSpeakMsgHeader > multiSpeakMsgHeader, Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1) { > LOG.entry(multiSpeakMsgHeader, multiSpeakMsgHeader1); > try { > Preconditions.checkNotNull(multiSpeakMsgHeader); > Preconditions.checkNotNull(multiSpeakMsgHeader1); > MultiSpeakInOutHeader<MultiSpeakMsgHeader> mspkHeader = > MultiSpeakInOutHeader.of(multiSpeakMsgHeader, multiSpeakMsgHeader1); > > mspkHeader.setOutbound(mObjectFactory.createMultiSpeakMsgHeader()); > return > LOG.exit(Preconditions.checkNotNull(mDelegate.pingURL(mspkHeader))); > } catch (Throwable t) { > throw LOG.throwing(Throwables.unchecked(t)); > } > } > > @Override > @UseAsyncMethod > public ArrayOfErrorObject odEventNotification(ArrayOfOutageDetectionEvent > odEvents, String transactionID, MultiSpeakMsgHeader multiSpeakMsgHeader, > Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1) { > LOG.entry(odEvents, transactionID, multiSpeakMsgHeader, > multiSpeakMsgHeader1); > try { > Preconditions.checkNotNull(odEvents, "odEvents"); > Preconditions.checkNotNull(transactionID, "transactionID"); > Preconditions.checkNotNull(multiSpeakMsgHeader, > "multiSpeakMsgHeader"); > Preconditions.checkNotNull(multiSpeakMsgHeader1, > "multiSpeakMsgHeader1"); > MultiSpeakInOutHeader<MultiSpeakMsgHeader> mspkHeader = > MultiSpeakInOutHeader.of(multiSpeakMsgHeader, multiSpeakMsgHeader1); > > mspkHeader.setOutbound(mObjectFactory.createMultiSpeakMsgHeader()); > return > LOG.exit(Preconditions.checkNotNull(mDelegate.odEventNotification(odEvents, > transactionID, mspkHeader))); > } catch (Throwable t) { > throw LOG.throwing(Throwables.unchecked(t)); > } > } > > @Override > public Future<?> pingURLAsync(MultiSpeakMsgHeader multiSpeakMsgHeader, > Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1, > AsyncHandler<PingURLResponse> asyncHandler) { > LOG.entry(multiSpeakMsgHeader, multiSpeakMsgHeader1, asyncHandler); > try { > PingURLAsync response = new PingURLAsync(this, > multiSpeakMsgHeader, multiSpeakMsgHeader1, asyncHandler); > mExecutor.submit(response); > return LOG.exit(response.getServerAsyncResponse()); > } catch (Throwable t) { > throw LOG.throwing(Throwables.unchecked(t)); > } > } > > @Override > public Future<?> odEventNotificationAsync(ArrayOfOutageDetectionEvent > odEvents, String transactionID, MultiSpeakMsgHeader multiSpeakMsgHeader, > Holder<MultiSpeakMsgHeader> multiSpeakMsgHeader1, > AsyncHandler<ODEventNotificationResponse> asyncHandler) { > LOG.entry(odEvents, transactionID, multiSpeakMsgHeader, > multiSpeakMsgHeader1); > try { > OdEventNotificationAsync response = new > OdEventNotificationAsync(this, odEvents, transactionID, > multiSpeakMsgHeader, multiSpeakMsgHeader1, asyncHandler); > mExecutor.submit(response); > return LOG.exit(response.getServerAsyncResponse()); > } catch (Throwable t) { > throw LOG.throwing(Throwables.unchecked(t)); > } > } > > ... > > The invocation test. > > ... > Holder<MultiSpeakMsgHeader> headerOut = new Holder<MultiSpeakMsgHeader>(); > Future<?> future = mServer.odEventNotificationAsync(new > ArrayOfOutageDetectionEvent(), "0", new MultiSpeakMsgHeader(), headerOut, > new AsyncHandlerImpl(headerOut)); > ... > private static class AsyncHandlerImpl implements > AsyncHandler<ODEventNotificationResponse> { > > private static final XLogger LOG = > XLoggerFactory.getXLogger(AsyncHandlerImpl.class); > > private final Holder<MultiSpeakMsgHeader> mHeaderOut; > > public AsyncHandlerImpl(Holder<MultiSpeakMsgHeader> headerOut) { > mHeaderOut = headerOut; > } > > @Override > public void handleResponse(Response<ODEventNotificationResponse> > res) { > try { > if (LOG.isTraceEnabled()) { > LOG.trace("Callback: {}", res.toString()); > } > ODEventNotificationResponse mspkRsp = res.get(); > if (LOG.isTraceEnabled()) { > LOG.trace("OA odEventNotificationAsync() >> callback: > {} > multispeak header: {}", mspkRsp.toString(), mHeaderOut.value); > // for (Entry<String, Object> entry : > res.getContext().entrySet()) { > // LOG.trace("Response context >> string > {} >> > object > {}", entry.getKey(), entry.getValue()); > // } > } > } catch (Exception e) { > LOG.catching(e); > } > } > } > > As I said above, a NPE is thrown in HolderOutInterceptor when the response > is returned to the client if I use the pure async method with > @UseAsyncMethod, > or mHeaderOut.value is null if I don't. Now, the stacktrace: > > 28-11-2014 17:15:07.997 WARN [OA Thread-#1] > org.apache.cxf.phase.PhaseInterceptorChain doLog - Interceptor for { > http://www.multispeak.org/Version_4.1_Release}OA_Server#{http://www.multispeak.org/Version_4.1_Release}ODEventNotification > has thrown exception, unwinding now > java.lang.NullPointerException > at > org.apache.cxf.jaxws.interceptors.HolderOutInterceptor.handleMessage(HolderOutInterceptor.java:90) > ~[cxf-rt-frontend-jaxws-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) > [cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:81) > [cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) > [cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.resume(PhaseInterceptorChain.java:277) > [cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78) > [cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.continuations.JMSContinuation.doResume(JMSContinuation.java:109) > [cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.continuations.JMSContinuation.resume(JMSContinuation.java:98) > [cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker$JaxwsServerHandler.handleResponse(AbstractJAXWSMethodInvoker.java:193) > [cxf-rt-frontend-jaxws-3.0.0.jar:3.0.0] > at > x.x.outside.common.ws.cxf.endpoint.server.AbstractAsyncResponseHandler.fireResult(AbstractAsyncResponseHandler.java:55) > [classes/:?] > at > x.x.outside.common.ws.cxf.endpoint.server.AbstractAsyncResponseHandler.fireAsyncResult(AbstractAsyncResponseHandler.java:46) > [classes/:?] > at > x.x.outside.common.ws.cxf.endpoint.server.AbstractAsyncResponseHandler.postProcess(AbstractAsyncResponseHandler.java:41) > [classes/:?] > at > x.x.outside.common.util.ConditionEnforcerHandlerRunnable$1.invoke(ConditionEnforcerHandlerRunnable.java:10) > [classes/:?] > at > x.x.outside.common.util.ConditionEnforcerHandler$2.invoke(ConditionEnforcerHandler.java:25) > [classes/:?] > at > x.x.outside.common.util.ExceptionHandler.handle(ExceptionHandler.java:7) > [classes/:?] > at > x.x.outside.common.util.ConditionEnforcerHandler.handle(ConditionEnforcerHandler.java:20) > [classes/:?] > at > x.x.outside.common.util.ConditionEnforcerHandlerRunnable.run(ConditionEnforcerHandlerRunnable.java:7) > [classes/:?] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > [?:1.6.0_33] > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) > [?:1.6.0_33] > at java.util.concurrent.FutureTask.run(FutureTask.java:166) [?:1.6.0_33] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) > [?:1.6.0_33] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > [?:1.6.0_33] > at java.lang.Thread.run(Thread.java:701) [?:1.6.0_33] > 28-11-2014 17:15:08.044 TRACE [ActiveMQ Session Task-1] > x.x.outside.test.multispeak.OAServerTestAsyncCallback$AsyncHandlerImpl > handleResponse - Callback: org.apache.cxf.jaxws.JaxwsClientCallback$2@cc6f8c > 28-11-2014 17:15:08.044 ERROR [ActiveMQ Session Task-1] > x.x.outside.test.multispeak.OAServerTestAsyncCallback$AsyncHandlerImpl > handleResponse - catching > java.util.concurrent.ExecutionException: > org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing. > at > org.apache.cxf.jaxws.JaxwsClientCallback$2.get(JaxwsClientCallback.java:99) > ~[cxf-rt-frontend-jaxws-3.0.0.jar:3.0.0] > at > x.x.outside.test.multispeak.OAServerTestAsyncCallback$AsyncHandlerImpl.handleResponse(OAServerTestAsyncCallback.java:81) > [classes/:?] > at > org.apache.cxf.jaxws.JaxwsClientCallback.handleException(JaxwsClientCallback.java:87) > [cxf-rt-frontend-jaxws-3.0.0.jar:3.0.0] > at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:821) > [cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.JMSConduit.processReplyMessage(JMSConduit.java:413) > [cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.JMSConduit.onMessage(JMSConduit.java:380) > [cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.util.MessageListenerContainer$LocalTransactionalMessageListener.onMessage(MessageListenerContainer.java:120) > [cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1361) > [activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131) > [activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202) > [activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133) > [activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) > [activemq-client-5.9.1.jar:5.9.1] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) > [?:1.6.0_33] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > [?:1.6.0_33] > at java.lang.Thread.run(Thread.java:701) [?:1.6.0_33] > Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while > processing. > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) > ~[cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) > ~[cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) > ~[cxf-core-3.0.0.jar:3.0.0] > at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:780) > ~[cxf-core-3.0.0.jar:3.0.0] > ... 11 more > 28-11-2014 17:15:08.045 ERROR > [x.x.outside.test.multispeak.OAServerTestAsyncCallback-1] > x.x.outside.test.multispeak.OAServerTestAsyncCallback run - catching > java.util.concurrent.ExecutionException: > org.apache.cxf.binding.soap.SoapFault: Fault occurred while processing. > at org.apache.cxf.endpoint.ClientCallback.get(ClientCallback.java:169) > ~[cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.jaxws.JaxwsResponseCallback.get(JaxwsResponseCallback.java:54) > ~[cxf-rt-frontend-jaxws-3.0.0.jar:3.0.0] > at > x.x.outside.test.multispeak.OAServerTestAsyncCallback$1.run(OAServerTestAsyncCallback.java:52) > [classes/:?] > at > x.x.outside.test.multispeak.spi.AbstractMultispeakServerTest$2.run(AbstractMultispeakServerTest.java:112) > [classes/:?] > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > [?:1.6.0_33] > at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) > [?:1.6.0_33] > at java.util.concurrent.FutureTask.run(FutureTask.java:166) [?:1.6.0_33] > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) > [?:1.6.0_33] > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > [?:1.6.0_33] > at java.lang.Thread.run(Thread.java:701) [?:1.6.0_33] > Caused by: org.apache.cxf.binding.soap.SoapFault: Fault occurred while > processing. > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) > ~[cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) > ~[cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) > ~[cxf-rt-bindings-soap-3.0.0.jar:3.0.0] > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) > ~[cxf-core-3.0.0.jar:3.0.0] > at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:780) > ~[cxf-core-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.JMSConduit.processReplyMessage(JMSConduit.java:413) > ~[cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.JMSConduit.onMessage(JMSConduit.java:380) > ~[cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.cxf.transport.jms.util.MessageListenerContainer$LocalTransactionalMessageListener.onMessage(MessageListenerContainer.java:120) > ~[cxf-rt-transports-jms-3.0.0.jar:3.0.0] > at > org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1361) > ~[activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:131) > ~[activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:202) > ~[activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133) > ~[activemq-client-5.9.1.jar:5.9.1] > at > org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) > ~[activemq-client-5.9.1.jar:5.9.1] > ... 3 more > > Is this a configuration problem? Am I doing something stupid? > Thanks! > > Regards, > > André Costa Lima
