Author: buildbot
Date: Sat Nov 29 17:21:54 2014
New Revision: 931000

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 Sat Nov 29 
17:21:54 2014
@@ -1529,11 +1529,11 @@ template.send("direct:alias-verify&
                     </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.rbtoc1416997118156 {padding: 0px;}
-div.rbtoc1416997118156 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1416997118156 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417281519533 {padding: 0px;}
+div.rbtoc1417281519533 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417281519533 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1416997118156">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417281519533">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF 
Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI 
format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#CXF-Thedescriptionsofthedataformats">The descriptions of the 
dataformats</a>
@@ -6146,7 +6146,7 @@ We store big input streams (by default, 
 ]]></script>
 </div></div><p></p><h3 id="BookComponentAppendix-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>
-<h2 id="BookComponentAppendix-JDBCComponent">JDBC Component</h2><p>The 
<strong>jdbc</strong> component enables you to access databases through JDBC, 
where SQL queries and operations are sent in the message body. This component 
uses the standard JDBC API, unlike the <a shape="rect" 
href="sql-component.html">SQL Component</a> component, which uses 
spring-jdbc.</p><p>Maven users will need to add the following dependency to 
their <code>pom.xml</code> for this component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h2 id="BookComponentAppendix-JDBCComponent">JDBC Component</h2><p>The 
<strong>jdbc</strong> component enables you to access databases through JDBC, 
where SQL queries (SELECT) and operations (INSERT, UPDATE, etc) are sent in the 
message body. This component uses the standard JDBC API, unlike the <a 
shape="rect" href="sql-component.html">SQL Component</a> component, which uses 
spring-jdbc.</p><p>Maven users will need to add the following dependency to 
their <code>pom.xml</code> for this component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-jdbc&lt;/artifactId&gt;
@@ -6163,14 +6163,7 @@ We store big input streams (by default, 
 <h3 id="BookComponentAppendix-URIformat.32">URI format</h3><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
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. F
 or 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 <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 cols
 pan="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.</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" ro
 wspan="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></t
 d><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.com
 ponent.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></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 que
 ry 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>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="rec
 t" 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="aui-message hint shadowed information-macro">
+</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.</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" c
 lass="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 t
 he 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 SelectLi
 st 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>&#1
 60;</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></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-M
 essageHeaders.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 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="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Using generated keys does not work with 
together with named parameters.</p>
@@ -6259,6 +6252,15 @@ from(&quot;direct:hello&quot;)
 </div></div><h3 
id="BookComponentAppendix-Sample-Pollingthedatabaseeveryminute"><br 
clear="none"><span style="font-size: 16.0px;line-height: 1.5625;">Sample - 
Polling the database every minute</span></h3><p>If we want to poll a database 
using the JDBC component, we need to combine it with a polling scheduler such 
as the <a shape="rect" href="timer.html">Timer</a> or <a shape="rect" 
href="quartz.html">Quartz</a> etc. In the following example, we retrieve data 
from the database every 60 seconds:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://foo?period=60000&quot;).setBody(constant(&quot;select
 * from 
customer&quot;)).to(&quot;jdbc:testdb&quot;).to(&quot;activemq:queue:customers&quot;);
 ]]></script>
+</div></div><h3 
id="BookComponentAppendix-Sample-MoveDataBetweenDataSources"><span>Sample - 
Move Data Between Data Sources<br clear="none"></span></h3><p>A common use case 
is to query for data, process it and move it to another data source (ETL 
operations). In the following example, we retrieve new customer records from 
the source table every hour, filter/transform them and move them to a 
destination table:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://MoveNewCustomersEveryHour?period=3600000&quot;)
+    .setBody(constant(&quot;select * from customer where create_time &gt; 
(sysdate-1/24)&quot;))
+    .to(&quot;jdbc:testdb&quot;)
+    .split(body())
+               .process(new MyCustomerProcessor()) //filter/transform results 
as needed
+        .setBody(simple(&quot;insert into processed_customer 
values(&#39;${body[ID]}&#39;,&#39;${body[NAME]}&#39;)&quot;))
+        .to(&quot;jdbc:testdb&quot;);
+]]></script>
 </div></div><p>&#160;</p><p></p><h3 id="BookComponentAppendix-SeeAlso.29">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 
class="alternate"><li><a shape="rect" href="sql.html">SQL</a></li></ul>
 <h2 id="BookComponentAppendix-JettyComponent">Jetty Component</h2><p>The 
<strong>jetty</strong> component provides HTTP-based <a shape="rect" 
href="endpoint.html">endpoints</a> for consuming and producing HTTP requests. 
That is, the Jetty component behaves as a simple Web server.<br clear="none"> 
Jetty can also be used as a http client which mean you can also use it with 
Camel as a producer.</p>    <div class="aui-message hint shadowed 
information-macro">

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 Sat Nov 29 17:21:54 
2014
@@ -4120,11 +4120,11 @@ While not actual tutorials you might fin
                     </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.rbtoc1417191553048 {padding: 0px;}
-div.rbtoc1417191553048 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417191553048 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417281554411 {padding: 0px;}
+div.rbtoc1417281554411 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417281554411 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1417191553048">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417281554411">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-JmsRemoting-TutorialonSpringRemotingwithJMS">Tutorial on Spring 
Remoting with JMS</a></li><li><a shape="rect" 
href="#Tutorial-JmsRemoting-Preface">Preface</a></li><li><a shape="rect" 
href="#Tutorial-JmsRemoting-Prerequisites">Prerequisites</a></li><li><a 
shape="rect" 
href="#Tutorial-JmsRemoting-Distribution">Distribution</a></li><li><a 
shape="rect" href="#Tutorial-JmsRemoting-About">About</a></li><li><a 
shape="rect" href="#Tutorial-JmsRemoting-CreatetheCamelProject">Create the 
Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-JmsRemoting-UpdatethePOMwithDependencies">Update the POM with 
Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#Tutorial-JmsRemoting-WritingtheServer">Writing 
the Server</a>
@@ -6310,11 +6310,11 @@ So we completed the last piece in the pi
 
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1417191553510 {padding: 0px;}
-div.rbtoc1417191553510 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417191553510 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417281556338 {padding: 0px;}
+div.rbtoc1417281556338 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417281556338 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1417191553510">
+/*]]>*/</style><div class="toc-macro rbtoc1417281556338">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-TutorialusingAxis1.4withApacheCamel">Tutorial using 
Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-Prerequisites">Prerequisites</a></li><li><a 
shape="rect" 
href="#Tutorial-AXIS-Camel-Distribution">Distribution</a></li><li><a 
shape="rect" 
href="#Tutorial-AXIS-Camel-Introduction">Introduction</a></li><li><a 
shape="rect" href="#Tutorial-AXIS-Camel-SettinguptheprojecttorunAxis">Setting 
up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-Maven2">Maven 2</a></li><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-wsdl">wsdl</a></li><li><a shape="rect" 
href="#Tutorial-AXIS-Camel-ConfiguringAxis">Configuring Axis</a></li><li><a 
shape="rect" href="#Tutorial-AXIS-Camel-RunningtheExample">Running the 
Example</a></li></ul>
@@ -19682,11 +19682,11 @@ template.send(&quot;direct:alias-verify&
                     </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.rbtoc1417191561471 {padding: 0px;}
-div.rbtoc1417191561471 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417191561471 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417281576821 {padding: 0px;}
+div.rbtoc1417281576821 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417281576821 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1417191561471">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417281576821">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF 
Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI 
format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#CXF-Thedescriptionsofthedataformats">The descriptions of the 
dataformats</a>
@@ -24299,7 +24299,7 @@ We store big input streams (by default, 
 ]]></script>
 </div></div><p></p><h3 id="BookInOnePage-SeeAlso.48">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>
-<h2 id="BookInOnePage-JDBCComponent">JDBC Component</h2><p>The 
<strong>jdbc</strong> component enables you to access databases through JDBC, 
where SQL queries and operations are sent in the message body. This component 
uses the standard JDBC API, unlike the <a shape="rect" 
href="sql-component.html">SQL Component</a> component, which uses 
spring-jdbc.</p><p>Maven users will need to add the following dependency to 
their <code>pom.xml</code> for this component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h2 id="BookInOnePage-JDBCComponent">JDBC Component</h2><p>The 
<strong>jdbc</strong> component enables you to access databases through JDBC, 
where SQL queries (SELECT) and operations (INSERT, UPDATE, etc) are sent in the 
message body. This component uses the standard JDBC API, unlike the <a 
shape="rect" href="sql-component.html">SQL Component</a> component, which uses 
spring-jdbc.</p><p>Maven users will need to add the following dependency to 
their <code>pom.xml</code> for this component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-jdbc&lt;/artifactId&gt;
@@ -24316,14 +24316,7 @@ We store big input streams (by default, 
 <h3 id="BookInOnePage-URIformat.33">URI format</h3><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
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.47">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. F
 or 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 <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 cols
 pan="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.</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" ro
 wspan="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></t
 d><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.com
 ponent.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></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>SE
 LECT</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.1
 1.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="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="aui-message hint shadowed information-macro">
+</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.47">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.</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="co
 nfluenceTd"><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 dynam
 ic 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 al
 so 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></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 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="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 supp
 ort 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="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Using generated keys does not work with 
together with named parameters.</p>
@@ -24412,6 +24405,15 @@ from(&quot;direct:hello&quot;)
 </div></div><h3 id="BookInOnePage-Sample-Pollingthedatabaseeveryminute"><br 
clear="none"><span style="font-size: 16.0px;line-height: 1.5625;">Sample - 
Polling the database every minute</span></h3><p>If we want to poll a database 
using the JDBC component, we need to combine it with a polling scheduler such 
as the <a shape="rect" href="timer.html">Timer</a> or <a shape="rect" 
href="quartz.html">Quartz</a> etc. In the following example, we retrieve data 
from the database every 60 seconds:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://foo?period=60000&quot;).setBody(constant(&quot;select
 * from 
customer&quot;)).to(&quot;jdbc:testdb&quot;).to(&quot;activemq:queue:customers&quot;);
 ]]></script>
+</div></div><h3 
id="BookInOnePage-Sample-MoveDataBetweenDataSources"><span>Sample - Move Data 
Between Data Sources<br clear="none"></span></h3><p>A common use case is to 
query for data, process it and move it to another data source (ETL operations). 
In the following example, we retrieve new customer records from the source 
table every hour, filter/transform them and move them to a destination 
table:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://MoveNewCustomersEveryHour?period=3600000&quot;)
+    .setBody(constant(&quot;select * from customer where create_time &gt; 
(sysdate-1/24)&quot;))
+    .to(&quot;jdbc:testdb&quot;)
+    .split(body())
+               .process(new MyCustomerProcessor()) //filter/transform results 
as needed
+        .setBody(simple(&quot;insert into processed_customer 
values(&#39;${body[ID]}&#39;,&#39;${body[NAME]}&#39;)&quot;))
+        .to(&quot;jdbc:testdb&quot;);
+]]></script>
 </div></div><p>&#160;</p><p></p><h3 id="BookInOnePage-SeeAlso.49">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 
class="alternate"><li><a shape="rect" href="sql.html">SQL</a></li></ul>
 <h2 id="BookInOnePage-JettyComponent">Jetty Component</h2><p>The 
<strong>jetty</strong> component provides HTTP-based <a shape="rect" 
href="endpoint.html">endpoints</a> for consuming and producing HTTP requests. 
That is, the Jetty component behaves as a simple Web server.<br clear="none"> 
Jetty can also be used as a http client which mean you can also use it with 
Camel as a producer.</p>    <div class="aui-message hint shadowed 
information-macro">

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 Sat Nov 29 17:21:54 2014
@@ -86,7 +86,7 @@
        <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="JDBC-JDBCComponent">JDBC 
Component</h2><p>The <strong>jdbc</strong> component enables you to access 
databases through JDBC, where SQL queries and operations are sent in the 
message body. This component uses the standard JDBC API, unlike the <a 
shape="rect" href="sql-component.html">SQL Component</a> component, which uses 
spring-jdbc.</p><p>Maven users will need to add the following dependency to 
their <code>pom.xml</code> for this component:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<div class="wiki-content maincontent"><h2 id="JDBC-JDBCComponent">JDBC 
Component</h2><p>The <strong>jdbc</strong> component enables you to access 
databases through JDBC, where SQL queries (SELECT) and operations (INSERT, 
UPDATE, etc) are sent in the message body. This component uses the standard 
JDBC API, unlike the <a shape="rect" href="sql-component.html">SQL 
Component</a> component, which uses spring-jdbc.</p><p>Maven users will need to 
add the following dependency to their <code>pom.xml</code> for this 
component:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
     &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
     &lt;artifactId&gt;camel-jdbc&lt;/artifactId&gt;
@@ -103,14 +103,7 @@
 <h3 id="JDBC-URIformat">URI format</h3><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
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="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. F
 or 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 <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 cols
 pan="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.</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" ro
 wspan="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></t
 d><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.com
 ponent.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></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 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="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="aui-message hint shadowed information-macro">
+</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.</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 placeholders, and use headers with the dynamic values 
fo
 r 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 cols
 pan="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></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-w
 rap"><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>Ca
 melGeneratedKeysRowCount</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/java/org/apache/camel/component/jdbc/JdbcGeneratedKeysTest.java";>unit
 test</a>.</p>    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>Using generated keys does not work with 
together with named parameters.</p>
@@ -199,6 +192,15 @@ from(&quot;direct:hello&quot;)
 </div></div><h3 id="JDBC-Sample-Pollingthedatabaseeveryminute"><br 
clear="none"><span style="font-size: 16.0px;line-height: 1.5625;">Sample - 
Polling the database every minute</span></h3><p>If we want to poll a database 
using the JDBC component, we need to combine it with a polling scheduler such 
as the <a shape="rect" href="timer.html">Timer</a> or <a shape="rect" 
href="quartz.html">Quartz</a> etc. In the following example, we retrieve data 
from the database every 60 seconds:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://foo?period=60000&quot;).setBody(constant(&quot;select
 * from 
customer&quot;)).to(&quot;jdbc:testdb&quot;).to(&quot;activemq:queue:customers&quot;);
 ]]></script>
+</div></div><h3 id="JDBC-Sample-MoveDataBetweenDataSources"><span>Sample - 
Move Data Between Data Sources<br clear="none"></span></h3><p>A common use case 
is to query for data, process it and move it to another data source (ETL 
operations). In the following example, we retrieve new customer records from 
the source table every hour, filter/transform them and move them to a 
destination table:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[from(&quot;timer://MoveNewCustomersEveryHour?period=3600000&quot;)
+    .setBody(constant(&quot;select * from customer where create_time &gt; 
(sysdate-1/24)&quot;))
+    .to(&quot;jdbc:testdb&quot;)
+    .split(body())
+               .process(new MyCustomerProcessor()) //filter/transform results 
as needed
+        .setBody(simple(&quot;insert into processed_customer 
values(&#39;${body[ID]}&#39;,&#39;${body[NAME]}&#39;)&quot;))
+        .to(&quot;jdbc:testdb&quot;);
+]]></script>
 </div></div><p>&#160;</p><p></p><h3 id="JDBC-SeeAlso">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 
class="alternate"><li><a shape="rect" href="sql.html">SQL</a></li></ul></div>
         </td>


Reply via email to