If you're running Fuse 6.3, you may find this example[1] useful. I've described how datasources work and there are working (docker based) Camel routes using XA and non-XA datasources.
Are you sure org.apache.commons.dbcp.BasicDataSource is not working with auto-commit mode by default? regards Grzegorz Grzybek === [1]: https://github.com/FuseByExample/camel-persistence-part2/tree/jboss-fuse-6.2 2017-06-09 16:23 GMT+02:00 renalexster <[email protected]>: > Hi, > > I'm having problems with the entityManager when I try to run in OSGI > environment (jboss-fuse-6.3-fabric). > Everything works locally running by camel:run, but in the OSGI container > the > transaction is not committed in the database > > Here > <https://github.com/renalexster/camel-jpa-idempotent/tree/entityManager- > transaction> > is an example of my route. > > =================== CamelRoute =================== > public class CamelRoute extends RouteBuilder { > > @Override > public void configure() throws Exception { > from("file:input?noop=true&delay=60000").transacted() > .unmarshal(new BindyCsvDataFormat(Client.class)) > .split().simple("${body}") > .log("Processing Client [${body.name}]") > .bean(MyService.class, "recordLog") > .log("${body.name} processed"); > } > > } > =================== CamelRoute =================== > > > =================== MyService =================== > @Component > public class MyService { > @PersistenceContext(unitName="persistenceUnit") private > EntityManager em; > > private static final Logger LOG = LoggerFactory.getLogger( > MyService.class); > > public void recordLog(@Body Client client, Exchange exchange) { > LOG.info("Inserting client ["+client.getName()+"]"); > client = em.merge(client); > LOG.info("Inserted client ["+client.getId()+" - > "+client.getName()+"]"); > LOG.info("Inserting LogClient"); > LogClient log = new LogClient(); > log.setClient(client); > SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy > HH:mm:ss"); > String strDate = sdf.format(new Date()); > log.setTxtLog("Persisted Client ["+client.getName()+"] at > ["+strDate+"]"); > em.persist(log); > LOG.info("Inserted LogClient ["+log.getId()+"]"); > } > } > =================== MyService =================== > > =================== persistence.xml =================== > <persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://java.sun.com/xml/ns/persistence > http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" > version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> > <persistence-unit name="persistenceUnit" > transaction-type="RESOURCE_LOCAL"> > > <provider>org.hibernate.ejb.HibernatePersistence</provider> > > <class>com.mycompany.model.Client</class> > <class>com.mycompany.model.LogClient</class> > > <properties> > <property name="javax.persistence.jdbc.driver" > value="org.postgresql.Driver" /> > <property name="javax.persistence.jdbc.url" > value="jdbc:postgresql://192.168.238.1:5432/camel-jpa" /> > <property name="javax.persistence.jdbc.user" value="camel-jpa" > /> > <property name="javax.persistence.jdbc.password" > value="123456" > /> > <property name="hibernate.dialect" > value="org.hibernate.dialect.PostgreSQLDialect" /> --> > </properties> > </persistence-unit> > </persistence> > =================== persistence.xml =================== > > =================== camel-context.xml =================== > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:camel="http://camel.apache.org/schema/spring" > xmlns:ctx="http://www.springframework.org/schema/context" > xmlns:osgi="http://www.springframework.org/schema/osgi" > xmlns:osgix="http://www.springframework.org/schema/osgi-compendium" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://www.springframework.org/schema/osgi > http://www.springframework.org/schema/osgi/spring-osgi.xsd > http://www.springframework.org/schema/osgi-compendium > http://www.springframework.org/schema/osgi-compendium/ > spring-osgi-compendium.xsd > http://www.springframework.org/schema/context > http://www.springframework.org/schema/context/spring-context-3.0.xsd > http://camel.apache.org/schema/spring > http://camel.apache.org/schema/spring/camel-spring.xsd"> > <osgix:cm-properties id="parametros.spring" > persistent-id="parametros.spring"> > <prop key="db.driverClassName">org.postgresql.Driver</prop> > <prop > key="db.url">jdbc:postgresql://192.168.238.1:5432/camel-jpa</prop> > <prop key="db.username">camel-jpa</prop> > <prop key="db.password">123456</prop> > <prop key="connection.show_sql">true</prop> > </osgix:cm-properties> > <ctx:property-placeholder properties-ref="parametros.spring"/> > <ctx:annotation-config/> > <bean class="com.mycompany.routes.CamelRoute" id="javaCamelRoute"/> > <bean > class="org.springframework.orm.jpa.vendor. > HibernateJpaVendorAdapter" > id="jpaAdapter"> > <property name="showSql" value="true"/> > <property name="databasePlatform" > value="org.hibernate.dialect.PostgreSQLDialect"/> > </bean> > <bean class="org.apache.commons.dbcp.BasicDataSource" id="dataSource"> > <property name="driverClassName" value="${db.driverClassName}"/> > <property name="url" value="${db.url}"/> > <property name="username" value="${db.username}"/> > <property name="password" value="${db.password}"/> > </bean> > <bean class="org.apache.camel.component.jpa.JpaComponent" id="jpa"> > <property name="entityManagerFactory" ref="entityManagerFactory"/> > <property name="transactionManager" ref="jpaTxManager"/> > </bean> > <bean class="org.springframework.orm.jpa.JpaTransactionManager" > id="jpaTxManager"> > <property name="entityManagerFactory" ref="entityManagerFactory"/> > </bean> > <bean > > class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" > id="entityManagerFactory"> > <property name="dataSource" ref="dataSource"/> > <property name="jpaVendorAdapter" ref="jpaAdapter"/> > <property name="persistenceUnitName" value="persistenceUnit"/> > </bean> > <camelContext id="amq-example-context" > xmlns="http://camel.apache.org/schema/spring" > xmlns:order="http://com.mycompany/examples/order"> > <propertyPlaceholder id="properties" > location="ref:parametros.spring"/> > <routeBuilder ref="javaCamelRoute"/> > </camelContext> > </beans> > =================== camel-context.xml =================== > > > > -- > View this message in context: http://camel.465427.n5.nabble. > com/EntityManager-Transaction-OSGi-tp5802805.html > Sent from the Camel - Users mailing list archive at Nabble.com. >
