Hello everyone,

After few days of struggle a I decided to ask for clue/advice.. I have read
a lot of messages but I still can’t find relevant answer.

So here is the background:

I have configured Camel Proxy/router service with spring xml file.

cxfEndpoint -> hedader based routing -> body xslt transformation ->
cxfEndpoint (backend service)

This solution worked great until it turned out, that I have to set few
custom attributes in custom namepace In SOAP header of message forwarded to
backend service.

And here comes my question:

*How to set custom soap header information (in custom naspace) in camel
route (using spring configuration)?* For example, I want to add such header
forwarded to backend service by my camel route:

<soapenv:Envelope xmlns:soapenv=http://schemas.xmlsoap.org/soap/envelope/>
<soapenv:Header>
<CustomUsernameToken xmlns="http://custom.com/webservices";>custom_value</
CustomUsernameToken>
<CustomPasswordText xmlns="http://custom.com/webservices";>custom_value</
CustomPasswordText>
</soapenv:Header>
<soapenv:Body>
…
</soapenv:Body>
</soapenv:Envelope>

Here are snippets with my current configuration
(apache-servicemix-4.4.1-fuse):

Exposed endpoint:
<cxf:cxfEndpoint id="crmServices" address="https://0.0.0.0:8443/crmServices";
serviceName="s:crmServices" wsdlURL="{{custom.path}}/crmServices.wsdl"
xmlns:s="http://custom/crmServices/";>

<cxf:inInterceptors>
<bean class="org.apache.cxf.transport.common.gzip.GZIPInInterceptor" />
</cxf:inInterceptors>
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD" />
</cxf:properties>

</cxf:cxfEndpoint>

Backend endpoint:
<cxf:cxfEndpoint id="CustomUI_CKM_Insert_Incident"
serviceName="s:CKM_spcInsert_spcIncident"
address="http://10.111.112.11/custom";
wsdlURL="{{custom.path}}/CustomUI_CKM_Insert_Incident.WSDL"
xmlns:s=http://custom.com/CustomUI>

<cxf:inInterceptors>
<bean class="org.apache.cxf.transport.common.gzip.GZIPInInterceptor" />
</cxf:inInterceptors>
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD" />
</cxf:properties>

</cxf:cxfEndpoint>

And a fragment of working Camel route:

<camelContext xmlns="http://camel.apache.org/schema/spring";
trace="true" streamCache="true">
<propertyPlaceholder id="properties"
location="file:r:/smx/etc/custom.properties" propertiesParserRef="jasypt" />

<route>
<from uri="cxf:bean:crmServices?dataFormat=PAYLOAD" />

<choice>

<when>
<xpath>/crm:CreateRequest/in/caseType/text() =
'CreateRequestIncident'</xpath>

<setHeader headerName="operationName">
<constant>InsertIncident</constant>
</setHeader>

<setHeader headerName="operationNamespace">
<constant>http://custom.com/CustomUI</constant>
</setHeader>

<setHeader headerName="SOAPAction">
<constant>http://custom.com/CustomUI/InsertIncident</constant>
</setHeader>

<convertBodyTo type="String" charset="UTF-8" />

<to uri="xslt:file:{{custom.path}}/createRequestIncident.xsl" />

<convertBodyTo type="org.apache.camel.component.cxf.CxfPayload" />

<to uri="cxf:bean:CustomUI_CKM_Insert_Incident" />

<to uri="xslt:file:{{custom.path}}/createRequestIncidentResponse.xsl" />

</when>
…

--
View this message in context: 
http://servicemix.396122.n5.nabble.com/How-to-set-custom-soap-header-information-in-custom-naspace-in-camel-route-using-spring-configuratio-tp5648254p5648254.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to