I am new to Camel. I have spent the better part of two days searching
through the web and in the Camel documentation for something to help me,
but with no luck.

Camel 2.11
Application runs under JBoss AS 7.1
We do not use Spring
CamelContext is setup using Camel CDI

I am trying to setup a JPA consumer endpoint.
I have set an EntityManagerFactory and JtaTransactionManager on the
JpaComponent.

The following route works:

from(
        this.getComponentName()
            + ":edu.wustl.catissuecore.domain.Specimen?persistenceUnit="
            + this.getInstance().getPersistenceUnit()
            + 
"&consumeDelete=false&consumer.namedQuery=newSpecimen&consumer.delay=60000"
)
        .removeHeaders("Camel*")
        .setHeader("instance", this.constant(this.getInstance().name()))
        .to("sjms:topic:newSpecimenTopic?transacted=true");

My second route is following (in a class extending SpringRouteBuilder):

from(
        this.getComponentName()
            + 
":edu.bcm.dldcc.big.utility.entity.NewParticipantLog?persistenceUnit="
            + this.getInstance().getPersistenceUnit()
            + "&consumer.delay=60000")
        .removeHeaders("Camel*").transacted()
        .setHeader("instance", this.constant(this.getInstance().name()))
        .to("sjms:topic:newParticipantTopic?transacted=true");


This fails, with the following error:
Caused by: javax.persistence.TransactionRequiredException: no transaction
is in progress
        at 
org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl
.java:976) [hibernate-entitymanager-4.1.2.Final.jar:4.1.2.Final]
        at sun.reflect.GeneratedMethodAccessor829.invoke(Unknown Source)
[:1.6.0_45]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
l.java:25) [classes.jar:1.6.0_45]
        at java.lang.reflect.Method.invoke(Method.java:597) 
[classes.jar:1.6.0_45]
        at 
org.springframework.orm.jpa.JpaTemplate$CloseSuppressingInvocationHandler.i
nvoke(JpaTemplate.java:429) [spring-orm-3.1.4.RELEASE.jar:3.1.4.RELEASE]
        at com.sun.proxy.$Proxy219.flush(Unknown Source)
        at 
org.apache.camel.component.jpa.JpaConsumer$1.doInJpa(JpaConsumer.java:117)
[camel-jpa-2.11.0.jar:2.11.0]
        at 
org.apache.camel.component.jpa.JpaTemplateTransactionStrategy$1$1.doInJpa(J
paTemplateTransactionStrategy.java:82) [camel-jpa-2.11.0.jar:2.11.0]
        at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:187)
[spring-orm-3.1.4.RELEASE.jar:3.1.4.RELEASE]
        ... 16 more

I have not been able to find any explanation of how to get the
JpaComponent to operate within a transaction.

Thanks.



Reply via email to