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.
