You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by "Monga, Sunita (GE Healthcare)" <su...@ge.com> on 2013/05/30 16:23:53 UTC
Error when sending to webservice using Camel CXF endpoint
Hello all,
I am using Camel 2.9.2 & CXF 2.6.2 versions and trying to send a MTOM attachment to a webservice (mock one in soap UI for testing purposes) using CXF endpoint. Deploying as a war on Tomcat 7.0.40
I followed sample code for Payload mode provided in http://camel.apache.org/cxf.html#CXF-AttachmentSupport
I see the request and response being sent and received in the tomcat console. But getting an error after response is received. See error below
Camel route:
from("direct:webServiceProcessor")
.process {
logger.debug("Inside CCG Web Service Processor")
}
//.to("cxf://localhost:9003/");
.process(new WSProcessor())
.to("cxf:bean:xdrReceiverEndpoint")
.to("mock:result");
Processor code:
static final String REQ_DOC_CID ="1340070774847";
static final String REQ_MESSAGE="<ccdaRequest xmlns=\"http://model.webservices.ihe.adapters.ccg.dataexchange.hcit.ge.com/CcdaXdrService\">"
+"<clinicalDocument>"
+"<ccDocument>"
+"<xop:Include xmlns:xop=\"http://www.w3.org/2004/08/xop/include\""
+ " href=\"cid:" + REQ_DOC_CID + "\"/>"
+"</ccDocument>"
+"</clinicalDocument>"
+"</ccdaRequest>";
public void process(Exchange exchange) throws Exception {
logger.debug("in WSProcessor");
List<Source> elements = new ArrayList<Source>();
elements.add(new DOMSource(DOMUtils.readXml(new StringReader(REQ_MESSAGE)).getDocumentElement()));
CxfPayload<SoapHeader> body = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
elements, null);
logger.debug("constructed cxfpayload");
exchange.getIn().setBody(body);
logger.debug("set body in exchange");
File file = new File("c:\\temp\\test.xml");
exchange.getIn().addAttachment(REQ_DOC_CID,
new DataHandler(new FileDataSource(file)));
logger.debug("added attachment to exchange");
}
Spring config:
<cxf:cxfEndpoint id="xdrReceiverEndpoint"
address="http://localhost:8088/mockCcdaXdrServiceSoapBinding">
<cxf:properties>
<entry key="mtom-enabled" value="true"/>
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
<cxf:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</cxf:outInterceptors>
<cxf:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</cxf:inInterceptors>
</cxf:cxfEndpoint>
Error in my log file:
2013-05-30 09:07:22 DEBUG "Inside CCG Web Service Processor" [com.ge.hcit.pil.xdrreceiverimpl.routebuilder.XDRReceiverRouteBuilder]
2013-05-30 09:07:22 DEBUG "in WSProcessor" [com.ge.hcit.pil.xdrreceiverimpl.processor.XDRReceiverProcessor]
2013-05-30 09:07:22 DEBUG "constructed cxfpayload" [com.ge.hcit.pil.xdrreceiverimpl.processor.XDRReceiverProcessor]
2013-05-30 09:07:22 DEBUG "set body in exchange" [com.ge.hcit.pil.xdrreceiverimpl.processor.XDRReceiverProcessor]
2013-05-30 09:07:22 DEBUG "added attachment to exchange" [com.ge.hcit.pil.xdrreceiverimpl.processor.XDRReceiverProcessor]
2013-05-30 09:07:23 DEBUG "Inside Exception Block : XDRReceiverRouteBuilder" [com.ge.hcit.pil.xdrreceiverimpl.routebuilder.XDRReceiverRouteBuilder]
2013-05-30 09:07:23 ERROR "Exception in route: " [com.ge.hcit.pil.xdrreceiverimpl.routebuilder.XDRReceiverRouteBuilder]
org.apache.cxf.interceptor.Fault: Unexpected element {http://model.webservices.ihe.adapters.ccg.dataexchange.hcit.ge.com/CcdaXdrService}ccdaResponse found. Expected {http://camel.apache.org/cxf/jaxws/dispatch}InvokeResponse.
at org.apache.cxf.interceptor.DocLiteralInInterceptor.validatePart(DocLiteralInInterceptor.java:258)
at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:200)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:783)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1694)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1535)
at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:426)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:351)
at java.lang.Thread.run(Thread.java:722)
2013-05-30 09:07:23 ERROR "Missing WS-Addressing headers" [org.openehealth.ipf.commons.ihe.ws.cxf.audit.AbstractAuditInterceptor]
Logs in Tomcat console
ID: 1
Address: http://localhost:8088/mockCcdaXdrServiceSoapBinding
Encoding: UTF-8
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:a8c1
1997-373b-4f85-b03e-44f3a9b1201f"; start="<ro...@cxf.apache.org>"; start-
info="text/xml"
Headers: {Accept=[*/*], breadcrumbId=[ID-HCU-1B6D2Q1-54228-1369922780484-0-1], o
rg.openehealth.ipf.platform.camel.ihe.ws.AbstractWsEndpoint.INCOMING_HTTP_HEADER
S=[{content-type=application/soap+xml;charset=UTF-8, connection=Keep-Alive, host
=localhost:8080, Content-Length=209479, user-agent=Apache-HttpClient/4.1.1 (java
1.5), accept-encoding=gzip,deflate}], org.openehealth.ipf.platform.camel.ihe.ws
.AbstractWsEndpoint.INCOMING_SOAP_HEADERS=[{}], SOAPAction=[""]}
Payload:
--uuid:a8c11997-373b-4f85-b03e-44f3a9b1201f
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
Content-Transfer-Encoding: binary
Content-ID: <ro...@cxf.apache.org>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body
><ccdaRequest xmlns="http://model.webservices.ihe.adapters.ccg.dataexchange.hcit
.ge.com/CcdaXdrService"><clinicalDocument><ccDocument><xop:Include xmlns:xop="ht
tp://www.w3.org/2004/08/xop/include" href="cid:1340070774847"/></ccDocument></cl
inicalDocument></ccdaRequest></soap:Body></soap:Envelope>
--uuid:a8c11997-373b-4f85-b03e-44f3a9b1201f
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <1340070774847>
--uuid:a8c11997-373b-4f85-b03e-44f3a9b1201f--
--------------------------------------
64851 [default-workqueue-1] INFO org.apache.cxf.services.DefaultSEIService.Defau
ltSEIPort.DefaultSEI - Inbound Message
----------------------------
ID: 1
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml; charset=utf-8
Headers: {content-type=[text/xml; charset=utf-8], Server=[Jetty(6.1.x)], transfe
r-encoding=[chunked]}
Payload: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelo
pe/" xmlns:ccd="http://model.webservices.ihe.adapters.ccg.dataexchange.hcit.ge.c
om/CcdaXdrService">
<soapenv:Header/>
<soapenv:Body>
<ccd:ccdaResponse>
<!--Optional:-->
<ccdaAcknowledgement>
<!--Optional:-->
<statusCode>0</statusCode>
<!--Optional:-->
<statusDesc>Success</statusDesc>
</ccdaAcknowledgement>
</ccd:ccdaResponse>
</soapenv:Body>
</soapenv:Envelope>
--------------------------------------
64856 [default-workqueue-1] WARN org.apache.cxf.phase.PhaseInterceptorChain - In
terceptor for {http://camel.apache.org/cxf/jaxws/dispatch}DefaultSEIService#{htt
p://camel.apache.org/cxf/jaxws/dispatch}Invoke has thrown exception, unwinding n
ow
org.apache.cxf.interceptor.Fault: Unexpected element {http://model.webservices.i
he.adapters.ccg.dataexchange.hcit.ge.com/CcdaXdrService}ccdaResponse found. Ex
pected {http://camel.apache.org/cxf/jaxws/dispatch}InvokeResponse.
at org.apache.cxf.interceptor.DocLiteralInInterceptor.validatePart(DocLi
teralInInterceptor.java:258)
at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocL
iteralInInterceptor.java:200)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
orChain.java:262)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:783)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleR
esponseInternal(HTTPConduit.java:1694)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(H
TTPConduit.java:1535)
at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQu
eueImpl.java:426)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.
java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:603)
at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.ru
n(AutomaticWorkQueueImpl.java:351)
at java.lang.Thread.run(Thread.java:722)
64931 [http-bio-8080-exec-5] WARN org.apache.cxf.ws.addressing.ContextUtils - WS
-Addressing - failed to retrieve Message Addressing Properties from context
64931 [http-bio-8080-exec-5] WARN org.apache.cxf.ws.addressing.ContextUtils - WS
-Addressing - failed to retrieve Message Addressing Properties from context
64971 [http-bio-8080-exec-5] WARN org.apache.cxf.ws.addressing.ContextUtils - WS
-Addressing - failed to retrieve Message Addressing Properties from context