Author: buildbot Date: Fri Feb 12 11:22:26 2016 New Revision: 980203 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/cdi.html websites/production/camel/content/xslt.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 Fri Feb 12 11:22:26 2016 @@ -1016,11 +1016,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.rbtoc1455182285720 {padding: 0px;} -div.rbtoc1455182285720 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1455182285720 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1455275930877 {padding: 0px;} +div.rbtoc1455275930877 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1455275930877 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1455182285720"> +/*]]>*/</style></p><div class="toc-macro rbtoc1455275930877"> <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> @@ -10770,7 +10770,7 @@ from("activemq:My.Queue"). <!-- use the same version as your Camel core version --> </dependency> ]]></script> -</div></div><p>From Camel 2.9 onwards the <a shape="rect" href="xslt.html">XSLT</a> component is provided directly in the camel-core.</p><h3 id="BookComponentAppendix-Options.60">Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>converter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/converter/jaxp/XmlConverter.html">XmlConverter</a>. Will lookup for the converter in the <a shape="rect" href="registry.html">Re gistry</a>. The provided converted must be of type org.apache.camel.converter.jaxp.XmlConverter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will lookup for the transformerFactory in the <a shape="rect" href="registry.html">Registry</a>. The provided transformer factory must be of type javax.xml.transform.TransformerFactory.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactoryClass</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape= "rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will create a TransformerFactoryClass instance and set it to the converter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>uriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>DefaultXsltUriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17</strong>: <span style="color: rgb(51,51,51);"> Reference to a </span><code style="text-align: left;">org.apache.camel.component.</code><code style="text-align: left;">xslt</code><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);"><code>XsltUriResolverFactory</code> which creates an URI resolver per endpoint</span><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);">The default implementation returns an instance of <code><span>org. apache.camel.component.xslt.</span></code></span><span style="color: rgb(51,51,51);"><span><code>DefaultXsltUriResolverFactory</code> which creates the default URI resolver <span style="color: rgb(51,51,51);"><span><span style="color: rgb(51,51,51);"><code><span>org.apache.camel.builder.</span><span>xml</span></code></span>.XsltUriResolver</span></span> per endpoint. The default URI resolver reads XSLT documents from the classpath and the file system. This option instead of the option <code>uriResolver</code> shall be used when the URI resolver depends on the resource URI of the root XSLT document specified in the endpoint; for example, if you want to extend the default URI resolver. This option is also available on the XSLT component, so that you can set the resource resolver factory only once for all endpoints.</span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>uriResolver</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">< p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3</strong>: Allows you to use a custom <code>javax.xml.transformation.URIResolver</code>. Camel will by default use its own implementation <code>org.apache.camel.builder.xml.XsltUriResolver</code> which is capable of loading from classpath.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resultHandlerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Allows you to use a custom <code>org.apache.camel.builder.xml.ResultHandlerFactory</code> which is capable of using custom <code>org.apache.camel.builder.xml.ResultHandler</code> types.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>failOnNullBody</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspa n="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Whether or not to throw an exception if the input body is null.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>deleteOutputFile</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> If you have <code>output=file</code> then this option dictates whether or not the output file should be deleted when the <a shape="rect" href="exchange.html">Exchange</a> is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>output</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>string</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Option to specify which output type to use. Possible values are: <code>string, bytes, DOM, file</code>. The first three options are all in memory based, where as <code>file</code> is streamed directly to a <code>java.io.File</code>. For <code>file</code> you <strong>must</strong> specify the filename in the IN header with the key <code>Exchange.XSLT_FILE_NAME</code> which is also <code>CamelXsltFileName</code>. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> Cache for the resource content (the stylesheet file) when it is loaded. If set to <code>false</code> Camel will reload the stylesheet file on each message processing. This is good for development. <br clear="none"> Note: from <strong>Camel 2.9</strong> a cached stylesheet can be forced to reload at runtime via JMX using the <code>clearCachedStylesheet</code> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>allowStAX</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8.3/2.9:</strong> Whether to allow using StAX as the <code>javax.xml.transform.Source</code>. The option is default <code>false</code> in Camel 2.11.3/2.12.2 or older. And default <code>true</code> in Camel 2.11.4/2.12.3 onwards.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerCacheSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.3/2.10.1:</strong> The number of <code>javax.xml.transform.Transformer</code> object that are cached for reuse to avoid calls to <code>Template.newTransformer()</code >.</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>saxon</code></p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> >Whether to use Saxon as the <code>transformerFactoryClass</code>. If enabled >then the class <code>net.sf.saxon.TransformerFactoryImpl</code>. You would >need to add Saxon to the classpath.</p></td></tr><tr><td colspan="1" >rowspan="1" class="confluenceTd">errorListener</td><td colspan="1" >rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" >class="confluenceTd"><strong>Camel 2.14:</strong> Allows to configure to use >a custom <code>javax.xml.transform.ErrorListener</code>. Beware when doing >this then the default error listener which captures any errors or fatal >errors and store information on the Exchange as properties is not in use. So >only use this option for special use-cases.</td></tr></tbody></table></div></ div><h3 id="BookComponentAppendix-UsingXSLTendpoints">Using XSLT endpoints</h3><p>For example you could use something like</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>From Camel 2.9 onwards the <a shape="rect" href="xslt.html">XSLT</a> component is provided directly in the camel-core.</p><h3 id="BookComponentAppendix-Options.60">Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>converter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/converter/jaxp/XmlConverter.html">XmlConverter</a>. Will lookup for the converter in the <a shape="rect" href="registry.html">Re gistry</a>. The provided converted must be of type org.apache.camel.converter.jaxp.XmlConverter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will lookup for the transformerFactory in the <a shape="rect" href="registry.html">Registry</a>. The provided transformer factory must be of type javax.xml.transform.TransformerFactory.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactoryClass</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape= "rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will create a TransformerFactoryClass instance and set it to the converter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>uriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>DefaultXsltUriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17</strong>: <span style="color: rgb(51,51,51);"> Reference to a </span><code style="text-align: left;">org.apache.camel.component.</code><code style="text-align: left;">xslt</code><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);"><code>XsltUriResolverFactory</code> which creates an URI resolver per endpoint</span><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);">The default implementation returns an instance of <code><span>org. apache.camel.component.xslt.</span></code></span><span style="color: rgb(51,51,51);"><span><code>DefaultXsltUriResolverFactory</code> which creates the default URI resolver <span style="color: rgb(51,51,51);"><span><span style="color: rgb(51,51,51);"><code><span>org.apache.camel.builder.</span><span>xml</span></code></span>.XsltUriResolver</span></span> per endpoint. The default URI resolver reads XSLT documents from the classpath and the file system. This option instead of the option <code>uriResolver</code> shall be used when the URI resolver depends on the resource URI of the root XSLT document specified in the endpoint; for example, if you want to extend the default URI resolver. This option is also available on the XSLT component, so that you can set the resource resolver factory only once for all endpoints.</span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>uriResolver</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">< p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3</strong>: Allows you to use a custom <code>javax.xml.transformation.URIResolver</code>. Camel will by default use its own implementation <code>org.apache.camel.builder.xml.XsltUriResolver</code> which is capable of loading from classpath.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resultHandlerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Allows you to use a custom <code>org.apache.camel.builder.xml.ResultHandlerFactory</code> which is capable of using custom <code>org.apache.camel.builder.xml.ResultHandler</code> types.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>failOnNullBody</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspa n="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Whether or not to throw an exception if the input body is null.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>deleteOutputFile</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> If you have <code>output=file</code> then this option dictates whether or not the output file should be deleted when the <a shape="rect" href="exchange.html">Exchange</a> is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>output</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>string</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Option to specify which output type to use. Possible values are: <code>string, bytes, DOM, file</code>. The first three options are all in memory based, where as <code>file</code> is streamed directly to a <code>java.io.File</code>. For <code>file</code> you <strong>must</strong> specify the filename in the IN header with the key <code>Exchange.XSLT_FILE_NAME</code> which is also <code>CamelXsltFileName</code>. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> Cache for the resource content (the stylesheet file) when it is loaded. If set to <code>false</code> Camel will reload the stylesheet file on each message processing. This is good for development. <br clear="none"> Note: from <strong>Camel 2.9</strong> a cached stylesheet can be forced to reload at runtime via JMX using the <code>clearCachedStylesheet</code> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>allowStAX</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8.3/2.9:</strong> Whether to allow using StAX as the <code>javax.xml.transform.Source</code>. The option is default <code>false</code> in Camel 2.11.3/2.12.2 or older. And default <code>true</code> in Camel 2.11.4/2.12.3 onwards.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerCacheSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.3/2.10.1:</strong> The number of <code>javax.xml.transform.Transformer</code> object that are cached for reuse to avoid calls to <code>Template.newTransformer()</code >.</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>saxon</code></p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> >Whether to use Saxon as the <code>transformerFactoryClass</code>. If enabled >then the class <code>net.sf.saxon.TransformerFactoryImpl</code>. You would >need to add Saxon to the classpath.</p></td></tr><tr><td colspan="1" >rowspan="1" class="confluenceTd"><span>saxonExtensionFunctions</span></td><td >colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" >rowspan="1" class="confluenceTd"><strong>Camel 2.17:</strong><span> ><span>Allows to configure one or more custom >net.sf.saxon.lib.ExtensionFunctionDefinition<span>. You would need to add >Saxon to the classpath. By setting this option, saxon option will be turned >out automatically.</span></span></span></td></tr><tr><td colspan="1" >rowspan="1" class="confluenceTd">erro rListener</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14:</strong> Allows to configure to use a custom <code>javax.xml.transform.ErrorListener</code>. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases.</td></tr></tbody></table></div></div><h3 id="BookComponentAppendix-UsingXSLTendpoints">Using XSLT endpoints</h3><p>For example you could use something like</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("activemq:My.Queue"). to("xslt:com/acme/mytransform.xsl"); ]]></script> @@ -10823,7 +10823,31 @@ from("activemq:My.Queue"). </div></div><p>From Camel 2.10.4 onwards we have made this easier as Camel will use the prefix from the endpoint configuration as the default prefix. So from Camel 2.10.4 onwards you can do:</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[<xsl:include href="staff_template.xsl"/> ]]></script> -</div></div><p>Which will load the staff_template.xsl resource from the file system, as the endpoint was configured with "file:" as prefix.<br clear="none"> You can still though explicit configure a prefix, and then mix and match. And have both file and classpath loading. But that would be unusual, as most people either use file or classpath based resources.</p><h3 id="BookComponentAppendix-Dynamicstylesheets">Dynamic stylesheets</h3><p>To provide a dynamic stylesheet at runtime you can define a dynamic URI. See <a shape="rect" href="how-to-use-a-dynamic-uri-in-to.html">How to use a dynamic URI in to()</a> for more information.</p><p><strong>Available as of Camel 2.9 (removed in 2.11.4, 2.12.3 and 2.13.0)</strong><br clear="none"> Camel provides the <code>CamelXsltResourceUri</code> header which you can use to define a stylesheet to use instead of what is configured on the endpoint URI. This allows you to provide a dynamic stylesheet at runtime.</p><h3 id="BookComponentAppendix -Accessingwarnings,errorsandfatalErrorsfromXSLTErrorListener">Accessing warnings, errors and fatalErrors from XSLT ErrorListener</h3><p><strong>Available as of Camel 2.14</strong></p><p>From Camel 2.14 onwards, any warning/error or fatalError is stored on the current Exchange as a property with the keys <code>Exchange.XSLT_ERROR</code>, <code>Exchange.XSLT_FATAL_ERROR</code>, or <code>Exchange.XSLT_WARNING</code> which allows end users to get hold of any errors happening during transformation.</p><p>For example in the stylesheet below, we want to terminate if a staff has an empty dob field. And to include a custom error message using xsl:message.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>Which will load the staff_template.xsl resource from the file system, as the endpoint was configured with "file:" as prefix.<br clear="none"> You can still though explicit configure a prefix, and then mix and match. And have both file and classpath loading. But that would be unusual, as most people either use file or classpath based resources.</p><h3 id="BookComponentAppendix-UsingSaxonextensionfunctions">Using Saxon extension functions</h3><p>Since Saxon 9.2, writing extension functions has been supplemented by a new mechanism, referred to as <a shape="rect" class="external-link" href="http://www.saxonica.com/html/documentation/extensibility/integratedfunctions" rel="nofollow" title="Follow link">integrated extension functions</a> you can now easily use camel:</p><div><p> </p><p>- Java example:</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[SimpleRegistry registry = new SimpleRegistry(); +registry.put("function1", new MyExtensionFunction1()); +registry.put("function2", new MyExtensionFunction2()); + +CamelContext context = new DefaultCamelContext(registry); +context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start") + .to("xslt:org/apache/camel/component/xslt/extensions/extensions.xslt?saxonExtensionFunctions=#function1,#function2"); + } +});]]></script> +</div></div><p> </p><p>Spring example:</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[<camelContext xmlns="http://camel.apache.org/schema/spring"> + <route> + <from uri="direct:extensions"/> + <to uri="xslt:org/apache/camel/component/xslt/extensions/extensions.xslt?saxonExtensionFunctions=#function1,#function2"/> + </route> +</camelContext> + + +<bean id="function1" class="org.apache.camel.component.xslt.extensions.MyExtensionFunction1"/> +<bean id="function2" class="org.apache.camel.component.xslt.extensions.MyExtensionFunction2"/>]]></script> +</div></div><p> </p></div><p> </p><h3 id="BookComponentAppendix-Dynamicstylesheets">Dynamic stylesheets</h3><p>To provide a dynamic stylesheet at runtime you can define a dynamic URI. See <a shape="rect" href="how-to-use-a-dynamic-uri-in-to.html">How to use a dynamic URI in to()</a> for more information.</p><p><strong>Available as of Camel 2.9 (removed in 2.11.4, 2.12.3 and 2.13.0)</strong><br clear="none"> Camel provides the <code>CamelXsltResourceUri</code> header which you can use to define a stylesheet to use instead of what is configured on the endpoint URI. This allows you to provide a dynamic stylesheet at runtime.</p><h3 id="BookComponentAppendix-Accessingwarnings,errorsandfatalErrorsfromXSLTErrorListener">Accessing warnings, errors and fatalErrors from XSLT ErrorListener</h3><p><strong>Available as of Camel 2.14</strong></p><p>From Camel 2.14 onwards, any warning/error or fatalError is stored on the current Exchange as a property with the keys <code>Exch ange.XSLT_ERROR</code>, <code>Exchange.XSLT_FATAL_ERROR</code>, or <code>Exchange.XSLT_WARNING</code> which allows end users to get hold of any errors happening during transformation.</p><p>For example in the stylesheet below, we want to terminate if a staff has an empty dob field. And to include a custom error message using xsl:message.</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[ <xsl:template match="/"> <html> <body> 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 Fri Feb 12 11:22:26 2016 @@ -3731,11 +3731,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> </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.rbtoc1455182301936 {padding: 0px;} -div.rbtoc1455182301936 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1455182301936 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1455275985042 {padding: 0px;} +div.rbtoc1455275985042 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1455275985042 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1455182301936"> +/*]]>*/</style></p><div class="toc-macro rbtoc1455275985042"> <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> @@ -3899,6 +3899,7 @@ public class ServerRoutes extends RouteB <!-- Camel JMSProducer to be able to send messages to a remote Active MQ server --> <bean id="jms" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="brokerURL" value="tcp://localhost:${tcp.port}"/> + <property name="trustAllPackages" value="true"/> </bean> ]]></script> </div></div>The client will not use the <a shape="rect" href="camel-maven-plugin.html">Camel Maven Plugin</a> so the Spring XML has been placed in <em>src/main/resources</em> to not conflict with the server configs.<div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>camelContext</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Camel context is defined but does not contain any routes</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>template</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The <code>ProducerTemplate</code> is used to place messages onto the JMS queue</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jms bean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>This initialises the Camel JMS component, allowing us to place messages onto the queue</p></td></tr></tbody></table></div><p>And the CamelClient source code:</p><div class="co de panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> @@ -5840,11 +5841,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.rbtoc1455182303528 {padding: 0px;} -div.rbtoc1455182303528 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1455182303528 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1455275986377 {padding: 0px;} +div.rbtoc1455275986377 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1455275986377 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1455182303528"> +/*]]>*/</style><div class="toc-macro rbtoc1455275986377"> <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> @@ -17299,11 +17300,11 @@ template.send("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.rbtoc1455182310448 {padding: 0px;} -div.rbtoc1455182310448 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1455182310448 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1455276036855 {padding: 0px;} +div.rbtoc1455276036855 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1455276036855 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1455182310448"> +/*]]>*/</style></p><div class="toc-macro rbtoc1455276036855"> <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> @@ -27053,7 +27054,7 @@ from("activemq:My.Queue"). <!-- use the same version as your Camel core version --> </dependency> ]]></script> -</div></div><p>From Camel 2.9 onwards the <a shape="rect" href="xslt.html">XSLT</a> component is provided directly in the camel-core.</p><h3 id="BookInOnePage-Options.81">Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>converter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/converter/jaxp/XmlConverter.html">XmlConverter</a>. Will lookup for the converter in the <a shape="rect" href="registry.html">Registry</ a>. The provided converted must be of type org.apache.camel.converter.jaxp.XmlConverter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will lookup for the transformerFactory in the <a shape="rect" href="registry.html">Registry</a>. The provided transformer factory must be of type javax.xml.transform.TransformerFactory.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactoryClass</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" c lass="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will create a TransformerFactoryClass instance and set it to the converter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>uriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>DefaultXsltUriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17</strong>: <span style="color: rgb(51,51,51);"> Reference to a </span><code style="text-align: left;">org.apache.camel.component.</code><code style="text-align: left;">xslt</code><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);"><code>XsltUriResolverFactory</code> which creates an URI resolver per endpoint</span><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);">The default implementation returns an instance of <code><span>org.apache.c amel.component.xslt.</span></code></span><span style="color: rgb(51,51,51);"><span><code>DefaultXsltUriResolverFactory</code> which creates the default URI resolver <span style="color: rgb(51,51,51);"><span><span style="color: rgb(51,51,51);"><code><span>org.apache.camel.builder.</span><span>xml</span></code></span>.XsltUriResolver</span></span> per endpoint. The default URI resolver reads XSLT documents from the classpath and the file system. This option instead of the option <code>uriResolver</code> shall be used when the URI resolver depends on the resource URI of the root XSLT document specified in the endpoint; for example, if you want to extend the default URI resolver. This option is also available on the XSLT component, so that you can set the resource resolver factory only once for all endpoints.</span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>uriResolver</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code> null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3</strong>: Allows you to use a custom <code>javax.xml.transformation.URIResolver</code>. Camel will by default use its own implementation <code>org.apache.camel.builder.xml.XsltUriResolver</code> which is capable of loading from classpath.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resultHandlerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Allows you to use a custom <code>org.apache.camel.builder.xml.ResultHandlerFactory</code> which is capable of using custom <code>org.apache.camel.builder.xml.ResultHandler</code> types.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>failOnNullBody</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" cl ass="confluenceTd"><p><strong>Camel 2.3:</strong> Whether or not to throw an exception if the input body is null.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>deleteOutputFile</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> If you have <code>output=file</code> then this option dictates whether or not the output file should be deleted when the <a shape="rect" href="exchange.html">Exchange</a> is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>output</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>string</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Option to specify which output type to use. Possible values a re: <code>string, bytes, DOM, file</code>. The first three options are all in memory based, where as <code>file</code> is streamed directly to a <code>java.io.File</code>. For <code>file</code> you <strong>must</strong> specify the filename in the IN header with the key <code>Exchange.XSLT_FILE_NAME</code> which is also <code>CamelXsltFileName</code>. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> Cache for the resource content (the stylesheet file) when it is loaded. If set to <code>false</code> Camel will reload the stylesheet file on each message processing. This is good for development. <br clear="none"> Note: from <strong>Camel 2.9</strong> a cached styleshe et can be forced to reload at runtime via JMX using the <code>clearCachedStylesheet</code> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>allowStAX</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8.3/2.9:</strong> Whether to allow using StAX as the <code>javax.xml.transform.Source</code>. The option is default <code>false</code> in Camel 2.11.3/2.12.2 or older. And default <code>true</code> in Camel 2.11.4/2.12.3 onwards.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerCacheSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.3/2.10.1:</strong> The number of <code>javax.xml.transform.Transformer</code> object that are cached for reuse to avoid calls to <code>Template.newTransformer()</code>.</p></ td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>saxon</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> Whether to use Saxon as the <code>transformerFactoryClass</code>. If enabled then the class <code>net.sf.saxon.TransformerFactoryImpl</code>. You would need to add Saxon to the classpath.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">errorListener</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14:</strong> Allows to configure to use a custom <code>javax.xml.transform.ErrorListener</code>. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases.</td></tr></tbody></table></div></div><h3 id="BookInOnePage-UsingXSLTendpoints">Using XSLT endpoints</h3><p>For example you could use something like</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>From Camel 2.9 onwards the <a shape="rect" href="xslt.html">XSLT</a> component is provided directly in the camel-core.</p><h3 id="BookInOnePage-Options.81">Options</h3><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>converter</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/converter/jaxp/XmlConverter.html">XmlConverter</a>. Will lookup for the converter in the <a shape="rect" href="registry.html">Registry</ a>. The provided converted must be of type org.apache.camel.converter.jaxp.XmlConverter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" class="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will lookup for the transformerFactory in the <a shape="rect" href="registry.html">Registry</a>. The provided transformer factory must be of type javax.xml.transform.TransformerFactory.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerFactoryClass</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Option to override default <a shape="rect" c lass="external-link" href="http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/TransformerFactory.html" rel="nofollow">TransformerFactory</a>. Will create a TransformerFactoryClass instance and set it to the converter.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>uriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>DefaultXsltUriResolverFactory</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17</strong>: <span style="color: rgb(51,51,51);"> Reference to a </span><code style="text-align: left;">org.apache.camel.component.</code><code style="text-align: left;">xslt</code><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);"><code>XsltUriResolverFactory</code> which creates an URI resolver per endpoint</span><code style="text-align: left;">.</code><span style="color: rgb(51,51,51);">The default implementation returns an instance of <code><span>org.apache.c amel.component.xslt.</span></code></span><span style="color: rgb(51,51,51);"><span><code>DefaultXsltUriResolverFactory</code> which creates the default URI resolver <span style="color: rgb(51,51,51);"><span><span style="color: rgb(51,51,51);"><code><span>org.apache.camel.builder.</span><span>xml</span></code></span>.XsltUriResolver</span></span> per endpoint. The default URI resolver reads XSLT documents from the classpath and the file system. This option instead of the option <code>uriResolver</code> shall be used when the URI resolver depends on the resource URI of the root XSLT document specified in the endpoint; for example, if you want to extend the default URI resolver. This option is also available on the XSLT component, so that you can set the resource resolver factory only once for all endpoints.</span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>uriResolver</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code> null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3</strong>: Allows you to use a custom <code>javax.xml.transformation.URIResolver</code>. Camel will by default use its own implementation <code>org.apache.camel.builder.xml.XsltUriResolver</code> which is capable of loading from classpath.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resultHandlerFactory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Allows you to use a custom <code>org.apache.camel.builder.xml.ResultHandlerFactory</code> which is capable of using custom <code>org.apache.camel.builder.xml.ResultHandler</code> types.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>failOnNullBody</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" cl ass="confluenceTd"><p><strong>Camel 2.3:</strong> Whether or not to throw an exception if the input body is null.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>deleteOutputFile</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> If you have <code>output=file</code> then this option dictates whether or not the output file should be deleted when the <a shape="rect" href="exchange.html">Exchange</a> is done processing. For example suppose the output file is a temporary file, then it can be a good idea to delete it after use.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>output</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>string</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> Option to specify which output type to use. Possible values a re: <code>string, bytes, DOM, file</code>. The first three options are all in memory based, where as <code>file</code> is streamed directly to a <code>java.io.File</code>. For <code>file</code> you <strong>must</strong> specify the filename in the IN header with the key <code>Exchange.XSLT_FILE_NAME</code> which is also <code>CamelXsltFileName</code>. Also any paths leading to the filename must be created beforehand, otherwise an exception is thrown at runtime.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>contentCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.6:</strong> Cache for the resource content (the stylesheet file) when it is loaded. If set to <code>false</code> Camel will reload the stylesheet file on each message processing. This is good for development. <br clear="none"> Note: from <strong>Camel 2.9</strong> a cached styleshe et can be forced to reload at runtime via JMX using the <code>clearCachedStylesheet</code> operation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>allowStAX</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8.3/2.9:</strong> Whether to allow using StAX as the <code>javax.xml.transform.Source</code>. The option is default <code>false</code> in Camel 2.11.3/2.12.2 or older. And default <code>true</code> in Camel 2.11.4/2.12.3 onwards.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>transformerCacheSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.3/2.10.1:</strong> The number of <code>javax.xml.transform.Transformer</code> object that are cached for reuse to avoid calls to <code>Template.newTransformer()</code>.</p></ td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>saxon</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> Whether to use Saxon as the <code>transformerFactoryClass</code>. If enabled then the class <code>net.sf.saxon.TransformerFactoryImpl</code>. You would need to add Saxon to the classpath.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><span>saxonExtensionFunctions</span></td><td colspan="1" rowspan="1" class="confluenceTd">null</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.17:</strong><span> <span>Allows to configure one or more custom net.sf.saxon.lib.ExtensionFunctionDefinition<span>. You would need to add Saxon to the classpath. By setting this option, saxon option will be turned out automatically.</span></span></span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">errorListene r</td><td colspan="1" rowspan="1" class="confluenceTd"> </td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14:</strong> Allows to configure to use a custom <code>javax.xml.transform.ErrorListener</code>. Beware when doing this then the default error listener which captures any errors or fatal errors and store information on the Exchange as properties is not in use. So only use this option for special use-cases.</td></tr></tbody></table></div></div><h3 id="BookInOnePage-UsingXSLTendpoints">Using XSLT endpoints</h3><p>For example you could use something like</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("activemq:My.Queue"). to("xslt:com/acme/mytransform.xsl"); ]]></script> @@ -27106,7 +27107,31 @@ from("activemq:My.Queue"). </div></div><p>From Camel 2.10.4 onwards we have made this easier as Camel will use the prefix from the endpoint configuration as the default prefix. So from Camel 2.10.4 onwards you can do:</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[<xsl:include href="staff_template.xsl"/> ]]></script> -</div></div><p>Which will load the staff_template.xsl resource from the file system, as the endpoint was configured with "file:" as prefix.<br clear="none"> You can still though explicit configure a prefix, and then mix and match. And have both file and classpath loading. But that would be unusual, as most people either use file or classpath based resources.</p><h3 id="BookInOnePage-Dynamicstylesheets">Dynamic stylesheets</h3><p>To provide a dynamic stylesheet at runtime you can define a dynamic URI. See <a shape="rect" href="how-to-use-a-dynamic-uri-in-to.html">How to use a dynamic URI in to()</a> for more information.</p><p><strong>Available as of Camel 2.9 (removed in 2.11.4, 2.12.3 and 2.13.0)</strong><br clear="none"> Camel provides the <code>CamelXsltResourceUri</code> header which you can use to define a stylesheet to use instead of what is configured on the endpoint URI. This allows you to provide a dynamic stylesheet at runtime.</p><h3 id="BookInOnePage-Accessingwarnin gs,errorsandfatalErrorsfromXSLTErrorListener">Accessing warnings, errors and fatalErrors from XSLT ErrorListener</h3><p><strong>Available as of Camel 2.14</strong></p><p>From Camel 2.14 onwards, any warning/error or fatalError is stored on the current Exchange as a property with the keys <code>Exchange.XSLT_ERROR</code>, <code>Exchange.XSLT_FATAL_ERROR</code>, or <code>Exchange.XSLT_WARNING</code> which allows end users to get hold of any errors happening during transformation.</p><p>For example in the stylesheet below, we want to terminate if a staff has an empty dob field. And to include a custom error message using xsl:message.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>Which will load the staff_template.xsl resource from the file system, as the endpoint was configured with "file:" as prefix.<br clear="none"> You can still though explicit configure a prefix, and then mix and match. And have both file and classpath loading. But that would be unusual, as most people either use file or classpath based resources.</p><h3 id="BookInOnePage-UsingSaxonextensionfunctions">Using Saxon extension functions</h3><p>Since Saxon 9.2, writing extension functions has been supplemented by a new mechanism, referred to as <a shape="rect" class="external-link" href="http://www.saxonica.com/html/documentation/extensibility/integratedfunctions" rel="nofollow" title="Follow link">integrated extension functions</a> you can now easily use camel:</p><div><p> </p><p>- Java example:</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[SimpleRegistry registry = new SimpleRegistry(); +registry.put("function1", new MyExtensionFunction1()); +registry.put("function2", new MyExtensionFunction2()); + +CamelContext context = new DefaultCamelContext(registry); +context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start") + .to("xslt:org/apache/camel/component/xslt/extensions/extensions.xslt?saxonExtensionFunctions=#function1,#function2"); + } +});]]></script> +</div></div><p> </p><p>Spring example:</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[<camelContext xmlns="http://camel.apache.org/schema/spring"> + <route> + <from uri="direct:extensions"/> + <to uri="xslt:org/apache/camel/component/xslt/extensions/extensions.xslt?saxonExtensionFunctions=#function1,#function2"/> + </route> +</camelContext> + + +<bean id="function1" class="org.apache.camel.component.xslt.extensions.MyExtensionFunction1"/> +<bean id="function2" class="org.apache.camel.component.xslt.extensions.MyExtensionFunction2"/>]]></script> +</div></div><p> </p></div><p> </p><h3 id="BookInOnePage-Dynamicstylesheets">Dynamic stylesheets</h3><p>To provide a dynamic stylesheet at runtime you can define a dynamic URI. See <a shape="rect" href="how-to-use-a-dynamic-uri-in-to.html">How to use a dynamic URI in to()</a> for more information.</p><p><strong>Available as of Camel 2.9 (removed in 2.11.4, 2.12.3 and 2.13.0)</strong><br clear="none"> Camel provides the <code>CamelXsltResourceUri</code> header which you can use to define a stylesheet to use instead of what is configured on the endpoint URI. This allows you to provide a dynamic stylesheet at runtime.</p><h3 id="BookInOnePage-Accessingwarnings,errorsandfatalErrorsfromXSLTErrorListener">Accessing warnings, errors and fatalErrors from XSLT ErrorListener</h3><p><strong>Available as of Camel 2.14</strong></p><p>From Camel 2.14 onwards, any warning/error or fatalError is stored on the current Exchange as a property with the keys <code>Exchange.XSLT_ERROR< /code>, <code>Exchange.XSLT_FATAL_ERROR</code>, or <code>Exchange.XSLT_WARNING</code> which allows end users to get hold of any errors happening during transformation.</p><p>For example in the stylesheet below, we want to terminate if a staff has an empty dob field. And to include a custom error message using xsl:message.</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[ <xsl:template match="/"> <html> <body> Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/camel/content/cdi.html ============================================================================== --- websites/production/camel/content/cdi.html (original) +++ websites/production/camel/content/cdi.html Fri Feb 12 11:22:26 2016 @@ -97,7 +97,21 @@ CamelContext context;]]></script> from("jms:invoices").to("file:/invoices"); } }]]></script> -</div></div><p>Note that you can declare as many <code>RoutesBuilder</code> beans as you want. Besides, <code>RouteContainer</code> beans are also automatically collected, instantiated and added to the <code>CamelContext</code> bean instance managed by Camel CDI when the container initialises.</p><h3 id="CDI-CustomCamelcontextcustomisation">Custom Camel context customisation</h3><p>If you just want to change the name of the default <code>CamelContext</code> bean, you can used the <code>@ContextName</code> qualifier provided by Camel CDI, e.g.:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>Note that you can declare as many <code>RoutesBuilder</code> beans as you want. Besides, <code>RouteContainer</code> beans are also automatically collected, instantiated and added to the <code>CamelContext</code> bean instance managed by Camel CDI when the container initialises.</p><h3 id="CDI-Auto-configuredCamelprimitives">Auto-configured Camel primitives</h3><p>Camel CDI provides beans for common Camel primitives that can be injected in any CDI beans, e.g.:</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[@Inject +@Uri("direct:inbound") +ProducerTemplate producerTemplate; + +@Inject +MockEndpoint outbound; // URI defaults to the member name, i.e. mock:outbound + +@Inject +@Uri("direct:inbound") +Endpoint endpoint; + +@Inject +TypeConverter converter;]]></script> +</div></div><h3 id="CDI-Camelcontextconfiguration">Camel context configuration</h3><p>If you just want to change the name of the default <code>CamelContext</code> bean, you can used the <code>@ContextName</code> qualifier provided by Camel CDI, e.g.:</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[@ContextName("camel-context") class MyRouteBean extends RoutesBuilder { Â @@ -158,7 +172,7 @@ class ManualStartupCamelContext extends setAutoStartup(false); } }]]></script> -</div></div><h3 id="CDI-MultipleCamelcontextssupport">Multiple Camel contexts support</h3><p>Any number of <code>CamelContext</code> beans can actually be declared in the application as documented above. In that case, the CDI qualifiers declared on these <code>CamelContext</code> beans are used to bind the Camel routes and other Camel primitives to the corresponding Camel contexts. From example, if the following beans get declared:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><h3 id="CDI-MultipleCamelcontexts">Multiple Camel contexts</h3><p>Any number of <code>CamelContext</code> beans can actually be declared in the application as documented above. In that case, the CDI qualifiers declared on these <code>CamelContext</code> beans are used to bind the Camel routes and other Camel primitives to the corresponding Camel contexts. From example, if the following beans get declared:</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[@ApplicationScoped @ContextName("foo") class FooCamelContext extends DefaultCamelContext { @@ -204,7 +218,7 @@ class RouteNotAddedToAnyCamelContext ext // ... } }]]></script> -</div></div><p>The <code>RoutesBuilder</code> beans qualified with <code>@ContextName</code> get added to the corresponding <code>CamelContext</code> beans. If no such <code>CamelContext</code> bean exists, it gets automatically added by Camel CDI, as for the <code>RouteAdddedToBazCamelContext</code> bean. Note this only happens for the <code>@ContextName</code> qualifier provided by Camel CDI. Hence the <code>RouteNotAddedToAnyCamelContext</code> bean qualified with the user-defined <code>@MyOtherQualifier</code> qualifier does not get added to any Camel contexts. That may be useful, for example, for Camel routes that may be required to be added later during the application execution.</p><p>The CDI qualifiers declared on the <code>CamelContext</code> beans are also used to bind the corresponding Camel primitives, e.g.:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>The <code>RoutesBuilder</code> beans qualified with <code>@ContextName</code> are automatically added to the corresponding <code>CamelContext</code> beans by Camel CDI. If no such <code>CamelContext</code> bean exists, it gets automatically created, as for the <code>RouteAddedToBazCamelContext</code> bean. Note this only happens for the <code>@ContextName</code> qualifier provided by Camel CDI. Hence the <code>RouteNotAddedToAnyCamelContext</code> bean qualified with the user-defined <code>@MyOtherQualifier</code> qualifier does not get added to any Camel contexts. That may be useful, for example, for Camel routes that may be required to be added later during the application execution.</p><p>The CDI qualifiers declared on the <code>CamelContext</code> beans are also used to bind the corresponding Camel primitives, e.g.:</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[@Inject @ContextName("foo") @Uri("direct:inbound") @@ -247,7 +261,7 @@ static class DeltaSpikeParser extends De return ConfigResolver.getPropertyValue(key); } }]]></script> -</div></div><div class="highlight highlight-source-java"><div>You can see the <span><code>camel-example-cdi-properties</code> example for a working example of a Camel CDI application using DeltaSpike configuration mechanism.</span></div></div><h3 id="CDI-Auto-configuredtypeconverters">Auto-configured type converters</h3><p>CDI beans annotated with the <code>@Converter</code> annotation are automatically registered into the deployed Camel contexts, e.g.:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><div class="highlight highlight-source-java"><p>You can see the <span><code>camel-example-cdi-properties</code> example for a working example of a Camel CDI application using DeltaSpike configuration mechanism.</span></p></div><h3 id="CDI-Auto-configuredtypeconverters">Auto-configured type converters</h3><p>CDI beans annotated with the <code>@Converter</code> annotation are automatically registered into the deployed Camel contexts, e.g.:</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[@Converter public class MyTypeConverter { @@ -314,7 +328,7 @@ void consume(@Body String body) { from("direct:inbound").bean(MyBean.class);]]></script> </div></div><p>Or to lookup a CDI bean by name from the Java DSL:</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[@Named("foo") -class MyBean { +class MyNamedBean { //... } Â @@ -399,12 +413,12 @@ void observeCdiEvents(@Observes @FooQual @ContextName("foo") CdiEventEndpoint<List<String>> cdiEventEndpoint; // Only observes / consumes events having the @ContextName("foo") qualifier -from(cdiEventEndpoint).log("Camel context 'foo' > CDI event received: ${body}"); +from(cdiEventEndpoint).log("Camel context (foo) > CDI event received: ${body}"); // Produces / fires events with the @ContextName("foo") qualifier from("...").to(cdiEventEndpoint); void observeCdiEvents(@Observes @ContextName("foo") List<String> event) { - logger.info("Camel context 'foo' > CDI event: {}", event); + logger.info("Camel context (foo) > CDI event: {}", event); }]]></script> </div></div><p>Note that the CDI event Camel endpoint dynamically adds an <a shape="rect" class="external-link" href="http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#observer_methods" rel="nofollow">observer method</a> for each unique combination of <em>event type</em> and <em>event qualifiers</em> and solely relies on the container typesafe <a shape="rect" class="external-link" href="http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#observer_resolution" rel="nofollow">observer resolution</a>, which leads to an implementation as efficient as possible.</p><p>Besides, as the impedance between the <em>typesafe</em> nature of CDI and the <em>dynamic</em> nature of the <a shape="rect" class="external-link" href="http://camel.apache.org/component.html">Camel component</a> model is quite high, it is not possible to create an instance of the CDI event Camel endpoint via <a shape="rect" class="external-link" href="http://c amel.apache.org/uris.html">URIs</a>. Indeed, the URI format for the CDI event component is:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="brush: text; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[cdi-event://PayloadType<T1,...,Tn>[?qualifiers=QualifierType1[,...[,QualifierTypeN]...]]]]></script> @@ -417,7 +431,7 @@ void observeCdiEvents(@Observes @Context camel-cdi Started 1 0 0 1 minute ]]></script> </div></div><p>See the <span><code>camel-example-cdi-osgi</code> example for a working example of the Camel CDI OSGi integration.</span></p><h3 id="CDI-MavenArchetype">Maven Archetype</h3><p>Among the available <a shape="rect" href="camel-maven-archetypes.html">Camel Maven archetypes</a>, you can use the provided <code>camel-archetype-cdi</code> to generate a Camel CDI Maven project, e.g.:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="brush: bash; gutter: false; theme: Default" type="syntaxhighlighter"><![CDATA[mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes -DarchetypeArtifactId=camel-archetype-cdi]]></script> -</div></div><h3 id="CDI-Supportedcontainers">Supported containers</h3><p>The Camel CDI component is compatible with any CDI 1.0, CDI 1.1 and CDI 1.2 compliant runtime. It's been successfully tested against the following runtimes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Container</th><th colspan="1" rowspan="1" class="confluenceTh">Version</th><th colspan="1" rowspan="1" class="confluenceTh">Runtime</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Weld SE</td><td colspan="1" rowspan="1" class="confluenceTd"><code>1.1.28.Final</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.0 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">OpenWebBeans</td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1.2.7</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.0 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Weld S E</td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2.3.2.Final</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">OpenWebBeans</td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1.6.2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">WildFly</td><td colspan="1" rowspan="1" class="confluenceTd"><code>8.2.1.Final</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java EE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">WildFly</td><td colspan="1" rowspan="1" class="confluenceTd"><code>9.0.1.Final</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java EE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Karaf</td><td colspan="1" rowspan="1" class="confluenceTd"><code>2.4.4</code></td><td colspan="1" rowspan= "1" class="confluenceTd">CDI 1.2 / <span>OSGi 4 / PAX CDI</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Karaf</td><td colspan="1" rowspan="1" class="confluenceTd"><code>3.0.5</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / <span>OSGi 5 / PAX CDI</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Karaf</td><td colspan="1" rowspan="1" class="confluenceTd"><code>4.0.4</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / <span>OSGi 6 / PAX CDI</span></td></tr></tbody></table></div><h3 id="CDI-Examples">Examples</h3><p>The following examples are available in the <code>examples</code> directory of the Camel project:</p><ul><li><code>camel-example-cdi-metrics</code> - illustrates the integration between Camel, Dropwizard Metrics and CDI,</li><li><code>camel-example-cdi-properties</code> - illustrates the integration between Camel, DeltaSpike and CDI for configuration properties,</li><li><code>camel-example -cdi-osgi</code> - a CDI application using the SJMS component that can be executed inside an OSGi container using PAX CDI,</li><li><code>camel-example-cdi-rest-servlet</code> - illustrates the Camel REST DSL being used in a Web application that uses CDI as dependency injection framework,</li><li><code>camel-example-widget-gadget-cdi</code> - The Widget and Gadget use-case from the EIP book implemented in Java with CDI dependency Injection.</li></ul><h3 id="CDI-SeeAlso">See Also</h3><ul><li><a shape="rect" class="external-link" href="http://www.cdi-spec.org" rel="nofollow">CDI Web site</a></li><li><a shape="rect" class="external-link" href="http://www.cdi-spec.org/ecosystem/" rel="nofollow">CDI ecosystem</a></li><li><a shape="rect" class="external-link" href="https://github.com/astefanutti/further-cdi" rel="nofollow">Going further with CDI</a> (See Camel CDI section)</li></ul></div> +</div></div><h3 id="CDI-Supportedcontainers">Supported containers</h3><p>The Camel CDI component is compatible with any CDI 1.0, CDI 1.1 and CDI 1.2 compliant runtime. It's been successfully tested against the following runtimes:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh">Container</th><th colspan="1" rowspan="1" class="confluenceTh">Version</th><th colspan="1" rowspan="1" class="confluenceTh">Runtime</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Weld SE</td><td colspan="1" rowspan="1" class="confluenceTd"><code>1.1.28.Final</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.0 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">OpenWebBeans</td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1.2.7</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.0 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Weld S E</td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2.3.2.Final</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">OpenWebBeans</td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1.6.2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java SE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">WildFly</td><td colspan="1" rowspan="1" class="confluenceTd"><code>8.2.1.Final</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java EE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">WildFly</td><td colspan="1" rowspan="1" class="confluenceTd"><code>9.0.1.Final</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / Java EE 7</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Karaf</td><td colspan="1" rowspan="1" class="confluenceTd"><code>2.4.4</code></td><td colspan="1" rowspan= "1" class="confluenceTd">CDI 1.2 / <span>OSGi 4 / PAX CDI</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Karaf</td><td colspan="1" rowspan="1" class="confluenceTd"><code>3.0.5</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / <span>OSGi 5 / PAX CDI</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Karaf</td><td colspan="1" rowspan="1" class="confluenceTd"><code>4.0.4</code></td><td colspan="1" rowspan="1" class="confluenceTd">CDI 1.2 / <span>OSGi 6 / PAX CDI</span></td></tr></tbody></table></div><h3 id="CDI-Examples">Examples</h3><p>The following examples are available in the <code>examples</code> directory of the Camel project:</p><ul><li><code>camel-example-cdi-metrics</code> - illustrates the integration between Camel, Dropwizard Metrics and CDI,</li><li><code>camel-example-cdi-properties</code> - illustrates the integration between Camel, DeltaSpike and CDI for configuration properties,</li><li><code>camel-example -cdi-osgi</code> - a CDI application using the SJMS component that can be executed inside an OSGi container using PAX CDI,</li><li><code>camel-example-cdi-rest-servlet</code> - illustrates the Camel REST DSL being used in a Web application that uses CDI as dependency injection framework,</li><li><code>camel-example-widget-gadget-cdi</code> - the Widget and Gadget use-case from the EIP book implemented in Java with CDI dependency Injection,</li><li><span><span><code>camel-example-swagger-cdi</code> - a</span>n example using REST DSL and Swagger Java with CDI.</span></li></ul><h3 id="CDI-SeeAlso">See Also</h3><ul><li><a shape="rect" class="external-link" href="http://www.cdi-spec.org" rel="nofollow">CDI Web site</a></li><li><a shape="rect" class="external-link" href="http://www.cdi-spec.org/ecosystem/" rel="nofollow">CDI ecosystem</a></li><li><a shape="rect" class="external-link" href="https://github.com/astefanutti/further-cdi" rel="nofollow">Going further with CDI</a> (See Camel CDI section)</li></ul></div> </td> <td valign="top"> <div class="navigation">