I have created a CXF webservice and exposed it with camel. The webservice is
code first (JSR-181) annotated Java class, springed up in my application
context.

The class looks like this:

@WebService(name="DataExport", serviceName="DataExport",
targetNamespace="com.somecompany.dataexport.v1")
public class DataExport {
    
    public String fetchVesselRegisterV1(@WebParam(name="input") SIInput
input) {
        return "";
    }
}

I understand that the return statement is never called as camel-cxf
intercepts the message on return (?). At least in a debugger it never stops
there.

My Spring config is like this:
 <cxf:cxfEndpoint id="export-webservice" address="/DataExport"
                    
serviceClass="com.somecompany.si.integration.data.export.DataExport">
        <cxf:properties>
            <entry key="dataFormat" value="POJO"/>
        </cxf:properties>
    </cxf:cxfEndpoint>

My Route is Java DSL with spring:
...
from("cxf:bean:export-webservice?dataFormat=POJO")//
                .routeId("DataExportWSRoute")//
               
.to("bean:com.somecompany.si.integration.data.export.ExportWSProcessor");
...

The handling bean correctly picks up the data when the webservice is called,
and I am able to read input parameters sent to the WS. However things go
wrong in Websphere after I push my reply (just a  Base64 encoded String)
into the exchange: exchng.getOut().setBody(encodedXML);

I get the following exception:

2013-01-23 20:33:35,585 WARN  WebContainer : 0        
|cxf.phase.PhaseInterceptorChain|logging.LogUtils-doLog() #369 [] -
Interceptor for
{com.somecompany.dataExport.v1}DataExport#{com.somecompany.dataExport.v1}fetchVesselRegisterV1
has thrown exception, unwinding now
java.lang.IllegalArgumentException: Invalid LF not followed by whitespace
        at
com.ibm.ws.genericbnf.impl.BNFHeadersImpl.checkHeaderValue(BNFHeadersImpl.java:4507)
        at
com.ibm.ws.genericbnf.impl.BNFHeadersImpl.appendHeader(BNFHeadersImpl.java:494)
        at
com.ibm.ws.webcontainer.channel.WCCResponseImpl.addHeader(WCCResponseImpl.java:209)
        at
com.ibm.ws.webcontainer.srt.SRTServletResponse.addField(SRTServletResponse.java:296)
        at
com.ibm.ws.webcontainer.srt.SRTServletResponse.addHeader(SRTServletResponse.java:1669)
        at
org.apache.cxf.transport.http.AbstractHTTPDestination.copyResponseHeaders(AbstractHTTPDestination.java:274)
        at
org.apache.cxf.transport.http.AbstractHTTPDestination.flushHeaders(AbstractHTTPDestination.java:557)
        at
org.apache.cxf.transport.http.AbstractHTTPDestination.flushHeaders(AbstractHTTPDestination.java:524)
        at
org.apache.cxf.transport.http.AbstractHTTPDestination$WrappedOutputStream.onFirstWrite(AbstractHTTPDestination.java:659)
        at
org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42)
        at
com.ctc.wstx.sw.EncodingXmlWriter.flushBuffer(EncodingXmlWriter.java:698)
        at com.ctc.wstx.sw.EncodingXmlWriter.flush(EncodingXmlWriter.java:172)
        at com.ctc.wstx.sw.EncodingXmlWriter.close(EncodingXmlWriter.java:151)
        at
com.ctc.wstx.sw.BaseStreamWriter._finishDocument(BaseStreamWriter.java:1429)
        at
com.ctc.wstx.sw.BaseStreamWriter.writeEndDocument(BaseStreamWriter.java:553)
        at
org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:282)
        at
org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:270)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
        at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:99)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:315)
        at
org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
        at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
        at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
        at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188)
        at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
        at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
        at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
        at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
        at
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1213)
        at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:658)
        at
com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:526)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3673)
        at 
com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)
        at
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:831)
        at
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478)
        at
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:133)
        at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:457)
        at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
        at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:300)
        at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:271)
        at
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
        at
com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
        at
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
        at
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
        at
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
        at
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1593)


*Note that when running the same code in Jetty, no problem is seen.*



--
View this message in context: 
http://camel.465427.n5.nabble.com/Websphere-6-1-0-45-Unable-to-return-data-from-a-camel-cxf-component-POJO-mode-tp5726083.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to