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.

Reply via email to