anchor.diff:  factory, a JMS transaction manager and our ActiveMQ component that we
   use in our routing.
   
  -/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionMinimalConfigurationTest.xml
  +[source,xml]
  +----
  +    <!-- setup JMS connection factory -->
  +    <bean id="poolConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
  +        <property name="maxConnections" value="8"/>
  +        <property name="connectionFactory" ref="jmsConnectionFactory"/>
  +    </bean>
  +
  +    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  +        <property name="brokerURL" value="vm://localhost?broker.persistent=false&amp;broker.useJmx=false"/>
  +    </bean>
  +
  +    <!-- setup spring jms TX manager -->
  +    <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
  +        <property name="connectionFactory" ref="poolConnectionFactory"/>
  +    </bean>
  +
  +    <!-- define our activemq component -->
  +    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
  +        <property name="connectionFactory" ref="poolConnectionFactory"/>
  +        <!-- define the jms consumer/producer as transacted -->
  +        <property name="transacted" value="true"/>
  +        <!-- setup the transaction manager to use -->
  +        <!-- if not provided then Camel will automatic use a JmsTransactionManager, however if you
  +             for instance use a JTA transaction manager then you must configure it -->
  +        <property name="transactionManager" ref="jmsTransactionManager"/>
  +    </bean>
  +----
   
   And then we configure our routes. Notice that all we have to do is mark the
   route as transacted using the *transacted* tag.
   
  -/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionMinimalConfigurationTest.xml
  +[source,xml]
  +----
  +    <camelContext xmlns="http://camel.apache.org/schema/spring">
  +        <!-- disable JMX during testing -->
  +        <jmxAgent id="agent" disabled="true"/>
  +        <route>
  +            <!-- 1: from the jms queue -->
  +            <from uri="activemq:queue:okay"/>
  +            <!-- 2: mark this route as transacted -->
  +            <transacted/>
  +            <!-- 3: call our business logic that is myProcessor -->
  +            <process ref="myProcessor"/>
  +            <!-- 4: if success then send it to the mock -->
  +            <to uri="mock:result"/>
  +        </route>
  +    </camelContext>
  +
  +    <bean id="myProcessor" class="org.apache.camel.component.jms.tx.JMSTransactionalClientTest$MyProcessor"/>
  +----
   
   ===== Transaction error handler
   
  
positive.code: `PROPAGATION_REQUIRED` beans. All the beans needed to be configured is
  *standard* Spring beans only, eg. there are no Camel specific
  configuration at all.
  
  /components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/springTransactionalClientDataSourceMinimalConfiguration.xml
  
  Then we are ready to define our Camel routes. We have two routes: 1 for
  success conditions, and 1 for a forced rollback condition.
  
negative.code: 
  [source,java]
  ----
    PlatformTransactionManager transactionManager = (PlatformTransactionManager) spring.getBean("jmsTransactionManager");
    ConnectionFactory connectionFactory = (ConnectionFactory) spring.getBean("jmsConnectionFactory");
    JmsComponent component = JmsComponent.jmsComponentTransacted(connectionFactory, transactionManager);
    component.getConfiguration().setConcurrentConsumers(1);
    ctx.addComponent("activemq", component);
  ----
  
  [[TransactionalClient-TransactionPolicies]]
  