Author: buildbot
Date: Wed Jul 22 14:20:21 2015
New Revision: 959169

Log:
Production update by buildbot for camel

Modified:
    websites/production/camel/content/book-component-appendix.html
    websites/production/camel/content/book-in-one-page.html
    websites/production/camel/content/cache/main.pageCache
    websites/production/camel/content/cxf.html

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Wed Jul 22 
14:20:21 2015
@@ -997,7 +997,7 @@ commetdComponent.setSslContextParameters
           password="keystorePassword"/>
     </camel:keyManagers>
   </camel:sslContextParameters>...
- 
+?
   <bean id="cometd" 
class="org.apache.camel.component.cometd.CometdComponent">
     <property name="sslContextParameters" 
ref="sslContextParameters"/>
   </bean>
@@ -1268,11 +1268,11 @@ template.send("direct:alias-verify&
 ]]></script>
 </div></div><p></p><h3 id="BookComponentAppendix-SeeAlso.8">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring 
Camel</a></li><li><a shape="rect" 
href="component.html">Component</a></li><li><a shape="rect" 
href="endpoint.html">Endpoint</a></li><li><a shape="rect" 
href="getting-started.html">Getting Started</a></li></ul><ul><li><a 
shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a 
shape="rect" href="data-format.html">Data Format</a></li></ul> <h2 
id="BookComponentAppendix-CXFComponent">CXF Component</h2><div 
class="confluence-information-macro confluence-information-macro-note"><span 
class="aui-icon aui-icon-small aui-iconfont-warning 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>When using CXF as a consumer, the 
<a shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows 
you to factor out how message payloads are received from their processing as a 
RESTful or SOAP web service. This has the potential of using a multitude of 
transports to cons
 ume web services. The bean component's configuration is also simpler and 
provides the fastest method to implement web services using Camel and 
CXF.</p></div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>When using CXF in streaming modes 
(see DataFormat option), then also read about <a shape="rect" 
href="stream-caching.html">Stream caching</a>.</p></div></div><p>The 
<strong>cxf:</strong> component provides integration with <a shape="rect" 
href="http://cxf.apache.org";>Apache CXF</a> for connecting to JAX-WS services 
hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437293926066 {padding: 0px;}
-div.rbtoc1437293926066 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437293926066 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1437574680528 {padding: 0px;}
+div.rbtoc1437574680528 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437574680528 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437293926066">
+/*]]>*/</style></p><div class="toc-macro rbtoc1437574680528">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookComponentAppendix-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookComponentAppendix-URIformat">URI format</a></li><li><a shape="rect" 
href="#BookComponentAppendix-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookComponentAppendix-Thedescriptionsofthedataformats">The descriptions 
of the dataformats</a>
@@ -1337,7 +1337,7 @@ div.rbtoc1437293926066 li {margin-left:
     
 &lt;/bean&gt;
 ]]></script>
-</div></div><p>Then, your endpoint can reference the 
<code>CxfHeaderFilterStrategy</code>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>Then, your endpoint can reference the 
<code>CxfHeaderFilterStrategy</code>.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
     &lt;from 
uri=&quot;cxf:bean:routerNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy&quot;/&gt;
          
@@ -1471,7 +1471,7 @@ public class WriteXmlDeclarationIntercep
 
 }
 ]]></script>
-</div></div><p>You can add a customer interceptor like this and configure it 
into you camel-cxf endpont</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>You can add a customer interceptor like this and configure it into 
you camel-cxf endpont<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;cxf:cxfEndpoint id=&quot;routerEndpoint&quot; 
address=&quot;http://localhost:${CXFTestSupport.port2}/CXFGreeterRouterTest/CamelContext/RouterPort&quot;
                
serviceClass=&quot;org.apache.hello_world_soap_http.GreeterImpl&quot;
@@ -1486,7 +1486,7 @@ public class WriteXmlDeclarationIntercep
        &lt;/cxf:properties&gt;
 &lt;/cxf:cxfEndpoint&gt;
 ]]></script>
-</div></div><p>Or adding a message header for it like this if you are using 
<strong>Camel 2.4</strong>.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>Or adding a message header for it like this if you are using 
<strong>Camel 2.4</strong>.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ // set up the response context which force 
start document
  Map&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
  map.put(&quot;org.apache.cxf.stax.force-start-document&quot;, Boolean.TRUE);
@@ -1611,7 +1611,7 @@ protected RouteBuilder createRouteBuilde
     &lt;process ref=&quot;InsertResponseOutHeaderProcessor&quot; /&gt;
 &lt;/route&gt;     
 ]]></script>
-</div></div><p>SOAP headers are propagated to and from Camel Message headers. 
The Camel message header name is "org.apache.cxf.headers.Header.list" which is 
a constant defined in CXF (org.apache.cxf.headers.Header.HEADER_LIST). The 
header value is a List of CXF SoapHeader objects 
(org.apache.cxf.binding.soap.SoapHeader). The following snippet is the 
InsertResponseOutHeaderProcessor (that insert a new SOAP header in the response 
message). The way to access SOAP headers in both 
InsertResponseOutHeaderProcessor and InsertRequestOutHeaderProcessor are 
actually the same. The only difference between the two processors is setting 
the direction of the inserted SOAP header.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>SOAP headers are propagated to and from Camel Message headers. The 
Camel message header name is "org.apache.cxf.headers.Header.list" which is a 
constant defined in CXF (org.apache.cxf.headers.Header.HEADER_LIST). The header 
value is a List of CXF SoapHeader objects 
(org.apache.cxf.binding.soap.SoapHeader). The following snippet is the 
InsertResponseOutHeaderProcessor (that insert a new SOAP header in the response 
message). The way to access SOAP headers in both 
InsertResponseOutHeaderProcessor and InsertRequestOutHeaderProcessor are 
actually the same. The only difference between the two processors is setting 
the direction of the inserted SOAP header.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 public static class InsertResponseOutHeaderProcessor implements Processor {
@@ -1667,7 +1667,7 @@ from(getRouterEndpointURI()).process(new
 })
 .to(getServiceEndpointURI());
 ]]></script>
-</div></div><h3 
id="BookComponentAppendix-SOAPheadersarenotavailableinMESSAGEmode">SOAP headers 
are not available in MESSAGE mode</h3><p>SOAP headers are not available in 
MESSAGE mode as SOAP processing is skipped.</p><h3 
id="BookComponentAppendix-HowtothrowaSOAPFaultfromCamel">How to throw a SOAP 
Fault from Camel</h3><p>If you are using a <code>camel-cxf</code> endpoint to 
consume the SOAP request, you may need to throw the SOAP Fault from the camel 
context.<br clear="none"> Basically, you can use the <code>throwFault</code> 
DSL to do that; it works for <code>POJO</code>, <code>PAYLOAD</code> and 
<code>MESSAGE</code> data format.<br clear="none"> You can define the soap 
fault like this</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div>Since Camel 2.16.0, you can also use the same way as described in 
sub-chapter "How to get and set SOAP headers in POJO mode" to set or get the 
SOAP headers.&#160;<h3 
id="BookComponentAppendix-SOAPheadersarenotavailableinMESSAGEmode">SOAP headers 
are not available in MESSAGE mode</h3><p>SOAP headers are not available in 
MESSAGE mode as SOAP processing is skipped.</p><h3 
id="BookComponentAppendix-HowtothrowaSOAPFaultfromCamel">How to throw a SOAP 
Fault from Camel</h3><p>If you are using a <code>camel-cxf</code> endpoint to 
consume the SOAP request, you may need to throw the SOAP Fault from the camel 
context.<br clear="none"> Basically, you can use the <code>throwFault</code> 
DSL to do that; it works for <code>POJO</code>, <code>PAYLOAD</code> and 
<code>MESSAGE</code> data format.<br clear="none"> You can define the soap 
fault like this</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
 Element detail = SOAP_FAULT.getOrCreateDetail();
@@ -1675,11 +1675,11 @@ Document doc = detail.getOwnerDocument()
 Text tn = doc.createTextNode(DETAIL_TEXT);
 detail.appendChild(tn);
 ]]></script>
-</div></div><p>Then throw it as you like</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>Then throw it as you like<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
 ]]></script>
-</div></div><p>If your CXF endpoint is working in the <code>MESSAGE</code> 
data format, you could set the the SOAP Fault message in the message body and 
set the response code in the message header.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>If your CXF endpoint is working in the <code>MESSAGE</code> data 
format, you could set the the SOAP Fault message in the message body and set 
the response code in the message header.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(routerEndpointURI).process(new Processor() {
 
@@ -1693,7 +1693,7 @@ from(routerEndpointURI).process(new Proc
 
 });
 ]]></script>
-</div></div><p>Same for using POJO data format. You can set the SOAPFault on 
the out body and also indicate it's a fault by calling 
Message.setFault(true):</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>Same for using POJO data format. You can set the SOAPFault on the 
out body and also indicate it's a fault by calling Message.setFault(true):<div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
from(&quot;direct:start&quot;).onException(SoapFault.class).maximumRedeliveries(0).handled(true)
     .process(new Processor() {
@@ -1749,7 +1749,7 @@ from(&quot;direct:start&quot;).onExcepti
      &lt;/cxf:properties&gt;      
      
 ]]></script>
-</div></div><p>You can produce a Camel message with attachment to send to a 
CXF endpoint in Payload mode.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>You can produce a Camel message with attachment to send to a CXF 
endpoint in Payload mode.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 Exchange exchange = 
context.createProducerTemplate().send(&quot;direct:testEndpoint&quot;, new 
Processor() {
@@ -1802,7 +1802,7 @@ Assert.assertEquals(560, image.getWidth(
 Assert.assertEquals(300, image.getHeight());
 
 ]]></script>
-</div></div><p>You can also consume a Camel message received from a CXF 
endpoint in Payload mode.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>You can also consume a Camel message received from a CXF endpoint 
in Payload mode.<div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 public static class MyProcessor implements Processor {
 
@@ -1852,7 +1852,7 @@ public static class MyProcessor implemen
     }
 }
 ]]></script>
-</div></div><p><strong>Message Mode:</strong> Attachments are not supported as 
it does not process the message at all.</p><p><strong>CXF_MESSAGE 
Mode</strong>: MTOM is supported, and Attachments can be retrieved by Camel 
Message APIs mentioned above. Note that when receiving a multipart (i.e. MTOM) 
message the default SOAPMessage to String converter will provide the complete 
multipart payload on the body. If you require just the SOAP XML as a String, 
you can set the message body with message.getSOAPPart(), and Camel convert can 
do the rest of work for you.</p><h3 
id="BookComponentAppendix-StreamingSupportinPAYLOADmode">Streaming Support in 
PAYLOAD mode</h3><p>In 2.8.2, the camel-cxf component now supports streaming of 
incoming messages when using PAYLOAD mode. Previously, the incoming messages 
would have been completely DOM parsed. For large messages, this is time 
consuming and uses a significant amount of memory. Starting in 2.8.2, the 
incoming messages can remain as a javax.xml.tr
 ansform.Source while being routed and, if nothing modifies the payload, can 
then be directly streamed out to the target destination. For common "simple 
proxy" use cases (example: from("cxf:...").to("cxf:...")), this can provide 
very significant performance increases as well as significantly lowered memory 
requirements.</p><p>However, there are cases where streaming may not be 
appropriate or desired. Due to the streaming nature, invalid incoming XML may 
not be caught until later in the processing chain. Also, certain actions may 
require the message to be DOM parsed anyway (like WS-Security or message 
tracing and such) in which case the advantages of the streaming is limited. At 
this point, there are two ways to control the streaming:</p><ul><li>Endpoint 
property: you can add "allowStreaming=false" as an endpoint property to turn 
the streaming on/off.</li></ul><ul><li>Component property: the CxfComponent 
object also has an allowStreaming property that can set the default for 
endpoints
  created from that component.</li></ul><p>Global system property: you can add 
a system property of "org.apache.camel.component.cxf.streaming" to "false" to 
turn if off. That sets the global default, but setting the endpoint property 
above will override this value for that endpoint.</p><h3 
id="BookComponentAppendix-UsingthegenericCXFDispatchmode">Using the generic CXF 
Dispatch mode</h3><p>From 2.8.0, the camel-cxf component supports the generic 
<a shape="rect" href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html";>CXF 
dispatch mode</a>&#160;that can transport messages of arbitrary structures 
(i.e., not bound to a specific XML schema). To use this mode, you simply omit 
specifying the wsdlURL and serviceClass attributes of the CXF endpoint.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><strong>Message Mode:</strong> Attachments are not supported as it 
does not process the message at all.<p><strong>CXF_MESSAGE Mode</strong>: MTOM 
is supported, and Attachments can be retrieved by Camel Message APIs mentioned 
above. Note that when receiving a multipart (i.e. MTOM) message the default 
SOAPMessage to String converter will provide the complete multipart payload on 
the body. If you require just the SOAP XML as a String, you can set the message 
body with message.getSOAPPart(), and Camel convert can do the rest of work for 
you.</p><h3 id="BookComponentAppendix-StreamingSupportinPAYLOADmode">Streaming 
Support in PAYLOAD mode</h3><p>In 2.8.2, the camel-cxf component now supports 
streaming of incoming messages when using PAYLOAD mode. Previously, the 
incoming messages would have been completely DOM parsed. For large messages, 
this is time consuming and uses a significant amount of memory. Starting in 
2.8.2, the incoming messages can remain as a javax.xml.transform
 .Source while being routed and, if nothing modifies the payload, can then be 
directly streamed out to the target destination. For common "simple proxy" use 
cases (example: from("cxf:...").to("cxf:...")), this can provide very 
significant performance increases as well as significantly lowered memory 
requirements.</p><p>However, there are cases where streaming may not be 
appropriate or desired. Due to the streaming nature, invalid incoming XML may 
not be caught until later in the processing chain. Also, certain actions may 
require the message to be DOM parsed anyway (like WS-Security or message 
tracing and such) in which case the advantages of the streaming is limited. At 
this point, there are two ways to control the streaming:</p><ul><li>Endpoint 
property: you can add "allowStreaming=false" as an endpoint property to turn 
the streaming on/off.</li></ul><ul><li>Component property: the CxfComponent 
object also has an allowStreaming property that can set the default for 
endpoints create
 d from that component.</li></ul><p>Global system property: you can add a 
system property of "org.apache.camel.component.cxf.streaming" to "false" to 
turn if off. That sets the global default, but setting the endpoint property 
above will override this value for that endpoint.</p><h3 
id="BookComponentAppendix-UsingthegenericCXFDispatchmode">Using the generic CXF 
Dispatch mode</h3><p>From 2.8.0, the camel-cxf component supports the generic 
<a shape="rect" href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html";>CXF 
dispatch mode</a>&#160;that can transport messages of arbitrary structures 
(i.e., not bound to a specific XML schema). To use this mode, you simply omit 
specifying the wsdlURL and serviceClass attributes of the CXF endpoint.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;cxf:cxfEndpoint 
id=&quot;testEndpoint&quot; 
address=&quot;http://localhost:9000/SoapContext/SoapAnyPort&quot;&gt;
      &lt;cxf:properties&gt;
        &lt;entry key=&quot;dataFormat&quot; value=&quot;PAYLOAD&quot;/&gt;
@@ -4291,7 +4291,7 @@ public class PatientLookupService {
 ]]></script>
 </div></div><p><strong>sync=true</strong> indicates that this listener is 
synchronous and therefore will return a HL7 response to the caller. The HL7 
codec is setup with <strong>encoder=#hl7encoder </strong>and<strong> 
decoder=#hl7decoder</strong>. Note that <code>hl7encoder</code> and 
<code>hl7decoder</code> are just bean IDs, so they could be named differently. 
The beans can be set in the Spring XML file:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[    &lt;bean id=&quot;hl7decoder&quot; 
class=&quot;org.apache.camel.component.hl7.HL7MLLPNettyDecoderFactory&quot;/&gt;
-    &lt;bean id=&quot;hl7encoder&quot; 
class=&quot;org.apache.camel.component.hl7.HL7MLLPNettyEncoderFactory&quot;/&gt;]]></script>
+?   &lt;bean id=&quot;hl7encoder&quot; 
class=&quot;org.apache.camel.component.hl7.HL7MLLPNettyEncoderFactory&quot;/&gt;]]></script>
 </div></div><p>The endpoint <strong>hl7NettyListener</strong> can then be used 
in a route as a consumer, as this Java DSL example illustrates:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[    
from(&quot;hl7NettyListener&quot;).beanRef(&quot;patientLookupService&quot;);
 ]]></script>
@@ -4352,7 +4352,7 @@ String patientId = msg.getQRD().getWhoSu
       .setHeader(&quot;PATIENT_ID&quot;,terser(&quot;QRD-8(0)-1&quot;))
       .to(&quot;mock:test1&quot;);
 
-   // continue processing if extracted field equals a message header
+  ?// continue processing if extracted field equals a message header
    from(&quot;direct:test2&quot;)
       
.filter(terser(&quot;QRD-8(0)-1&quot;).isEqualTo(header(&quot;PATIENT_ID&quot;))
       .to(&quot;mock:test2&quot;);
@@ -4625,9 +4625,9 @@ ProtocolSocketFactory factory =
 
 Protocol.registerProtocol(&quot;https&quot;,
         new Protocol(
-        &quot;https&quot;,
-        factory,
-        443));
+??????? &quot;https&quot;,
+??????? factory,
+??????? 443));
 
 from(&quot;direct:start&quot;)
         
.to(&quot;https://mail.google.com/mail/&quot;).to(&quot;mock:results&quot;);
@@ -6184,7 +6184,7 @@ but the following listed types were not
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[public class Jt400RouteBuilder extends 
RouteBuilder {
     @Override
     public void configure() throws Exception {
-       
from(&quot;direct:work&quot;).to(&quot;jt400://GRUPO:ATWORK@server/QSYS.LIB/assets.LIB/compute.PGM?fieldsLength=10,10,512&amp;ouputFieldsIdx=2,3&quot;).to(“direct:play”);
+       
from(&quot;direct:work&quot;).to(&quot;jt400://GRUPO:ATWORK@server/QSYS.LIB/assets.LIB/compute.PGM?fieldsLength=10,10,512&amp;ouputFieldsIdx=2,3&quot;).to(?direct:play?);
     }
 }
 ]]></script>

Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Wed Jul 22 14:20:21 
2015
@@ -3685,11 +3685,11 @@ The tutorial has been designed in two pa
 While not actual tutorials you might find working through the source of the 
various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
 
 <h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring 
Remoting with JMS</h2><p>&#160;</p><div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">Thanks</p><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This tutorial was kindly donated 
to Apache Camel by Martin Gilday.</p></div></div><h2 
id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the 
reader through the stages of creating a project which uses Camel to facilitate 
the routing of messages from a JMS queue to a <a shape="rect" 
class="external-link" href="http://www.springramework.org"; 
rel="nofollow">Spring</a> service. The route works in a synchronous fashion 
returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437488267574 {padding: 0px;}
-div.rbtoc1437488267574 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437488267574 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1437574714082 {padding: 0px;}
+div.rbtoc1437574714082 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437574714082 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437488267574">
+/*]]>*/</style></p><div class="toc-macro rbtoc1437574714082">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring 
Remoting with JMS</a></li><li><a shape="rect" 
href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect" 
href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" 
href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" 
href="#BookInOnePage-About">About</a></li><li><a shape="rect" 
href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with 
Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the 
Server</a>
@@ -5789,11 +5789,11 @@ So we completed the last piece in the pi
 <p>This example has been removed from <strong>Camel 2.9</strong> onwards. 
Apache Axis 1.4 is a very old and unsupported framework. We encourage users to 
use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1437488268537 {padding: 0px;}
-div.rbtoc1437488268537 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437488268537 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1437574715278 {padding: 0px;}
+div.rbtoc1437574715278 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437574715278 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1437488268537">
+/*]]>*/</style><div class="toc-macro rbtoc1437574715278">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 
1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect" 
href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect" 
href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect" 
href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to 
run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect" 
href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect" 
href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a 
shape="rect" href="#BookInOnePage-RunningtheExample">Running the 
Example</a></li></ul>
@@ -17791,11 +17791,11 @@ template.send(&quot;direct:alias-verify&
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.28">See Also</h3>
 <ul><li><a shape="rect" href="configuring-camel.html">Configuring 
Camel</a></li><li><a shape="rect" 
href="component.html">Component</a></li><li><a shape="rect" 
href="endpoint.html">Endpoint</a></li><li><a shape="rect" 
href="getting-started.html">Getting Started</a></li></ul><ul><li><a 
shape="rect" href="crypto.html">Crypto</a> Crypto is also available as a <a 
shape="rect" href="data-format.html">Data Format</a></li></ul> <h2 
id="BookInOnePage-CXFComponent">CXF Component</h2><div 
class="confluence-information-macro confluence-information-macro-note"><span 
class="aui-icon aui-icon-small aui-iconfont-warning 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>When using CXF as a consumer, the 
<a shape="rect" href="cxf-bean-component.html">CXF Bean Component</a> allows 
you to factor out how message payloads are received from their processing as a 
RESTful or SOAP web service. This has the potential of using a multitude of 
transports to consume web 
 services. The bean component's configuration is also simpler and provides the 
fastest method to implement web services using Camel and 
CXF.</p></div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>When using CXF in streaming modes 
(see DataFormat option), then also read about <a shape="rect" 
href="stream-caching.html">Stream caching</a>.</p></div></div><p>The 
<strong>cxf:</strong> component provides integration with <a shape="rect" 
href="http://cxf.apache.org";>Apache CXF</a> for connecting to JAX-WS services 
hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437488294923 {padding: 0px;}
-div.rbtoc1437488294923 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437488294923 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1437574736517 {padding: 0px;}
+div.rbtoc1437574736517 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1437574736517 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1437488294923">
+/*]]>*/</style></p><div class="toc-macro rbtoc1437574736517">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect" 
href="#BookInOnePage-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the 
dataformats</a>
@@ -17860,7 +17860,7 @@ div.rbtoc1437488294923 li {margin-left:
     
 &lt;/bean&gt;
 ]]></script>
-</div></div><p>Then, your endpoint can reference the 
<code>CxfHeaderFilterStrategy</code>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>Then, your endpoint can reference the 
<code>CxfHeaderFilterStrategy</code>.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
     &lt;from 
uri=&quot;cxf:bean:routerNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy&quot;/&gt;
          
@@ -17994,7 +17994,7 @@ public class WriteXmlDeclarationIntercep
 
 }
 ]]></script>
-</div></div><p>You can add a customer interceptor like this and configure it 
into you camel-cxf endpont</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>You can add a customer interceptor like this and configure it into 
you camel-cxf endpont<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;cxf:cxfEndpoint id=&quot;routerEndpoint&quot; 
address=&quot;http://localhost:${CXFTestSupport.port2}/CXFGreeterRouterTest/CamelContext/RouterPort&quot;
                
serviceClass=&quot;org.apache.hello_world_soap_http.GreeterImpl&quot;
@@ -18009,7 +18009,7 @@ public class WriteXmlDeclarationIntercep
        &lt;/cxf:properties&gt;
 &lt;/cxf:cxfEndpoint&gt;
 ]]></script>
-</div></div><p>Or adding a message header for it like this if you are using 
<strong>Camel 2.4</strong>.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>Or adding a message header for it like this if you are using 
<strong>Camel 2.4</strong>.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ // set up the response context which force 
start document
  Map&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
  map.put(&quot;org.apache.cxf.stax.force-start-document&quot;, Boolean.TRUE);
@@ -18134,7 +18134,7 @@ protected RouteBuilder createRouteBuilde
     &lt;process ref=&quot;InsertResponseOutHeaderProcessor&quot; /&gt;
 &lt;/route&gt;     
 ]]></script>
-</div></div><p>SOAP headers are propagated to and from Camel Message headers. 
The Camel message header name is "org.apache.cxf.headers.Header.list" which is 
a constant defined in CXF (org.apache.cxf.headers.Header.HEADER_LIST). The 
header value is a List of CXF SoapHeader objects 
(org.apache.cxf.binding.soap.SoapHeader). The following snippet is the 
InsertResponseOutHeaderProcessor (that insert a new SOAP header in the response 
message). The way to access SOAP headers in both 
InsertResponseOutHeaderProcessor and InsertRequestOutHeaderProcessor are 
actually the same. The only difference between the two processors is setting 
the direction of the inserted SOAP header.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>SOAP headers are propagated to and from Camel Message headers. The 
Camel message header name is "org.apache.cxf.headers.Header.list" which is a 
constant defined in CXF (org.apache.cxf.headers.Header.HEADER_LIST). The header 
value is a List of CXF SoapHeader objects 
(org.apache.cxf.binding.soap.SoapHeader). The following snippet is the 
InsertResponseOutHeaderProcessor (that insert a new SOAP header in the response 
message). The way to access SOAP headers in both 
InsertResponseOutHeaderProcessor and InsertRequestOutHeaderProcessor are 
actually the same. The only difference between the two processors is setting 
the direction of the inserted SOAP header.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 public static class InsertResponseOutHeaderProcessor implements Processor {
@@ -18190,7 +18190,7 @@ from(getRouterEndpointURI()).process(new
 })
 .to(getServiceEndpointURI());
 ]]></script>
-</div></div><h3 
id="BookInOnePage-SOAPheadersarenotavailableinMESSAGEmode">SOAP headers are not 
available in MESSAGE mode</h3><p>SOAP headers are not available in MESSAGE mode 
as SOAP processing is skipped.</p><h3 
id="BookInOnePage-HowtothrowaSOAPFaultfromCamel">How to throw a SOAP Fault from 
Camel</h3><p>If you are using a <code>camel-cxf</code> endpoint to consume the 
SOAP request, you may need to throw the SOAP Fault from the camel context.<br 
clear="none"> Basically, you can use the <code>throwFault</code> DSL to do 
that; it works for <code>POJO</code>, <code>PAYLOAD</code> and 
<code>MESSAGE</code> data format.<br clear="none"> You can define the soap 
fault like this</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div>Since Camel 2.16.0, you can also use the same way as described in 
sub-chapter "How to get and set SOAP headers in POJO mode" to set or get the 
SOAP headers.&#160;<h3 
id="BookInOnePage-SOAPheadersarenotavailableinMESSAGEmode">SOAP headers are not 
available in MESSAGE mode</h3><p>SOAP headers are not available in MESSAGE mode 
as SOAP processing is skipped.</p><h3 
id="BookInOnePage-HowtothrowaSOAPFaultfromCamel">How to throw a SOAP Fault from 
Camel</h3><p>If you are using a <code>camel-cxf</code> endpoint to consume the 
SOAP request, you may need to throw the SOAP Fault from the camel context.<br 
clear="none"> Basically, you can use the <code>throwFault</code> DSL to do 
that; it works for <code>POJO</code>, <code>PAYLOAD</code> and 
<code>MESSAGE</code> data format.<br clear="none"> You can define the soap 
fault like this</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
 Element detail = SOAP_FAULT.getOrCreateDetail();
@@ -18198,11 +18198,11 @@ Document doc = detail.getOwnerDocument()
 Text tn = doc.createTextNode(DETAIL_TEXT);
 detail.appendChild(tn);
 ]]></script>
-</div></div><p>Then throw it as you like</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>Then throw it as you like<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
 ]]></script>
-</div></div><p>If your CXF endpoint is working in the <code>MESSAGE</code> 
data format, you could set the the SOAP Fault message in the message body and 
set the response code in the message header.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>If your CXF endpoint is working in the <code>MESSAGE</code> data 
format, you could set the the SOAP Fault message in the message body and set 
the response code in the message header.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(routerEndpointURI).process(new Processor() {
 
@@ -18216,7 +18216,7 @@ from(routerEndpointURI).process(new Proc
 
 });
 ]]></script>
-</div></div><p>Same for using POJO data format. You can set the SOAPFault on 
the out body and also indicate it's a fault by calling 
Message.setFault(true):</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>Same for using POJO data format. You can set the SOAPFault on the 
out body and also indicate it's a fault by calling Message.setFault(true):<div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
from(&quot;direct:start&quot;).onException(SoapFault.class).maximumRedeliveries(0).handled(true)
     .process(new Processor() {
@@ -18272,7 +18272,7 @@ from(&quot;direct:start&quot;).onExcepti
      &lt;/cxf:properties&gt;      
      
 ]]></script>
-</div></div><p>You can produce a Camel message with attachment to send to a 
CXF endpoint in Payload mode.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>You can produce a Camel message with attachment to send to a CXF 
endpoint in Payload mode.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 Exchange exchange = 
context.createProducerTemplate().send(&quot;direct:testEndpoint&quot;, new 
Processor() {
@@ -18325,7 +18325,7 @@ Assert.assertEquals(560, image.getWidth(
 Assert.assertEquals(300, image.getHeight());
 
 ]]></script>
-</div></div><p>You can also consume a Camel message received from a CXF 
endpoint in Payload mode.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>You can also consume a Camel message received from a CXF endpoint 
in Payload mode.<div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 public static class MyProcessor implements Processor {
 
@@ -18375,7 +18375,7 @@ public static class MyProcessor implemen
     }
 }
 ]]></script>
-</div></div><p><strong>Message Mode:</strong> Attachments are not supported as 
it does not process the message at all.</p><p><strong>CXF_MESSAGE 
Mode</strong>: MTOM is supported, and Attachments can be retrieved by Camel 
Message APIs mentioned above. Note that when receiving a multipart (i.e. MTOM) 
message the default SOAPMessage to String converter will provide the complete 
multipart payload on the body. If you require just the SOAP XML as a String, 
you can set the message body with message.getSOAPPart(), and Camel convert can 
do the rest of work for you.</p><h3 
id="BookInOnePage-StreamingSupportinPAYLOADmode">Streaming Support in PAYLOAD 
mode</h3><p>In 2.8.2, the camel-cxf component now supports streaming of 
incoming messages when using PAYLOAD mode. Previously, the incoming messages 
would have been completely DOM parsed. For large messages, this is time 
consuming and uses a significant amount of memory. Starting in 2.8.2, the 
incoming messages can remain as a javax.xml.transform.
 Source while being routed and, if nothing modifies the payload, can then be 
directly streamed out to the target destination. For common "simple proxy" use 
cases (example: from("cxf:...").to("cxf:...")), this can provide very 
significant performance increases as well as significantly lowered memory 
requirements.</p><p>However, there are cases where streaming may not be 
appropriate or desired. Due to the streaming nature, invalid incoming XML may 
not be caught until later in the processing chain. Also, certain actions may 
require the message to be DOM parsed anyway (like WS-Security or message 
tracing and such) in which case the advantages of the streaming is limited. At 
this point, there are two ways to control the streaming:</p><ul><li>Endpoint 
property: you can add "allowStreaming=false" as an endpoint property to turn 
the streaming on/off.</li></ul><ul><li>Component property: the CxfComponent 
object also has an allowStreaming property that can set the default for 
endpoints created
  from that component.</li></ul><p>Global system property: you can add a system 
property of "org.apache.camel.component.cxf.streaming" to "false" to turn if 
off. That sets the global default, but setting the endpoint property above will 
override this value for that endpoint.</p><h3 
id="BookInOnePage-UsingthegenericCXFDispatchmode">Using the generic CXF 
Dispatch mode</h3><p>From 2.8.0, the camel-cxf component supports the generic 
<a shape="rect" href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html";>CXF 
dispatch mode</a>&#160;that can transport messages of arbitrary structures 
(i.e., not bound to a specific XML schema). To use this mode, you simply omit 
specifying the wsdlURL and serviceClass attributes of the CXF endpoint.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><strong>Message Mode:</strong> Attachments are not supported as it 
does not process the message at all.<p><strong>CXF_MESSAGE Mode</strong>: MTOM 
is supported, and Attachments can be retrieved by Camel Message APIs mentioned 
above. Note that when receiving a multipart (i.e. MTOM) message the default 
SOAPMessage to String converter will provide the complete multipart payload on 
the body. If you require just the SOAP XML as a String, you can set the message 
body with message.getSOAPPart(), and Camel convert can do the rest of work for 
you.</p><h3 id="BookInOnePage-StreamingSupportinPAYLOADmode">Streaming Support 
in PAYLOAD mode</h3><p>In 2.8.2, the camel-cxf component now supports streaming 
of incoming messages when using PAYLOAD mode. Previously, the incoming messages 
would have been completely DOM parsed. For large messages, this is time 
consuming and uses a significant amount of memory. Starting in 2.8.2, the 
incoming messages can remain as a javax.xml.transform.Source 
 while being routed and, if nothing modifies the payload, can then be directly 
streamed out to the target destination. For common "simple proxy" use cases 
(example: from("cxf:...").to("cxf:...")), this can provide very significant 
performance increases as well as significantly lowered memory 
requirements.</p><p>However, there are cases where streaming may not be 
appropriate or desired. Due to the streaming nature, invalid incoming XML may 
not be caught until later in the processing chain. Also, certain actions may 
require the message to be DOM parsed anyway (like WS-Security or message 
tracing and such) in which case the advantages of the streaming is limited. At 
this point, there are two ways to control the streaming:</p><ul><li>Endpoint 
property: you can add "allowStreaming=false" as an endpoint property to turn 
the streaming on/off.</li></ul><ul><li>Component property: the CxfComponent 
object also has an allowStreaming property that can set the default for 
endpoints created from t
 hat component.</li></ul><p>Global system property: you can add a system 
property of "org.apache.camel.component.cxf.streaming" to "false" to turn if 
off. That sets the global default, but setting the endpoint property above will 
override this value for that endpoint.</p><h3 
id="BookInOnePage-UsingthegenericCXFDispatchmode">Using the generic CXF 
Dispatch mode</h3><p>From 2.8.0, the camel-cxf component supports the generic 
<a shape="rect" href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html";>CXF 
dispatch mode</a>&#160;that can transport messages of arbitrary structures 
(i.e., not bound to a specific XML schema). To use this mode, you simply omit 
specifying the wsdlURL and serviceClass attributes of the CXF endpoint.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;cxf:cxfEndpoint 
id=&quot;testEndpoint&quot; 
address=&quot;http://localhost:9000/SoapContext/SoapAnyPort&quot;&gt;
      &lt;cxf:properties&gt;
        &lt;entry key=&quot;dataFormat&quot; value=&quot;PAYLOAD&quot;/&gt;

Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/camel/content/cxf.html
==============================================================================
--- websites/production/camel/content/cxf.html (original)
+++ websites/production/camel/content/cxf.html Wed Jul 22 14:20:21 2015
@@ -141,7 +141,7 @@
     
 &lt;/bean&gt;
 ]]></script>
-</div></div><p>Then, your endpoint can reference the 
<code>CxfHeaderFilterStrategy</code>.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>Then, your endpoint can reference the 
<code>CxfHeaderFilterStrategy</code>.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;route&gt;
     &lt;from 
uri=&quot;cxf:bean:routerNoRelayEndpoint?headerFilterStrategy=#dropAllMessageHeadersStrategy&quot;/&gt;
          
@@ -275,7 +275,7 @@ public class WriteXmlDeclarationIntercep
 
 }
 ]]></script>
-</div></div><p>You can add a customer interceptor like this and configure it 
into you camel-cxf endpont</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>You can add a customer interceptor like this and configure it into 
you camel-cxf endpont<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 &lt;cxf:cxfEndpoint id=&quot;routerEndpoint&quot; 
address=&quot;http://localhost:${CXFTestSupport.port2}/CXFGreeterRouterTest/CamelContext/RouterPort&quot;
                
serviceClass=&quot;org.apache.hello_world_soap_http.GreeterImpl&quot;
@@ -290,7 +290,7 @@ public class WriteXmlDeclarationIntercep
        &lt;/cxf:properties&gt;
 &lt;/cxf:cxfEndpoint&gt;
 ]]></script>
-</div></div><p>Or adding a message header for it like this if you are using 
<strong>Camel 2.4</strong>.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>Or adding a message header for it like this if you are using 
<strong>Camel 2.4</strong>.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[ // set up the response context which force 
start document
  Map&lt;String, Object&gt; map = new HashMap&lt;String, Object&gt;();
  map.put(&quot;org.apache.cxf.stax.force-start-document&quot;, Boolean.TRUE);
@@ -415,7 +415,7 @@ protected RouteBuilder createRouteBuilde
     &lt;process ref=&quot;InsertResponseOutHeaderProcessor&quot; /&gt;
 &lt;/route&gt;     
 ]]></script>
-</div></div><p>SOAP headers are propagated to and from Camel Message headers. 
The Camel message header name is "org.apache.cxf.headers.Header.list" which is 
a constant defined in CXF (org.apache.cxf.headers.Header.HEADER_LIST). The 
header value is a List of CXF SoapHeader objects 
(org.apache.cxf.binding.soap.SoapHeader). The following snippet is the 
InsertResponseOutHeaderProcessor (that insert a new SOAP header in the response 
message). The way to access SOAP headers in both 
InsertResponseOutHeaderProcessor and InsertRequestOutHeaderProcessor are 
actually the same. The only difference between the two processors is setting 
the direction of the inserted SOAP header.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>SOAP headers are propagated to and from Camel Message headers. The 
Camel message header name is "org.apache.cxf.headers.Header.list" which is a 
constant defined in CXF (org.apache.cxf.headers.Header.HEADER_LIST). The header 
value is a List of CXF SoapHeader objects 
(org.apache.cxf.binding.soap.SoapHeader). The following snippet is the 
InsertResponseOutHeaderProcessor (that insert a new SOAP header in the response 
message). The way to access SOAP headers in both 
InsertResponseOutHeaderProcessor and InsertRequestOutHeaderProcessor are 
actually the same. The only difference between the two processors is setting 
the direction of the inserted SOAP header.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 public static class InsertResponseOutHeaderProcessor implements Processor {
@@ -471,7 +471,7 @@ from(getRouterEndpointURI()).process(new
 })
 .to(getServiceEndpointURI());
 ]]></script>
-</div></div><h3 id="CXF-SOAPheadersarenotavailableinMESSAGEmode">SOAP headers 
are not available in MESSAGE mode</h3><p>SOAP headers are not available in 
MESSAGE mode as SOAP processing is skipped.</p><h3 
id="CXF-HowtothrowaSOAPFaultfromCamel">How to throw a SOAP Fault from 
Camel</h3><p>If you are using a <code>camel-cxf</code> endpoint to consume the 
SOAP request, you may need to throw the SOAP Fault from the camel context.<br 
clear="none"> Basically, you can use the <code>throwFault</code> DSL to do 
that; it works for <code>POJO</code>, <code>PAYLOAD</code> and 
<code>MESSAGE</code> data format.<br clear="none"> You can define the soap 
fault like this</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div>Since Camel 2.16.0, you can also use the same way as described in 
sub-chapter "How to get and set SOAP headers in POJO mode" to set or get the 
SOAP headers.&#160;<h3 id="CXF-SOAPheadersarenotavailableinMESSAGEmode">SOAP 
headers are not available in MESSAGE mode</h3><p>SOAP headers are not available 
in MESSAGE mode as SOAP processing is skipped.</p><h3 
id="CXF-HowtothrowaSOAPFaultfromCamel">How to throw a SOAP Fault from 
Camel</h3><p>If you are using a <code>camel-cxf</code> endpoint to consume the 
SOAP request, you may need to throw the SOAP Fault from the camel context.<br 
clear="none"> Basically, you can use the <code>throwFault</code> DSL to do 
that; it works for <code>POJO</code>, <code>PAYLOAD</code> and 
<code>MESSAGE</code> data format.<br clear="none"> You can define the soap 
fault like this</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
 Element detail = SOAP_FAULT.getOrCreateDetail();
@@ -479,11 +479,11 @@ Document doc = detail.getOwnerDocument()
 Text tn = doc.createTextNode(DETAIL_TEXT);
 detail.appendChild(tn);
 ]]></script>
-</div></div><p>Then throw it as you like</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>Then throw it as you like<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
 ]]></script>
-</div></div><p>If your CXF endpoint is working in the <code>MESSAGE</code> 
data format, you could set the the SOAP Fault message in the message body and 
set the response code in the message header.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>If your CXF endpoint is working in the <code>MESSAGE</code> data 
format, you could set the the SOAP Fault message in the message body and set 
the response code in the message header.<div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 from(routerEndpointURI).process(new Processor() {
 
@@ -497,7 +497,7 @@ from(routerEndpointURI).process(new Proc
 
 });
 ]]></script>
-</div></div><p>Same for using POJO data format. You can set the SOAPFault on 
the out body and also indicate it's a fault by calling 
Message.setFault(true):</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>Same for using POJO data format. You can set the SOAPFault on the 
out body and also indicate it's a fault by calling Message.setFault(true):<div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
from(&quot;direct:start&quot;).onException(SoapFault.class).maximumRedeliveries(0).handled(true)
     .process(new Processor() {
@@ -553,7 +553,7 @@ from(&quot;direct:start&quot;).onExcepti
      &lt;/cxf:properties&gt;      
      
 ]]></script>
-</div></div><p>You can produce a Camel message with attachment to send to a 
CXF endpoint in Payload mode.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div>You can produce a Camel message with attachment to send to a CXF 
endpoint in Payload mode.<div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 
 Exchange exchange = 
context.createProducerTemplate().send(&quot;direct:testEndpoint&quot;, new 
Processor() {
@@ -606,7 +606,7 @@ Assert.assertEquals(560, image.getWidth(
 Assert.assertEquals(300, image.getHeight());
 
 ]]></script>
-</div></div><p>You can also consume a Camel message received from a CXF 
endpoint in Payload mode.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div>You can also consume a Camel message received from a CXF endpoint 
in Payload mode.<div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
 public static class MyProcessor implements Processor {
 
@@ -656,7 +656,7 @@ public static class MyProcessor implemen
     }
 }
 ]]></script>
-</div></div><p><strong>Message Mode:</strong> Attachments are not supported as 
it does not process the message at all.</p><p><strong>CXF_MESSAGE 
Mode</strong>: MTOM is supported, and Attachments can be retrieved by Camel 
Message APIs mentioned above. Note that when receiving a multipart (i.e. MTOM) 
message the default SOAPMessage to String converter will provide the complete 
multipart payload on the body. If you require just the SOAP XML as a String, 
you can set the message body with message.getSOAPPart(), and Camel convert can 
do the rest of work for you.</p><h3 
id="CXF-StreamingSupportinPAYLOADmode">Streaming Support in PAYLOAD 
mode</h3><p>In 2.8.2, the camel-cxf component now supports streaming of 
incoming messages when using PAYLOAD mode. Previously, the incoming messages 
would have been completely DOM parsed. For large messages, this is time 
consuming and uses a significant amount of memory. Starting in 2.8.2, the 
incoming messages can remain as a javax.xml.transform.Source whi
 le being routed and, if nothing modifies the payload, can then be directly 
streamed out to the target destination. For common "simple proxy" use cases 
(example: from("cxf:...").to("cxf:...")), this can provide very significant 
performance increases as well as significantly lowered memory 
requirements.</p><p>However, there are cases where streaming may not be 
appropriate or desired. Due to the streaming nature, invalid incoming XML may 
not be caught until later in the processing chain. Also, certain actions may 
require the message to be DOM parsed anyway (like WS-Security or message 
tracing and such) in which case the advantages of the streaming is limited. At 
this point, there are two ways to control the streaming:</p><ul><li>Endpoint 
property: you can add "allowStreaming=false" as an endpoint property to turn 
the streaming on/off.</li></ul><ul><li>Component property: the CxfComponent 
object also has an allowStreaming property that can set the default for 
endpoints created from that
  component.</li></ul><p>Global system property: you can add a system property 
of "org.apache.camel.component.cxf.streaming" to "false" to turn if off. That 
sets the global default, but setting the endpoint property above will override 
this value for that endpoint.</p><h3 
id="CXF-UsingthegenericCXFDispatchmode">Using the generic CXF Dispatch 
mode</h3><p>From 2.8.0, the camel-cxf component supports the generic <a 
shape="rect" href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html";>CXF 
dispatch mode</a>&#160;that can transport messages of arbitrary structures 
(i.e., not bound to a specific XML schema). To use this mode, you simply omit 
specifying the wsdlURL and serviceClass attributes of the CXF endpoint.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><strong>Message Mode:</strong> Attachments are not supported as it 
does not process the message at all.<p><strong>CXF_MESSAGE Mode</strong>: MTOM 
is supported, and Attachments can be retrieved by Camel Message APIs mentioned 
above. Note that when receiving a multipart (i.e. MTOM) message the default 
SOAPMessage to String converter will provide the complete multipart payload on 
the body. If you require just the SOAP XML as a String, you can set the message 
body with message.getSOAPPart(), and Camel convert can do the rest of work for 
you.</p><h3 id="CXF-StreamingSupportinPAYLOADmode">Streaming Support in PAYLOAD 
mode</h3><p>In 2.8.2, the camel-cxf component now supports streaming of 
incoming messages when using PAYLOAD mode. Previously, the incoming messages 
would have been completely DOM parsed. For large messages, this is time 
consuming and uses a significant amount of memory. Starting in 2.8.2, the 
incoming messages can remain as a javax.xml.transform.Source while bein
 g routed and, if nothing modifies the payload, can then be directly streamed 
out to the target destination. For common "simple proxy" use cases (example: 
from("cxf:...").to("cxf:...")), this can provide very significant performance 
increases as well as significantly lowered memory requirements.</p><p>However, 
there are cases where streaming may not be appropriate or desired. Due to the 
streaming nature, invalid incoming XML may not be caught until later in the 
processing chain. Also, certain actions may require the message to be DOM 
parsed anyway (like WS-Security or message tracing and such) in which case the 
advantages of the streaming is limited. At this point, there are two ways to 
control the streaming:</p><ul><li>Endpoint property: you can add 
"allowStreaming=false" as an endpoint property to turn the streaming 
on/off.</li></ul><ul><li>Component property: the CxfComponent object also has 
an allowStreaming property that can set the default for endpoints created from 
that compon
 ent.</li></ul><p>Global system property: you can add a system property of 
"org.apache.camel.component.cxf.streaming" to "false" to turn if off. That sets 
the global default, but setting the endpoint property above will override this 
value for that endpoint.</p><h3 id="CXF-UsingthegenericCXFDispatchmode">Using 
the generic CXF Dispatch mode</h3><p>From 2.8.0, the camel-cxf component 
supports the generic <a shape="rect" 
href="https://cxf.apache.org/docs/jax-ws-dispatch-api.html";>CXF dispatch 
mode</a>&#160;that can transport messages of arbitrary structures (i.e., not 
bound to a specific XML schema). To use this mode, you simply omit specifying 
the wsdlURL and serviceClass attributes of the CXF endpoint.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[&lt;cxf:cxfEndpoint 
id=&quot;testEndpoint&quot; 
address=&quot;http://localhost:9000/SoapContext/SoapAnyPort&quot;&gt;
      &lt;cxf:properties&gt;
        &lt;entry key=&quot;dataFormat&quot; value=&quot;PAYLOAD&quot;/&gt;


Reply via email to