BTW, here is how the same section of log file looks when app is successfully 
deployed on running TomEE:

2016-07-29 14:33:00,420 [http-nio-7080-exec-5] INFO JpaComponent.java 134 | 
Using EntityManagerFactory configured: 
org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory@5566ceee
2016-07-29 14:33:00,452 [http-nio-7080-exec-5] INFO JtaTransactionManager.java 
490 | Using JTA UserTransaction: 
org.apache.openejb.resource.GeronimoTransactionManagerFactory$DestroyableTransactionManager@609724e1
2016-07-29 14:33:00,452 [http-nio-7080-exec-5] INFO JtaTransactionManager.java 
501 | Using JTA TransactionManager: 
org.apache.openejb.resource.GeronimoTransactionManagerFactory$DestroyableTransactionManager@609724e1
2016-07-29 14:33:00,453 [http-nio-7080-exec-5] INFO JtaTransactionManager.java 
535 | Using JTA TransactionSynchronizationRegistry: 
org.apache.openejb.resource.GeronimoTransactionManagerFactory$DestroyableTransactionManager@609724e1
2016-07-29 14:33:00,453 [http-nio-7080-exec-5] INFO AppProducers.java 60 | 
jtaTransactionManager produced
2016-07-29 14:33:00,453 [http-nio-7080-exec-5] INFO JpaComponent.java 143 | 
Using TransactionManager found in registry with id [jtaTransactionManager] 
org.springframework.transaction.jta.JtaTransactionManager@5c44ab46
2016-07-29 14:33:00,688 [http-nio-7080-exec-5] INFO JtaTransactionManager.java 
490 | Using JTA UserTransaction: 
org.apache.openejb.resource.GeronimoTransactionManagerFactory$DestroyableTransactionManager@609724e1
2016-07-29 14:33:00,688 [http-nio-7080-exec-5] INFO JtaTransactionManager.java 
501 | Using JTA TransactionManager: 
org.apache.openejb.resource.GeronimoTransactionManagerFactory$DestroyableTransactionManager@609724e1
2016-07-29 14:33:00,689 [http-nio-7080-exec-5] INFO JtaTransactionManager.java 
535 | Using JTA TransactionSynchronizationRegistry: 
org.apache.openejb.resource.GeronimoTransactionManagerFactory$DestroyableTransactionManager@609724e1
2016-07-29 14:33:00,689 [http-nio-7080-exec-5] INFO AppProducers.java 60 | 
jtaTransactionManager produced

For some reason  jtaTransactionManager producer called twice, but it works.


-----Original Message-----
From: Shultz, Dmitry [mailto:[email protected]] 
Sent: July-29-16 2:46 PM
To: [email protected]
Subject: RE: Camel JPA + JTA Transaction (TomEE)

Romain,

TransactionManager  is never injected in my case (and yes, - I removed 
parameters from producer).

I'm having some strange problems with UserTransaction as well. It works when 
I'm deploying the app on the already running TpomEE, but fails when TomEE is 
restarted with the app deployed. 
Here is the exception (it is injected in the AppProducers class):

14:33| INFO | ManagedManagementStrategy.java 191 | JMX is enabled 14:33| INFO | 
DefaultTypeConverter.java 56 | Loaded 185 type converters 14:33| INFO | 
DefaultRuntimeEndpointRegistry.java 203 | Runtime endpoint registry is in 
extended mode gathering usage statistics of all incoming and outgoing endpoints 
(cache limit: 1000) 14:33| INFO | JpaComponent.java 134 | Using 
EntityManagerFactory configured: 
org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory@56744adf
WARNING - Injection data not found in JNDI context: 
jndiName='comp/env/com.company.mix.wosess.camel.AppProducers/userTransaction', 
target=com. company.mix.wosess.camel.AppProducers/userTransaction
14:33| INFO | DefaultCamelContext.java 3066 | Apache Camel 2.17.2 
(CamelContext: event-storage-service) is shutting down 14:33| INFO | 
DefaultCamelContext.java 3151 | Apache Camel 2.17.2 (CamelContext: 
event-storage-service) uptime 0.245 seconds 14:33| INFO | 
DefaultCamelContext.java 3152 | Apache Camel 2.17.2 (CamelContext: 
event-storage-service) is shutdown in 0.005 seconds SEVERE - No JTA 
UserTransaction available - specify either 'userTransaction' or 
'userTransactionName' or 'transactionManager' or 'transactionManagerName'
java.lang.IllegalStateException: No JTA UserTransaction available - specify 
either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 
'transactionManagerName'
        at 
org.springframework.transaction.jta.JtaTransactionManager.checkUserTransactionAndTransactionManager(JtaTransactionManager.java:494)
        at 
org.springframework.transaction.jta.JtaTransactionManager.afterPropertiesSet(JtaTransactionManager.java:436)
        at 
com.kaltire.mix.wosess.camel.AppProducers.createTransactionManager(AppProducers.java:58)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at 
org.apache.webbeans.inject.InjectableMethod.doInjection(InjectableMethod.java:155)
        at 
org.apache.webbeans.portable.ProducerMethodProducer.produce(ProducerMethodProducer.java:89)
        at 
org.apache.webbeans.portable.AbstractProducer.produce(AbstractProducer.java:172)
        at 
org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:122)
        at 
org.apache.webbeans.component.ProducerMethodBean.create(ProducerMethodBean.java:95)
        at 
org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:68)
        at 
org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:125)
        at 
org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:789)
        at 
org.apache.webbeans.container.InjectableBeanManager.getReference(InjectableBeanManager.java:165)
        at 
org.apache.camel.cdi.BeanManagerHelper.getReference(BeanManagerHelper.java:56)
        at 
org.apache.camel.cdi.CdiCamelRegistry.findByTypeWithName(CdiCamelRegistry.java:71)
        at 
org.apache.camel.impl.PropertyPlaceholderDelegateRegistry.findByTypeWithName(PropertyPlaceholderDelegateRegistry.java:70)
        at 
org.apache.camel.component.jpa.JpaComponent.doStart(JpaComponent.java:139)

How to make it to support TomEE restart?

Cheers,
Dmitry


-----Original Message-----
From: Romain Manni-Bucau [mailto:[email protected]]
Sent: July-29-16 1:35 PM
To: [email protected]
Subject: Re: Camel JPA + JTA Transaction (TomEE)

Normally no,

@Resource
private TransactionManager transactionManager;

or with a specified name if you prefer

@Resource(name = "java:comp/TransactionManager") // or 
java:comp/env/comp/TransactionManager for some older tomee versions private 
TransactionManager transactionManager;


work to get injected by TomEE the transaction manager.

Did you remove the parameters from your producer?

Just a new JtaTransactionManager() without any configuration should also work 
relying on defaults of spring.

The unsatisfied exception you get is cause spring is scanned as a EE library 
and does a @Inject TransactionManager mgr;. Just add in
conf.exclusions.list:

default-list
spring-

and it should work

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog 
<https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog 
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | 
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber 
<http://www.tomitribe.com> | JavaEE Factory 
<https://javaeefactory-rmannibucau.rhcloud.com>

2016-07-29 20:17 GMT+02:00 dimas <[email protected]>:

> Is there anything else i need to do besides just reference it as @Resource?
> It's still 'null'
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp57
> 85642p5785653.html Sent from the Camel - Users mailing list archive at 
> Nabble.com.
>

Reply via email to