Author: buildbot
Date: Thu Nov 19 12:22:38 2015
New Revision: 972957

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/jdbc.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 Thu Nov 19 
12:22:38 2015
@@ -1075,11 +1075,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.rbtoc1447838278782 {padding: 0px;}
-div.rbtoc1447838278782 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1447838278782 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447935506245 {padding: 0px;}
+div.rbtoc1447935506245 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447935506245 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1447838278782">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447935506245">
 <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>
@@ -5085,7 +5085,7 @@ We store big input streams (by default,
 </div></div><div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This component can only be used to 
define producer endpoints, which means that you cannot use the JDBC component 
in a <code>from()</code> statement.</p></div></div><h3 
id="BookComponentAppendix-URIformat.32">URI format</h3><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[jdbc:dataSourceName[?options]
 ]]></script>
-</div></div><p>This component only supports producer endpoints.</p><p>You can 
append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="BookComponentAppendix-Options.25">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>readSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default maximum number of 
rows that can be read by a polling query. The default value is 
0.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statement.&lt;xxx&gt;</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.1:</strong> Sets additional 
options on the <code>java.sql.Statement</code> that is used behind the scenes 
to execute the queries. For instance, <code>statement.maxRows=10</code>. For 
detailed documentation, see the <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html"; 
rel="nofollow"><code>java.sql.Statement</code> javadoc</a> 
documentation.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useJDBC4ColumnNameAndLabelSemantics</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.2:</strong> 
Sets whether to use JDBC 4/3 column label/name semantics. You can use this 
option to turn it <code>false</code> in case you have issues with your JDBC 
driver to select data. This only a
 pplies when using <code>SQL SELECT</code> using aliases (e.g. <code>SQL SELECT 
id as identifier, name as given_name from persons</code>).</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>resetAutoCommit</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.9:</strong> Camel will set 
the autoCommit on the JDBC connection to be false, commit the change after 
executed the statement and reset the autoCommit flag of the connection at the 
end, if the resetAutoCommit is true. If the JDBC connection doesn't support to 
reset the autoCommit flag, you can set the resetAutoCommit flag to be false, 
and Camel will not try to reset the autoCommit flag. <br clear="none">When used 
with XA transactions you most likely need to set it to false so that the 
transaction manager is in charge of committing this tx.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluence
 Td"><p><code>allowNamedParameters</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.12:</strong> Whether to allow using 
named parameters in the queries.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>prepareStatementStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Allows to 
plugin to use a custom 
<code>org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy</code> to 
control preparation of the query and prepared statement.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHeadersAsParameters</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.12:</strong> 
Set this option to <code>true<
 /code> to use the <code>prepareStatementStrategy</code> with named parameters. 
This allows to define queries with named placeholders, and use headers with the 
dynamic values for the query placeholders.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>outputType</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>SelectList</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> Make the 
output of the producer to SelectList as List of Map, or SelectOne as single 
Java object in the following way:<br clear="none"> a) If the query has only 
single column, then that JDBC Column object is returned. (such as SELECT COUNT( 
* ) FROM PROJECT will return a Long object.<br clear="none"> b) If the query 
has more than one column, then it will return a Map of that result.<br 
clear="none"> c) If the outputClass is set, then it will convert the query 
result into an Java bean object by calling all the setters that
  match the column names. It will assume your class has a default constructor 
to create instance with. From <strong>Camel 2.14</strong> onwards then 
SelectList is also supported. <br clear="none"> d) If the query resulted in 
more than one rows, it throws an non-unique result exception.<br clear="none"> 
<strong>Camel 2.14.0:</strong> New <code>StreamList</code> output type value 
that streams the result of the query using an <code>Iterator&lt;Map&lt;String, 
Object&gt;&gt;</code>, it can be used along with the <a shape="rect" 
href="splitter.html">Splitter</a> EIP.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>outputClass</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.12.1:</strong> 
Specify the full package and class name to use as conversion when 
outputType=SelectOne. From <strong>Camel 2.14</strong> onwards then SelectList 
is also supported.</p>
 </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>beanRowMapper</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12.1:</strong> To use a custom 
<code>org.apache.camel.component.jdbc.BeanRowMapper</code> when using 
<code>outputClass</code>. The default implementation will lower case the row 
names and skip underscores, and dashes. For example <code>"CUST_ID"</code> is 
mapped as <code>"custId"</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>useGetBytesForBlob</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> To read BLOB 
columns as bytes instead of string data. This may be needed for certain 
databases such as Oracle where you must read BLOB columns as 
bytes.</td></tr></tbody></table></div></div><h3 id="BookComponentAppendix-
 Result">Result</h3><p>By default the result is returned in the OUT body as an 
<code>ArrayList&lt;HashMap&lt;String, Object&gt;&gt;</code>. The 
<code>List</code> object contains the list of rows and the <code>Map</code> 
objects contain each row with the <code>String</code> key as the column name. 
You can use the option <code>outputType</code> to control the 
result.</p><p><strong>Note:</strong> This component fetches 
<code>ResultSetMetaData</code> to be able to return the column name as the key 
in the <code>Map</code>.</p><h4 
id="BookComponentAppendix-MessageHeaders.8">Message Headers</h4><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is a 
<code>SELECT</code>, query t
 he row count is returned in this OUT header.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcUpdateCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is an 
<code>UPDATE</code>, query the update count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRows</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
Rows that contains the generated kets.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
The number of rows in the header that contains generated 
keys.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcColumnNames</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
The co
 lumn names from the ResultSet as a <code>java.util.Set</code> 
type.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcParametes</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> A 
<code>java.util.Map</code> which has the headers to be used if 
<code>useHeadersAsParameters</code> has been 
enabled.</p></td></tr></tbody></table></div><h3 
id="BookComponentAppendix-Generatedkeys">Generated 
keys</h3><p><strong>Available as of Camel 2.10</strong></p><p>If you insert 
data using SQL INSERT, then the RDBMS may support auto generated keys. You can 
instruct the <a shape="rect" href="jdbc.html">JDBC</a> producer to return the 
generated keys in headers.<br clear="none"> To do that set the header 
<code>CamelRetrieveGeneratedKeys=true</code>. Then the generated keys will be 
provided as headers with the keys listed in the table above.</p><p>You can see 
more details in this <a shape="rect" class="external-link" href="https
 
://svn.apache.org/repos/asf/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcGeneratedKeysTest.java">unit
 test</a>.</p><div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Using generated keys does not work 
with together with named parameters.</p></div></div><h3 
id="BookComponentAppendix-Usingnamedparameters">Using named 
parameters</h3><p><strong>Available as of Camel 2.12</strong></p><p>In the 
given route below, we want to get all the projects from the projects table. 
Notice the SQL query has 2 named parameters, :?lic and :?min.<br clear="none"> 
Camel will then lookup these parameters from the message headers. Notice in the 
example above we set two headers with constant value<br clear="none"> for the 
named parameters:</p><div class="code panel pdl" style="border-width: 1px;
 "><div class="codeContent panelContent pdl">
+</div></div><p>This component only supports producer endpoints.</p><p>You can 
append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="BookComponentAppendix-Options.25">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>readSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default maximum number of 
rows that can be read by a polling query. The default value is 
0.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statement.&lt;xxx&gt;</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.1:</strong> Sets additional 
options on the <code>java.sql.Statement</code> that is used behind the scenes 
to execute the queries. For instance, <code>statement.maxRows=10</code>. For 
detailed documentation, see the <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html"; 
rel="nofollow"><code>java.sql.Statement</code> javadoc</a> 
documentation.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useJDBC4ColumnNameAndLabelSemantics</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.2:</strong> 
Sets whether to use JDBC 4/3 column label/name semantics. You can use this 
option to turn it <code>false</code> in case you have issues with your JDBC 
driver to select data. This only a
 pplies when using <code>SQL SELECT</code> using aliases (e.g. <code>SQL SELECT 
id as identifier, name as given_name from persons</code>).</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>resetAutoCommit</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.9:</strong> If true, Camel 
will set the autoCommit on the JDBC connection to be false, commit the change 
after executing the statement and reset the autoCommit flag of the connection 
at the end. If the JDBC connection does not support resetting the autoCommit 
flag, set this to false. <br clear="none">When used with XA transactions you 
most likely need to set it to false so that the transaction manager is in 
charge of committing this tx.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowNamedParameters</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><co
 de>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12:</strong> Whether to allow using 
named parameters in the queries.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>prepareStatementStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Allows to 
plugin to use a custom 
<code>org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy</code> to 
control preparation of the query and prepared statement.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHeadersAsParameters</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.12:</strong> 
Set this option to <code>true</code> to use the 
<code>prepareStatementStrategy</code> with named parameters. This allows to 
define que
 ries with named placeholders, and use headers with the dynamic values for the 
query placeholders.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputType</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>SelectList</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> 
Make the output of the producer to SelectList as List of Map, or SelectOne as 
single Java object in the following way:<br clear="none"> a) If the query has 
only single column, then that JDBC Column object is returned. (such as SELECT 
COUNT( * ) FROM PROJECT will return a Long object.<br clear="none"> b) If the 
query has more than one column, then it will return a Map of that result.<br 
clear="none"> c) If the outputClass is set, then it will convert the query 
result into an Java bean object by calling all the setters that match the 
column names. It will assume your class has a default constructor to create 
instance with. Fr
 om <strong>Camel 2.14</strong> onwards then SelectList is also supported. <br 
clear="none"> d) If the query resulted in more than one rows, it throws an 
non-unique result exception.<br clear="none"> <strong>Camel 2.14.0:</strong> 
New <code>StreamList</code> output type value that streams the result of the 
query using an <code>Iterator&lt;Map&lt;String, Object&gt;&gt;</code>, it can 
be used along with the <a shape="rect" href="splitter.html">Splitter</a> 
EIP.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputClass</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.12.1:</strong> Specify the 
full package and class name to use as conversion when outputType=SelectOne. 
From <strong>Camel 2.14</strong> onwards then SelectList is also 
supported.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>beanRowMapper</code></p></td><td
  colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> 
To use a custom <code>org.apache.camel.component.jdbc.BeanRowMapper</code> when 
using <code>outputClass</code>. The default implementation will lower case the 
row names and skip underscores, and dashes. For example <code>"CUST_ID"</code> 
is mapped as <code>"custId"</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><code>useGetBytesForBlob</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> To 
read BLOB columns as bytes instead of string data. This may be needed for 
certain databases such as Oracle where you must read BLOB columns as 
bytes.</td></tr></tbody></table></div></div><h3 
id="BookComponentAppendix-Result">Result</h3><p>By default the result is 
returned in the OUT body as an <code>ArrayList&lt;HashMap
 &lt;String, Object&gt;&gt;</code>. The <code>List</code> object contains the 
list of rows and the <code>Map</code> objects contain each row with the 
<code>String</code> key as the column name. You can use the option 
<code>outputType</code> to control the result.</p><p><strong>Note:</strong> 
This component fetches <code>ResultSetMetaData</code> to be able to return the 
column name as the key in the <code>Map</code>.</p><h4 
id="BookComponentAppendix-MessageHeaders.8">Message Headers</h4><div 
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" 
rowspan="1" class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is a 
<code>SELECT</code>, query the row count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" class="conflue
 nceTd"><p><code>CamelJdbcUpdateCount</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>If the query is an <code>UPDATE</code>, 
query the update count is returned in this OUT header.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRows</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
Rows that contains the generated kets.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
The number of rows in the header that contains generated 
keys.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcColumnNames</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
The column names from the ResultSet as a <code>java.util.Set</code> 
type.</p></td></tr><tr><td colspan="1" row
 span="1" class="confluenceTd"><p><code>CamelJdbcParametes</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> A 
<code>java.util.Map</code> which has the headers to be used if 
<code>useHeadersAsParameters</code> has been 
enabled.</p></td></tr></tbody></table></div><h3 
id="BookComponentAppendix-Generatedkeys">Generated 
keys</h3><p><strong>Available as of Camel 2.10</strong></p><p>If you insert 
data using SQL INSERT, then the RDBMS may support auto generated keys. You can 
instruct the <a shape="rect" href="jdbc.html">JDBC</a> producer to return the 
generated keys in headers.<br clear="none"> To do that set the header 
<code>CamelRetrieveGeneratedKeys=true</code>. Then the generated keys will be 
provided as headers with the keys listed in the table above.</p><p>You can see 
more details in this <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/j
 dbc/JdbcGeneratedKeysTest.java">unit test</a>.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Using generated keys does not work 
with together with named parameters.</p></div></div><h3 
id="BookComponentAppendix-Usingnamedparameters">Using named 
parameters</h3><p><strong>Available as of Camel 2.12</strong></p><p>In the 
given route below, we want to get all the projects from the projects table. 
Notice the SQL query has 2 named parameters, :?lic and :?min.<br clear="none"> 
Camel will then lookup these parameters from the message headers. Notice in the 
example above we set two headers with constant value<br clear="none"> for the 
named parameters:</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;direct:projects&quot;)
      .setHeader(&quot;lic&quot;, constant(&quot;ASF&quot;))
      .setHeader(&quot;min&quot;, constant(123))

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 Thu Nov 19 12:22:38 
2015
@@ -3700,11 +3700,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.rbtoc1447838365627 {padding: 0px;}
-div.rbtoc1447838365627 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1447838365627 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447935602146 {padding: 0px;}
+div.rbtoc1447935602146 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447935602146 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1447838365627">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447935602146">
 <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>
@@ -5809,11 +5809,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.rbtoc1447838366709 {padding: 0px;}
-div.rbtoc1447838366709 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1447838366709 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447935603275 {padding: 0px;}
+div.rbtoc1447935603275 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447935603275 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1447838366709">
+/*]]>*/</style><div class="toc-macro rbtoc1447935603275">
 <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>
@@ -17316,11 +17316,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.rbtoc1447838435076 {padding: 0px;}
-div.rbtoc1447838435076 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1447838435076 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447935663552 {padding: 0px;}
+div.rbtoc1447935663552 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447935663552 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1447838435076">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447935663552">
 <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>
@@ -21326,7 +21326,7 @@ We store big input streams (by default,
 </div></div><div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This component can only be used to 
define producer endpoints, which means that you cannot use the JDBC component 
in a <code>from()</code> statement.</p></div></div><h3 
id="BookInOnePage-URIformat.33">URI format</h3><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[jdbc:dataSourceName[?options]
 ]]></script>
-</div></div><p>This component only supports producer endpoints.</p><p>You can 
append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="BookInOnePage-Options.46">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>readSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default maximum number of 
rows that can be read by a polling query. The default value is 
0.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statement.&lt;xxx&gt;</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.1:</strong> Sets additional 
options on the <code>java.sql.Statement</code> that is used behind the scenes 
to execute the queries. For instance, <code>statement.maxRows=10</code>. For 
detailed documentation, see the <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html"; 
rel="nofollow"><code>java.sql.Statement</code> javadoc</a> 
documentation.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useJDBC4ColumnNameAndLabelSemantics</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.2:</strong> 
Sets whether to use JDBC 4/3 column label/name semantics. You can use this 
option to turn it <code>false</code> in case you have issues with your JDBC 
driver to select data. This only applies w
 hen using <code>SQL SELECT</code> using aliases (e.g. <code>SQL SELECT id as 
identifier, name as given_name from persons</code>).</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>resetAutoCommit</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.9:</strong> Camel will set 
the autoCommit on the JDBC connection to be false, commit the change after 
executed the statement and reset the autoCommit flag of the connection at the 
end, if the resetAutoCommit is true. If the JDBC connection doesn't support to 
reset the autoCommit flag, you can set the resetAutoCommit flag to be false, 
and Camel will not try to reset the autoCommit flag. <br clear="none">When used 
with XA transactions you most likely need to set it to false so that the 
transaction manager is in charge of committing this tx.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><
 code>allowNamedParameters</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.12:</strong> Whether to allow using 
named parameters in the queries.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>prepareStatementStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Allows to 
plugin to use a custom 
<code>org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy</code> to 
control preparation of the query and prepared statement.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHeadersAsParameters</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.12:</strong> 
Set this option to <code>true</code> t
 o use the <code>prepareStatementStrategy</code> with named parameters. This 
allows to define queries with named placeholders, and use headers with the 
dynamic values for the query placeholders.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>outputType</code></p></td><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>SelectList</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> Make the 
output of the producer to SelectList as List of Map, or SelectOne as single 
Java object in the following way:<br clear="none"> a) If the query has only 
single column, then that JDBC Column object is returned. (such as SELECT COUNT( 
* ) FROM PROJECT will return a Long object.<br clear="none"> b) If the query 
has more than one column, then it will return a Map of that result.<br 
clear="none"> c) If the outputClass is set, then it will convert the query 
result into an Java bean object by calling all the setters that match t
 he column names. It will assume your class has a default constructor to create 
instance with. From <strong>Camel 2.14</strong> onwards then SelectList is also 
supported. <br clear="none"> d) If the query resulted in more than one rows, it 
throws an non-unique result exception.<br clear="none"> <strong>Camel 
2.14.0:</strong> New <code>StreamList</code> output type value that streams the 
result of the query using an <code>Iterator&lt;Map&lt;String, 
Object&gt;&gt;</code>, it can be used along with the <a shape="rect" 
href="splitter.html">Splitter</a> EIP.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>outputClass</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.12.1:</strong> 
Specify the full package and class name to use as conversion when 
outputType=SelectOne. From <strong>Camel 2.14</strong> onwards then SelectList 
is also supported.</p></td></t
 r><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>beanRowMapper</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12.1:</strong> To use a custom 
<code>org.apache.camel.component.jdbc.BeanRowMapper</code> when using 
<code>outputClass</code>. The default implementation will lower case the row 
names and skip underscores, and dashes. For example <code>"CUST_ID"</code> is 
mapped as <code>"custId"</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>useGetBytesForBlob</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> To read BLOB 
columns as bytes instead of string data. This may be needed for certain 
databases such as Oracle where you must read BLOB columns as 
bytes.</td></tr></tbody></table></div></div><h3 
id="BookInOnePage-Result">Result</
 h3><p>By default the result is returned in the OUT body as an 
<code>ArrayList&lt;HashMap&lt;String, Object&gt;&gt;</code>. The 
<code>List</code> object contains the list of rows and the <code>Map</code> 
objects contain each row with the <code>String</code> key as the column name. 
You can use the option <code>outputType</code> to control the 
result.</p><p><strong>Note:</strong> This component fetches 
<code>ResultSetMetaData</code> to be able to return the column name as the key 
in the <code>Map</code>.</p><h4 id="BookInOnePage-MessageHeaders.8">Message 
Headers</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is a 
<code>SELECT</code>, query the row count is returned
  in this OUT header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcUpdateCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is an 
<code>UPDATE</code>, query the update count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRows</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
Rows that contains the generated kets.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
The number of rows in the header that contains generated 
keys.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcColumnNames</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
The column names from the Resu
 ltSet as a <code>java.util.Set</code> type.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcParametes</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> A 
<code>java.util.Map</code> which has the headers to be used if 
<code>useHeadersAsParameters</code> has been 
enabled.</p></td></tr></tbody></table></div><h3 
id="BookInOnePage-Generatedkeys">Generated keys</h3><p><strong>Available as of 
Camel 2.10</strong></p><p>If you insert data using SQL INSERT, then the RDBMS 
may support auto generated keys. You can instruct the <a shape="rect" 
href="jdbc.html">JDBC</a> producer to return the generated keys in headers.<br 
clear="none"> To do that set the header 
<code>CamelRetrieveGeneratedKeys=true</code>. Then the generated keys will be 
provided as headers with the keys listed in the table above.</p><p>You can see 
more details in this <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/came
 
l/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcGeneratedKeysTest.java">unit
 test</a>.</p><div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Using generated keys does not work 
with together with named parameters.</p></div></div><h3 
id="BookInOnePage-Usingnamedparameters">Using named 
parameters</h3><p><strong>Available as of Camel 2.12</strong></p><p>In the 
given route below, we want to get all the projects from the projects table. 
Notice the SQL query has 2 named parameters, :?lic and :?min.<br clear="none"> 
Camel will then lookup these parameters from the message headers. Notice in the 
example above we set two headers with constant value<br clear="none"> for the 
named parameters:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent p
 dl">
+</div></div><p>This component only supports producer endpoints.</p><p>You can 
append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="BookInOnePage-Options.46">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>readSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default maximum number of 
rows that can be read by a polling query. The default value is 
0.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statement.&lt;xxx&gt;</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.1:</strong> Sets additional 
options on the <code>java.sql.Statement</code> that is used behind the scenes 
to execute the queries. For instance, <code>statement.maxRows=10</code>. For 
detailed documentation, see the <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html"; 
rel="nofollow"><code>java.sql.Statement</code> javadoc</a> 
documentation.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useJDBC4ColumnNameAndLabelSemantics</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.2:</strong> 
Sets whether to use JDBC 4/3 column label/name semantics. You can use this 
option to turn it <code>false</code> in case you have issues with your JDBC 
driver to select data. This only applies w
 hen using <code>SQL SELECT</code> using aliases (e.g. <code>SQL SELECT id as 
identifier, name as given_name from persons</code>).</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>resetAutoCommit</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.9:</strong> If true, Camel 
will set the autoCommit on the JDBC connection to be false, commit the change 
after executing the statement and reset the autoCommit flag of the connection 
at the end. If the JDBC connection does not support resetting the autoCommit 
flag, set this to false. <br clear="none">When used with XA transactions you 
most likely need to set it to false so that the transaction manager is in 
charge of committing this tx.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowNamedParameters</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.12:</strong> Whether to allow using 
named parameters in the queries.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>prepareStatementStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Allows to 
plugin to use a custom 
<code>org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy</code> to 
control preparation of the query and prepared statement.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHeadersAsParameters</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.12:</strong> 
Set this option to <code>true</code> to use the 
<code>prepareStatementStrategy</code> with named parameters. This allows to 
define queries wit
 h named placeholders, and use headers with the dynamic values for the query 
placeholders.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputType</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>SelectList</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> 
Make the output of the producer to SelectList as List of Map, or SelectOne as 
single Java object in the following way:<br clear="none"> a) If the query has 
only single column, then that JDBC Column object is returned. (such as SELECT 
COUNT( * ) FROM PROJECT will return a Long object.<br clear="none"> b) If the 
query has more than one column, then it will return a Map of that result.<br 
clear="none"> c) If the outputClass is set, then it will convert the query 
result into an Java bean object by calling all the setters that match the 
column names. It will assume your class has a default constructor to create 
instance with. From <stro
 ng>Camel 2.14</strong> onwards then SelectList is also supported. <br 
clear="none"> d) If the query resulted in more than one rows, it throws an 
non-unique result exception.<br clear="none"> <strong>Camel 2.14.0:</strong> 
New <code>StreamList</code> output type value that streams the result of the 
query using an <code>Iterator&lt;Map&lt;String, Object&gt;&gt;</code>, it can 
be used along with the <a shape="rect" href="splitter.html">Splitter</a> 
EIP.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputClass</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.12.1:</strong> Specify the 
full package and class name to use as conversion when outputType=SelectOne. 
From <strong>Camel 2.14</strong> onwards then SelectList is also 
supported.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>beanRowMapper</code></p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> To use a 
custom <code>org.apache.camel.component.jdbc.BeanRowMapper</code> when using 
<code>outputClass</code>. The default implementation will lower case the row 
names and skip underscores, and dashes. For example <code>"CUST_ID"</code> is 
mapped as <code>"custId"</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>useGetBytesForBlob</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> To read BLOB 
columns as bytes instead of string data. This may be needed for certain 
databases such as Oracle where you must read BLOB columns as 
bytes.</td></tr></tbody></table></div></div><h3 
id="BookInOnePage-Result">Result</h3><p>By default the result is returned in 
the OUT body as an <code>ArrayList&lt;HashMap&lt;String, Obje
 ct&gt;&gt;</code>. The <code>List</code> object contains the list of rows and 
the <code>Map</code> objects contain each row with the <code>String</code> key 
as the column name. You can use the option <code>outputType</code> to control 
the result.</p><p><strong>Note:</strong> This component fetches 
<code>ResultSetMetaData</code> to be able to return the column name as the key 
in the <code>Map</code>.</p><h4 id="BookInOnePage-MessageHeaders.8">Message 
Headers</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is a 
<code>SELECT</code>, query the row count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdb
 cUpdateCount</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If the query is an <code>UPDATE</code>, query the 
update count is returned in this OUT header.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRows</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
Rows that contains the generated kets.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
The number of rows in the header that contains generated 
keys.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcColumnNames</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
The column names from the ResultSet as a <code>java.util.Set</code> 
type.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluen
 ceTd"><p><code>CamelJdbcParametes</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12:</strong> A 
<code>java.util.Map</code> which has the headers to be used if 
<code>useHeadersAsParameters</code> has been 
enabled.</p></td></tr></tbody></table></div><h3 
id="BookInOnePage-Generatedkeys">Generated keys</h3><p><strong>Available as of 
Camel 2.10</strong></p><p>If you insert data using SQL INSERT, then the RDBMS 
may support auto generated keys. You can instruct the <a shape="rect" 
href="jdbc.html">JDBC</a> producer to return the generated keys in headers.<br 
clear="none"> To do that set the header 
<code>CamelRetrieveGeneratedKeys=true</code>. Then the generated keys will be 
provided as headers with the keys listed in the table above.</p><p>You can see 
more details in this <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcGeneratedKeysTest.java";>
 unit test</a>.</p><div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Using generated keys does not work 
with together with named parameters.</p></div></div><h3 
id="BookInOnePage-Usingnamedparameters">Using named 
parameters</h3><p><strong>Available as of Camel 2.12</strong></p><p>In the 
given route below, we want to get all the projects from the projects table. 
Notice the SQL query has 2 named parameters, :?lic and :?min.<br clear="none"> 
Camel will then lookup these parameters from the message headers. Notice in the 
example above we set two headers with constant value<br clear="none"> for the 
named parameters:</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;direct:projects&quot;)
      .setHeader(&quot;lic&quot;, constant(&quot;ASF&quot;))
      .setHeader(&quot;min&quot;, constant(123))

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

Modified: websites/production/camel/content/jdbc.html
==============================================================================
--- websites/production/camel/content/jdbc.html (original)
+++ websites/production/camel/content/jdbc.html Thu Nov 19 12:22:38 2015
@@ -97,7 +97,7 @@
 </div></div><div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This component can only be used to 
define producer endpoints, which means that you cannot use the JDBC component 
in a <code>from()</code> statement.</p></div></div><h3 id="JDBC-URIformat">URI 
format</h3><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[jdbc:dataSourceName[?options]
 ]]></script>
-</div></div><p>This component only supports producer endpoints.</p><p>You can 
append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="JDBC-Options">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>readSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default maximum number of 
rows that can be read by a polling query. The default value is 
0.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statement.&lt;xxx&gt;</code></p></td><td 
colspan="1" rowspan="1" class="c
 onfluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.1:</strong> Sets additional options on 
the <code>java.sql.Statement</code> that is used behind the scenes to execute 
the queries. For instance, <code>statement.maxRows=10</code>. For detailed 
documentation, see the <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html"; 
rel="nofollow"><code>java.sql.Statement</code> javadoc</a> 
documentation.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useJDBC4ColumnNameAndLabelSemantics</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.2:</strong> 
Sets whether to use JDBC 4/3 column label/name semantics. You can use this 
option to turn it <code>false</code> in case you have issues with your JDBC 
driver to select data. This only applies when using <c
 ode>SQL SELECT</code> using aliases (e.g. <code>SQL SELECT id as identifier, 
name as given_name from persons</code>).</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>resetAutoCommit</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.9:</strong> 
Camel will set the autoCommit on the JDBC connection to be false, commit the 
change after executed the statement and reset the autoCommit flag of the 
connection at the end, if the resetAutoCommit is true. If the JDBC connection 
doesn't support to reset the autoCommit flag, you can set the resetAutoCommit 
flag to be false, and Camel will not try to reset the autoCommit flag. <br 
clear="none">When used with XA transactions you most likely need to set it to 
false so that the transaction manager is in charge of committing this 
tx.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowNa
 medParameters</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.12:</strong> Whether to allow using 
named parameters in the queries.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>prepareStatementStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Allows to 
plugin to use a custom 
<code>org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy</code> to 
control preparation of the query and prepared statement.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHeadersAsParameters</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.12:</strong> 
Set this option to <code>true</code> to use the <c
 ode>prepareStatementStrategy</code> with named parameters. This allows to 
define queries with named placeholders, and use headers with the dynamic values 
for the query placeholders.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputType</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>SelectList</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> 
Make the output of the producer to SelectList as List of Map, or SelectOne as 
single Java object in the following way:<br clear="none"> a) If the query has 
only single column, then that JDBC Column object is returned. (such as SELECT 
COUNT( * ) FROM PROJECT will return a Long object.<br clear="none"> b) If the 
query has more than one column, then it will return a Map of that result.<br 
clear="none"> c) If the outputClass is set, then it will convert the query 
result into an Java bean object by calling all the setters that match the 
column na
 mes. It will assume your class has a default constructor to create instance 
with. From <strong>Camel 2.14</strong> onwards then SelectList is also 
supported. <br clear="none"> d) If the query resulted in more than one rows, it 
throws an non-unique result exception.<br clear="none"> <strong>Camel 
2.14.0:</strong> New <code>StreamList</code> output type value that streams the 
result of the query using an <code>Iterator&lt;Map&lt;String, 
Object&gt;&gt;</code>, it can be used along with the <a shape="rect" 
href="splitter.html">Splitter</a> EIP.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>outputClass</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.12.1:</strong> 
Specify the full package and class name to use as conversion when 
outputType=SelectOne. From <strong>Camel 2.14</strong> onwards then SelectList 
is also supported.</p></td></tr><tr><td co
 lspan="1" rowspan="1" 
class="confluenceTd"><p><code>beanRowMapper</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12.1:</strong> To use a custom 
<code>org.apache.camel.component.jdbc.BeanRowMapper</code> when using 
<code>outputClass</code>. The default implementation will lower case the row 
names and skip underscores, and dashes. For example <code>"CUST_ID"</code> is 
mapped as <code>"custId"</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>useGetBytesForBlob</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> To read BLOB 
columns as bytes instead of string data. This may be needed for certain 
databases such as Oracle where you must read BLOB columns as 
bytes.</td></tr></tbody></table></div></div><h3 
id="JDBC-Result">Result</h3><p>By default the 
 result is returned in the OUT body as an <code>ArrayList&lt;HashMap&lt;String, 
Object&gt;&gt;</code>. The <code>List</code> object contains the list of rows 
and the <code>Map</code> objects contain each row with the <code>String</code> 
key as the column name. You can use the option <code>outputType</code> to 
control the result.</p><p><strong>Note:</strong> This component fetches 
<code>ResultSetMetaData</code> to be able to return the column name as the key 
in the <code>Map</code>.</p><h4 id="JDBC-MessageHeaders">Message 
Headers</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is a 
<code>SELECT</code>, query the row count is returned in this OUT 
header.</p></td></t
 r><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcUpdateCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is an 
<code>UPDATE</code>, query the update count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRows</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
Rows that contains the generated kets.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
The number of rows in the header that contains generated 
keys.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcColumnNames</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
The column names from the ResultSet as a <code>java.util.Set</
 code> type.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcParametes</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> A 
<code>java.util.Map</code> which has the headers to be used if 
<code>useHeadersAsParameters</code> has been 
enabled.</p></td></tr></tbody></table></div><h3 
id="JDBC-Generatedkeys">Generated keys</h3><p><strong>Available as of Camel 
2.10</strong></p><p>If you insert data using SQL INSERT, then the RDBMS may 
support auto generated keys. You can instruct the <a shape="rect" 
href="jdbc.html">JDBC</a> producer to return the generated keys in headers.<br 
clear="none"> To do that set the header 
<code>CamelRetrieveGeneratedKeys=true</code>. Then the generated keys will be 
provided as headers with the keys listed in the table above.</p><p>You can see 
more details in this <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-jdbc/src/test/ja
 va/org/apache/camel/component/jdbc/JdbcGeneratedKeysTest.java">unit 
test</a>.</p><div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Using generated keys does not work 
with together with named parameters.</p></div></div><h3 
id="JDBC-Usingnamedparameters">Using named parameters</h3><p><strong>Available 
as of Camel 2.12</strong></p><p>In the given route below, we want to get all 
the projects from the projects table. Notice the SQL query has 2 named 
parameters, :?lic and :?min.<br clear="none"> Camel will then lookup these 
parameters from the message headers. Notice in the example above we set two 
headers with constant value<br clear="none"> for the named parameters:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>This component only supports producer endpoints.</p><p>You can 
append query options to the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="JDBC-Options">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>readSize</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The default maximum number of 
rows that can be read by a polling query. The default value is 
0.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>statement.&lt;xxx&gt;</code></p></td><td 
colspan="1" rowspan="1" class="c
 onfluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.1:</strong> Sets additional options on 
the <code>java.sql.Statement</code> that is used behind the scenes to execute 
the queries. For instance, <code>statement.maxRows=10</code>. For detailed 
documentation, see the <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html"; 
rel="nofollow"><code>java.sql.Statement</code> javadoc</a> 
documentation.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useJDBC4ColumnNameAndLabelSemantics</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.2:</strong> 
Sets whether to use JDBC 4/3 column label/name semantics. You can use this 
option to turn it <code>false</code> in case you have issues with your JDBC 
driver to select data. This only applies when using <c
 ode>SQL SELECT</code> using aliases (e.g. <code>SQL SELECT id as identifier, 
name as given_name from persons</code>).</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>resetAutoCommit</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.9:</strong> If 
true, Camel will set the autoCommit on the JDBC connection to be false, commit 
the change after executing the statement and reset the autoCommit flag of the 
connection at the end. If the JDBC connection does not support resetting the 
autoCommit flag, set this to false. <br clear="none">When used with XA 
transactions you most likely need to set it to false so that the transaction 
manager is in charge of committing this tx.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>allowNamedParameters</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.12:</strong> Whether to allow using named parameters in the 
queries.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>prepareStatementStrategy</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Allows to 
plugin to use a custom 
<code>org.apache.camel.component.jdbc.JdbcPrepareStatementStrategy</code> to 
control preparation of the query and prepared statement.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>useHeadersAsParameters</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.12:</strong> 
Set this option to <code>true</code> to use the 
<code>prepareStatementStrategy</code> with named parameters. This allows to 
define queries with named plac
 eholders, and use headers with the dynamic values for the query 
placeholders.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputType</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>SelectList</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.1:</strong> 
Make the output of the producer to SelectList as List of Map, or SelectOne as 
single Java object in the following way:<br clear="none"> a) If the query has 
only single column, then that JDBC Column object is returned. (such as SELECT 
COUNT( * ) FROM PROJECT will return a Long object.<br clear="none"> b) If the 
query has more than one column, then it will return a Map of that result.<br 
clear="none"> c) If the outputClass is set, then it will convert the query 
result into an Java bean object by calling all the setters that match the 
column names. It will assume your class has a default constructor to create 
instance with. From <strong>Camel 2.1
 4</strong> onwards then SelectList is also supported. <br clear="none"> d) If 
the query resulted in more than one rows, it throws an non-unique result 
exception.<br clear="none"> <strong>Camel 2.14.0:</strong> New 
<code>StreamList</code> output type value that streams the result of the query 
using an <code>Iterator&lt;Map&lt;String, Object&gt;&gt;</code>, it can be used 
along with the <a shape="rect" href="splitter.html">Splitter</a> 
EIP.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>outputClass</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.12.1:</strong> Specify the 
full package and class name to use as conversion when outputType=SelectOne. 
From <strong>Camel 2.14</strong> onwards then SelectList is also 
supported.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>beanRowMapper</code></p></td><td colspan="1" 
rowspan
 ="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12.1:</strong> To use a custom 
<code>org.apache.camel.component.jdbc.BeanRowMapper</code> when using 
<code>outputClass</code>. The default implementation will lower case the row 
names and skip underscores, and dashes. For example <code>"CUST_ID"</code> is 
mapped as <code>"custId"</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>useGetBytesForBlob</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><code>false</code></td><td colspan="1" 
rowspan="1" class="confluenceTd"><strong>Camel 2.16:</strong> To read BLOB 
columns as bytes instead of string data. This may be needed for certain 
databases such as Oracle where you must read BLOB columns as 
bytes.</td></tr></tbody></table></div></div><h3 
id="JDBC-Result">Result</h3><p>By default the result is returned in the OUT 
body as an <code>ArrayList&lt;HashMap&lt;String, Object&gt;&gt;</code>. Th
 e <code>List</code> object contains the list of rows and the <code>Map</code> 
objects contain each row with the <code>String</code> key as the column name. 
You can use the option <code>outputType</code> to control the 
result.</p><p><strong>Note:</strong> This component fetches 
<code>ResultSetMetaData</code> to be able to return the column name as the key 
in the <code>Map</code>.</p><h4 id="JDBC-MessageHeaders">Message 
Headers</h4><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header</p></th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>CamelJdbcRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If the query is a 
<code>SELECT</code>, query the row count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcUpdateCount</code></p></td><td 
 colspan="1" rowspan="1" class="confluenceTd"><p>If the query is an 
<code>UPDATE</code>, query the update count is returned in this OUT 
header.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRows</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
Rows that contains the generated kets.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>CamelGeneratedKeysRowCount</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> 
The number of rows in the header that contains generated 
keys.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcColumnNames</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
The column names from the ResultSet as a <code>java.util.Set</code> 
type.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>CamelJdbcParamete
 s</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.12:</strong> A 
<code>java.util.Map</code> which has the headers to be used if 
<code>useHeadersAsParameters</code> has been 
enabled.</p></td></tr></tbody></table></div><h3 
id="JDBC-Generatedkeys">Generated keys</h3><p><strong>Available as of Camel 
2.10</strong></p><p>If you insert data using SQL INSERT, then the RDBMS may 
support auto generated keys. You can instruct the <a shape="rect" 
href="jdbc.html">JDBC</a> producer to return the generated keys in headers.<br 
clear="none"> To do that set the header 
<code>CamelRetrieveGeneratedKeys=true</code>. Then the generated keys will be 
provided as headers with the keys listed in the table above.</p><p>You can see 
more details in this <a shape="rect" class="external-link" 
href="https://svn.apache.org/repos/asf/camel/trunk/components/camel-jdbc/src/test/java/org/apache/camel/component/jdbc/JdbcGeneratedKeysTest.java";>unit
 test</a>.</p><div class="confluence-
 information-macro confluence-information-macro-information"><span 
class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Using generated keys does not work 
with together with named parameters.</p></div></div><h3 
id="JDBC-Usingnamedparameters">Using named parameters</h3><p><strong>Available 
as of Camel 2.12</strong></p><p>In the given route below, we want to get all 
the projects from the projects table. Notice the SQL query has 2 named 
parameters, :?lic and :?min.<br clear="none"> Camel will then lookup these 
parameters from the message headers. Notice in the example above we set two 
headers with constant value<br clear="none"> for the named parameters:</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;direct:projects&quot;)
      .setHeader(&quot;lic&quot;, constant(&quot;ASF&quot;))
      .setHeader(&quot;min&quot;, constant(123))


Reply via email to