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