You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by dimas <Dm...@kaltire.com> on 2016/07/29 15:57:18 UTC

Camel JPA + JTA Transaction (TomEE)

Hi All,

I'm using TomEE (7.0.0) + Camel JMS + Camel CDI + Camel JPA  to receive and
store messages in the DB. Camel version is 2.17.2.

Out of the box, Camel JPA is failing because it is trying to access the
EntityTransaction of TomEE. 

08:36| ERROR | CamelLogger.java 156 | <openjpa-2.4.1-r422266:1730418
nonfatal user error> org.apache.openjpa.persistence.InvalidStateException:
You cannot access the EntityTransaction when using managed transactions.
	at
org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:553)
	at
org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:103)
	at
org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:67)
	at
org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:380)
	at
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
	at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
	at org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
	at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)


In the 'transactionManeger' description column of Camel JPA doc
(http://camel.apache.org/jpa.html) there is some info about the ability to
set up JTA Transaction Manger 'Can be used to set a JTA transaction manager
(for integration with an EJB container).', but it's not clear how to do it
exactly.

I tried to use the doc page of Camel CDI (http://camel.apache.org/cdi.html),
the 'Referring beans from Endpoint URIs' section where it says that
following code should be used:

@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager
transactionManager, UserTransaction userTransaction) {
    JtaTransactionManager jtaTransactionManager = new
JtaTransactionManager();
    jtaTransactionManager.setUserTransaction(userTransaction);
    jtaTransactionManager.setTransactionManager(transactionManager);
    jtaTransactionManager.afterPropertiesSet();
    return jtaTransactionManager;
}

And I'm using it in my route like this:

.to("jpa://com.some.Event?transactionManager=#jtaTransactionManager");

But if fails:

Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api type
[javax.transaction.TransactionManager] is not found with the qualifiers 
Qualifiers: [@javax.enterprise.inject.Default()]
for injection into Method Injection Point, method name : 
createTransactionManager, Bean Owner : [PlatformTransactionManager,
WebBeansType:PRODUCERMETHOD, Name:jtaTransactionManager, API
Types:[java.lang.Object,org.springframework.transaction.PlatformTransactionManager],
Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named]]
	at
org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:65)
	at
org.apache.webbeans.container.InjectionResolver.checkInjectionPoint(InjectionResolver.java:234)
	at
org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1199)
	at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.java:1709)
	at
org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:909)
	at
org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:820)
	at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:305)


Looks like i have to create producer for
javax.transaction.TransactionManager, not sure how to do it. Or may be I'm
doing something totally wrong here..

Cheers,
Dmitry



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642.html
Sent from the Camel - Users mailing list archive at Nabble.com.

RE: Camel JPA + JTA Transaction (TomEE)

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
Thanks a lot!

Cheers,
Dmitry

-----Original Message-----
From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com] 
Sent: August-16-16 12:46 AM
To: users@camel.apache.org
Subject: Re: Camel JPA + JTA Transaction (TomEE)

Hello

FYI I opened https://issues.apache.org/jira/browse/TOMEE-1903 (should be fixed in ~1h)


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-08-08 11:47 GMT+02:00 Antonin Stefanutti <an...@stefanutti.fr>:

> Hi Dimitri,
>
> Thanks a lot for your feedback.
>
> I’m planning to work on a Camel CDI example that would cover Camel JMS 
> and JTA. I’ll try to extend it to cover Camel JPA or to have a 
> dedicated Camel CDI example for it as well.
>
> Meanwhile, you may want to contribute, if you think you have something 
> generic enough to share, that’d be awesome! http://camel.apache.org/ 
> contributing.html
>
> Keep in touch,
>
> Antonin
>
> > On 06 Aug 2016, at 22:25, Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
> >
> > I like the CDI way of doing DI, so I decided to dump the JPA  Camel
> component.
> >
> > Ended up using beanRef invoking CDI Bean with injected EntityManager
> (for RESOURCE_LOCAL datas source). Had to begin/commit transaction
> manually) and it works.
> >
> > It would be nice if Deltaspike JPA module ca help here 
> > (@Transactional
> doesn't seem to be doing anything), but it's manageable so far.
> >
> >
> > Cheers,
> >
> > Dmitry
> >
> > ________________________________
> > From: Romain Manni-Bucau <rm...@gmail.com>
> > Sent: 05 August 2016 23:53:16
> > To: users@camel.apache.org
> > Subject: RE: Camel JPA + JTA Transaction (TomEE)
> >
> > Le 6 août 2016 02:22, "Shultz, Dmitry" <Dm...@kaltire.com> a
> écrit :
> >>
> >> Can't set the org.apache.camel.cdi.CdiCamelExtension.active=false 
> >> in
> > conf/system.properties because there will be other apps deployed on 
> > the same TomEE and they have no problems  (because they don't use 
> > any Camel JPA).
> >> Also can't override the afterDeploymentValidation() because it is
> > private, in fact all the methods in org.apache.camel.cdi.
> CdiCamelExtension
> > class are private except of default Constructor - very well
> encapsulated...
> > may be a bit too well.
> >>
> >
> > WEB-INF/application.properties can hold it within the app too
> >
> >> While I'm working on the github project to reproduce the issue, I 
> >> need
> to
> > deploy something working into our environment (i.e. something that 
> > can be restarted), so I decided to try not to use RESOURCE_LOCAL 
> > instead of JTA data source. It fails on :
> >>
> >> 17:15| ERROR | CamelLogger.java 156 |
> > javax.persistence.TransactionRequiredException: no transaction is in 
> > progress
> >>        at
> > org.hibernate.ejb.AbstractEntityManagerImpl.flush(
> AbstractEntityManagerImpl.java:993)
> >>        at
> > org.apache.camel.component.jpa.JpaProducer$1.
> doInTransaction(JpaProducer.java:99)
> >>        at
> > org.springframework.transaction.support.TransactionTemplate.execute(
> TransactionTemplate.java:133)
> >>        at
> > org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:
> > 62)
> >>        at
> > org.apache.camel.util.AsyncProcessorConverterHelper$
> ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.
> java:61)
> >>        at
> > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:
> > 145)
> >>
> >> How do I create transaction manually for JPA Camel?
> >>
> >>
> >
> > Think you have to rely on spring.
> >
> > That said a workaround for your app would be to use reflection - or 
> > add openejb-core as provided in your pom - and get the txmgr doing 
> > OpenEJB.getTransactionManager().
> >
> >>
> >> -----Original Message-----
> >> From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> >> Sent: August-05-16 1:57 PM
> >> To: users@camel.apache.org
> >> Subject: RE: Camel JPA + JTA Transaction (TomEE)
> >>
> >> org.apache.camel.cdi.CdiCamelExtension.active=false in
> > conf/system.properties then redefine this extension - likely extend 
> > camel one to override afterDeploymentValidation and dont forget to 
> > register it through standard SPI file.
> >>
> >> Thinking to it using a servletcontextlistener if in a servlet 
> >> container
> > can be a better way to init camel - can be done automatically and 
> > switch back to either cdi or something else if in standalone.
> >>
> >> Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> 
> >> a
> > écrit :
> >>
> >> It looks like
> > org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
> >> kicks up the Camel validation befiore TomEE is fully initialized. 
> >> If
> > there any way to disable this (or call validation manually later)?
> >>
> >> -----Original Message-----
> >> From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
> >> Sent: August-05-16 11:48 AM
> >> To: users@camel.apache.org
> >> Subject: Re: Camel JPA + JTA Transaction (TomEE)
> >>
> >> Note that Camel CDI does not change the semantic of
> > context.setAutoStartup(false), that is the routes within the context 
> > are not started, though the context itself is started so that 
> > validation can occur when the application initialise.
> >>
> >>> On 05 Aug 2016, at 20:08, Romain Manni-Bucau 
> >>> <rm...@gmail.com>
> >> wrote:
> >>>
> >>> try sharing a sample with this issue on github with 
> >>> tomee-maven-plugin setup to reproduce it (mvn package tomee:run -> 
> >>> fails). Would be more relevant than guessing the actual issue.
> >>>
> >>>
> >>> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
> >>>
> >>>> Tried that, doesn't work. CDI is starting CamelContext even with 
> >>>> context.setAutoStartup(false).
> >>>>
> >>>> SEVERE - Failed to create Producer for endpoint:
> >>>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
> >>>> javax.persistence.PersistenceException: No persistence providers 
> >>>> available for "camel" after trying the following discovered
> >> implementations:
> >>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >>>> org.hibernate.ejb.HibernatePersistence
> >>>> org.apache.camel.FailedToCreateProducerException: Failed to 
> >>>> create Producer for endpoint:
> >>>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
> >>>> Reason: javax.persistence.PersistenceException: No persistence 
> >>>> providers available for "camel" after trying the following 
> >>>> discovered
> >>>> implementations:
> >>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >>>> org.hibernate.ejb.HibernatePersistence
> >>>>       at
> >>>>
> > org.apache.camel.impl.ProducerCache.doGetProducer(
> ProducerCache.java:444)
> >>>>       at
> >>>> org.apache.camel.impl.ProducerCache.acquireProducer(
> >>>> ProducerCache.java:160)
> >>>>       at org.apache.camel.processor.SendProcessor.doStart(
> >>>> SendProcessor.java:243)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >>>> DelegateAsyncProcessor.java:79)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
> >>>> RedeliveryErrorHandler.java:1372)
> >>>>       at
> >>>> org.apache.camel.support.ChildServiceSupport.start(
> >>>> ChildServiceSupport.java:44)
> >>>>       at
> >>>> org.apache.camel.support.ChildServiceSupport.start(
> >>>> ChildServiceSupport.java:31)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.interceptor.DefaultChannel.
> >>>> doStart(DefaultChannel.java:156)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:62)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.MulticastProcessor.doStart(
> >>>> MulticastProcessor.java:1149)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >>>> DelegateAsyncProcessor.java:79)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at
> >>>> org.apache.camel.impl.RouteService.startChildService(
> >>>> RouteService.java:340)
> >>>>       at org.apache.camel.impl.RouteService.warmUp(
> >>>> RouteService.java:182)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
> >>>> DefaultCamelContext.java:3496)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteService
> >>>> s(
> >>>> DefaultCamelContext.java:3426)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
> >>>> DefaultCamelContext.java:3203)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
> >>>> DefaultCamelContext.java:3059)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.access$
> >>>> 000(DefaultCamelContext.java:175)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext$2.call(
> >>>> DefaultCamelContext.java:2854)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext$2.call(
> >>>> DefaultCamelContext.java:2850)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoade
> >>>> r(
> >>>> DefaultCamelContext.java:2873)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doStart(
> >>>> DefaultCamelContext.java:2850)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.start(
> >>>> DefaultCamelContext.java:2819)
> >>>>       at
> >>>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
> >>>> org/apache/camel/CamelContext.java)
> >>>>       at
> >>>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
> >>>> CdiCamelExtension.java:376)
> >>>>       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.event.ObserverMethodImpl.invoke(
> >>>> ObserverMethodImpl.java:347)
> >>>>       at
> >>>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke
> >>>> (
> >>>> ContainerEventObserverMethodImpl.java:82)
> >>>>       at
> >>>> org.apache.webbeans.event.ObserverMethodImpl.notify(
> >>>> ObserverMethodImpl.java:312)
> >>>>       at
> >>>> org.apache.webbeans.event.NotificationManager.fireEvent(
> >>>> NotificationManager.java:676)
> >>>>       at
> >>>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
> >>>> BeanManagerImpl.java:485)
> >>>>       at
> >>>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
> >>>> BeanManagerImpl.java:480)
> >>>>       at
> >>>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValid
> >>>> atio
> >>>> nE
> >>>> vent(BeansDeployer.java:719)
> >>>>       at org.apache.webbeans.config.BeansDeployer.deploy(
> >>>> BeansDeployer.java:314)
> >>>>       at
> >>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
> >>>> OpenEJBLifecycle.java:196)
> >>>>       at
> >>>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
> >>>> ThreadSingletonServiceImpl.java:193)
> >>>>       at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
> >>>>       at
> >>>> org.apache.openejb.assembler.classic.Assembler.
> >>>> createApplication(Assembler.java:908)
> >>>>       at
> >>>> org.apache.openejb.assembler.classic.Assembler.
> >>>> createApplication(Assembler.java:714)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
> >>>> TomcatWebAppBuilder.java:1254)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
> >>>> TomcatWebAppBuilder.java:1112)
> >>>>       at
> >>>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
> >>>> GlobalListenerSupport.java:133)
> >>>>       at
> >>>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> >>>> LifecycleBase.java:94)
> >>>>       at
> >>>> org.apache.catalina.core.StandardContext.startInternal(
> >>>> StandardContext.java:5093)
> >>>>       at org.apache.catalina.util.LifecycleBase.start(
> >>>> LifecycleBase.java:152)
> >>>>       at
> >>>> org.apache.catalina.core.ContainerBase.addChildInternal(
> >>>> ContainerBase.java:726)
> >>>>       at org.apache.catalina.core.ContainerBase.addChild(
> >>>> ContainerBase.java:702)
> >>>>       at org.apache.catalina.core.StandardHost.addChild(
> >>>> StandardHost.java:734)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
> >>>> TomcatWebAppBuilder.java:644)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
> >>>> TomcatWebAppBuilder.java:584)
> >>>>       at
> >>>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
> >>>> TomcatWebappDeployer.java:47)
> >>>>       at org.apache.openejb.assembler.DeployerEjb.deploy(
> >>>> DeployerEjb.java:180)
> >>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
> >>>> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.p
> >>>> roce
> >>>> ed(
> >>>> ReflectionInvocationContext.java:186)
> >>>>       at
> >>>> org.apache.openejb.security.internal.InternalSecurityInterceptor.
> >>>> invo
> >>>> ke(
> >>>> InternalSecurityInterceptor.java:35)
> >>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
> >>>> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.p
> >>>> roce
> >>>> ed(
> >>>> ReflectionInvocationContext.java:186)
> >>>>       at
> >>>> org.apache.openejb.monitoring.StatsInterceptor.record(
> >>>> StatsInterceptor.java:181)
> >>>>       at
> >>>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
> >>>> StatsInterceptor.java:100)
> >>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
> >>>> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.p
> >>>> roce
> >>>> ed(
> >>>> ReflectionInvocationContext.java:186)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.InterceptorStack.
> >>>> invoke(InterceptorStack.java:85)
> >>>>       at
> >>>> org.apache.openejb.core.singleton.SingletonContainer._
> >>>> invoke(SingletonContainer.java:256)
> >>>>       at
> >>>> org.apache.openejb.core.singleton.SingletonContainer.
> >>>> invoke(SingletonContainer.java:212)
> >>>>       at
> >>>> org.apache.openejb.server.ejbd.EjbRequestHandler.
> >>>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
> >>>>       at
> >>>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
> >>>> EjbRequestHandler.java:181)
> >>>>       at
> >>>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
> >>>> java:350)
> >>>>       at org.apache.openejb.server.ejbd.EjbDaemon.service(
> >>>> EjbDaemon.java:240)
> >>>>       at org.apache.openejb.server.ejbd.EjbServer.service(
> >>>> EjbServer.java:104)
> >>>>       at
> >>>> org.apache.openejb.server.httpd.ServerServlet.service(
> >>>> ServerServlet.java:58)
> >>>>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> >>>>       at
> >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >>>> ApplicationFilterChain.java:230)
> >>>>       at
> >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >>>> ApplicationFilterChain.java:165)
> >>>>       at
> >>>> org.apache.catalina.core.StandardWrapperValve.invoke(
> >>>> StandardWrapperValve.java:198)
> >>>>       at
> >>>> org.apache.catalina.core.StandardContextValve.invoke(
> >>>> StandardContextValve.java:108)
> >>>>       at org.apache.tomee.catalina.OpenEJBValve.invoke(
> >>>> OpenEJBValve.java:44)
> >>>>       at
> >>>> org.apache.catalina.core.StandardHostValve.invoke(
> >>>> StandardHostValve.java:140)
> >>>>       at
> >>>> org.apache.catalina.valves.ErrorReportValve.invoke(
> >>>> ErrorReportValve.java:79)
> >>>>       at
> >>>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
> >>>> AbstractAccessLogValve.java:620)
> >>>>       at
> >>>> org.apache.catalina.core.StandardEngineValve.invoke(
> >>>> StandardEngineValve.java:87)
> >>>>       at
> >>>> org.apache.catalina.connector.CoyoteAdapter.service(
> >>>> CoyoteAdapter.java:349)
> >>>>       at
> >>>> org.apache.coyote.http11.Http11Processor.service(
> >>>> Http11Processor.java:1102)
> >>>>       at
> >>>> org.apache.coyote.AbstractProcessorLight.process(
> >>>> AbstractProcessorLight.java:66)
> >>>>       at
> >>>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
> >>>> AbstractProtocol.java:788)
> >>>>       at
> >>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
> >>>> run(NioEndpoint.java:1485)
> >>>>       at
> >>>> java.util.concurrent.ThreadPoolExecutor.runWorker(
> >>>> ThreadPoolExecutor.java:1142)
> >>>>       at
> >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> >>>> ThreadPoolExecutor.java:617)
> >>>>       at
> >>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> >>>> TaskThread.java:61)
> >>>>       at java.lang.Thread.run(Thread.java:745)
> >>>> Caused by: javax.persistence.PersistenceException: No persistence 
> >>>> providers available for "camel" after trying the following 
> >>>> discovered
> >>>> implementations:
> >>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >>>> org.hibernate.ejb.HibernatePersistence
> >>>>       at
> >>>> javax.persistence.Persistence.createEntityManagerFactory(
> >>>> Persistence.java:179)
> >>>>       at
> >>>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
> >>>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.
> java:96)
> >>>>       at
> >>>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
> >>>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
> >>>>       at
> >>>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFac
> >>>> tory
> >>>> (
> >>>> JpaEndpoint.java:510)
> >>>>       at
> >>>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactor
> >>>> y(
> >>>> JpaEndpoint.java:223)
> >>>>       at
> >>>>
> > org.apache.camel.component.jpa.JpaEndpoint.validate(
> JpaEndpoint.java:503)
> >>>>       at
> >>>> org.apache.camel.component.jpa.JpaEndpoint.
> createProducer(JpaEndpoint.
> >>>> java:145)
> >>>>       at
> >>>>
> > org.apache.camel.impl.ProducerCache.doGetProducer(
> ProducerCache.java:439)
> >>>>       ... 131 more
> >>>> SEVERE - CDI Beans module deployment failed
> >>>>
> >>>> Is there a way to postpone the Camel Context initialisation be
> > Camel-CDI?
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> View this message in context: http://camel.465427.n5.nabble.
> >>>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
> >>>> Sent from the Camel - Users mailing list archive at Nabble.com.
> >>>>
>
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hello

FYI I opened https://issues.apache.org/jira/browse/TOMEE-1903 (should be
fixed in ~1h)


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-08-08 11:47 GMT+02:00 Antonin Stefanutti <an...@stefanutti.fr>:

> Hi Dimitri,
>
> Thanks a lot for your feedback.
>
> I’m planning to work on a Camel CDI example that would cover Camel JMS and
> JTA. I’ll try to extend it to cover Camel JPA or to have a dedicated Camel
> CDI example for it as well.
>
> Meanwhile, you may want to contribute, if you think you have something
> generic enough to share, that’d be awesome! http://camel.apache.org/
> contributing.html
>
> Keep in touch,
>
> Antonin
>
> > On 06 Aug 2016, at 22:25, Shultz, Dmitry <Dm...@kaltire.com>
> wrote:
> >
> > I like the CDI way of doing DI, so I decided to dump the JPA  Camel
> component.
> >
> > Ended up using beanRef invoking CDI Bean with injected EntityManager
> (for RESOURCE_LOCAL datas source). Had to begin/commit transaction
> manually) and it works.
> >
> > It would be nice if Deltaspike JPA module ca help here (@Transactional
> doesn't seem to be doing anything), but it's manageable so far.
> >
> >
> > Cheers,
> >
> > Dmitry
> >
> > ________________________________
> > From: Romain Manni-Bucau <rm...@gmail.com>
> > Sent: 05 August 2016 23:53:16
> > To: users@camel.apache.org
> > Subject: RE: Camel JPA + JTA Transaction (TomEE)
> >
> > Le 6 août 2016 02:22, "Shultz, Dmitry" <Dm...@kaltire.com> a
> écrit :
> >>
> >> Can't set the org.apache.camel.cdi.CdiCamelExtension.active=false in
> > conf/system.properties because there will be other apps deployed on the
> > same TomEE and they have no problems  (because they don't use any Camel
> > JPA).
> >> Also can't override the afterDeploymentValidation() because it is
> > private, in fact all the methods in org.apache.camel.cdi.
> CdiCamelExtension
> > class are private except of default Constructor - very well
> encapsulated...
> > may be a bit too well.
> >>
> >
> > WEB-INF/application.properties can hold it within the app too
> >
> >> While I'm working on the github project to reproduce the issue, I need
> to
> > deploy something working into our environment (i.e. something that can be
> > restarted), so I decided to try not to use RESOURCE_LOCAL instead of JTA
> > data source. It fails on :
> >>
> >> 17:15| ERROR | CamelLogger.java 156 |
> > javax.persistence.TransactionRequiredException: no transaction is in
> > progress
> >>        at
> > org.hibernate.ejb.AbstractEntityManagerImpl.flush(
> AbstractEntityManagerImpl.java:993)
> >>        at
> > org.apache.camel.component.jpa.JpaProducer$1.
> doInTransaction(JpaProducer.java:99)
> >>        at
> > org.springframework.transaction.support.TransactionTemplate.execute(
> TransactionTemplate.java:133)
> >>        at
> > org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
> >>        at
> > org.apache.camel.util.AsyncProcessorConverterHelper$
> ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.
> java:61)
> >>        at
> > org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
> >>
> >> How do I create transaction manually for JPA Camel?
> >>
> >>
> >
> > Think you have to rely on spring.
> >
> > That said a workaround for your app would be to use reflection - or add
> > openejb-core as provided in your pom - and get the txmgr doing
> > OpenEJB.getTransactionManager().
> >
> >>
> >> -----Original Message-----
> >> From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> >> Sent: August-05-16 1:57 PM
> >> To: users@camel.apache.org
> >> Subject: RE: Camel JPA + JTA Transaction (TomEE)
> >>
> >> org.apache.camel.cdi.CdiCamelExtension.active=false in
> > conf/system.properties then redefine this extension - likely extend camel
> > one to override afterDeploymentValidation and dont forget to register it
> > through standard SPI file.
> >>
> >> Thinking to it using a servletcontextlistener if in a servlet container
> > can be a better way to init camel - can be done automatically and switch
> > back to either cdi or something else if in standalone.
> >>
> >> Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> a
> > écrit :
> >>
> >> It looks like
> > org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
> >> kicks up the Camel validation befiore TomEE is fully initialized. If
> > there any way to disable this (or call validation manually later)?
> >>
> >> -----Original Message-----
> >> From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
> >> Sent: August-05-16 11:48 AM
> >> To: users@camel.apache.org
> >> Subject: Re: Camel JPA + JTA Transaction (TomEE)
> >>
> >> Note that Camel CDI does not change the semantic of
> > context.setAutoStartup(false), that is the routes within the context are
> > not started, though the context itself is started so that validation can
> > occur when the application initialise.
> >>
> >>> On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com>
> >> wrote:
> >>>
> >>> try sharing a sample with this issue on github with tomee-maven-plugin
> >>> setup to reproduce it (mvn package tomee:run -> fails). Would be more
> >>> relevant than guessing the actual issue.
> >>>
> >>>
> >>> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
> >>>
> >>>> Tried that, doesn't work. CDI is starting CamelContext even with
> >>>> context.setAutoStartup(false).
> >>>>
> >>>> SEVERE - Failed to create Producer for endpoint:
> >>>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
> >>>> javax.persistence.PersistenceException: No persistence providers
> >>>> available for "camel" after trying the following discovered
> >> implementations:
> >>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >>>> org.hibernate.ejb.HibernatePersistence
> >>>> org.apache.camel.FailedToCreateProducerException: Failed to create
> >>>> Producer for endpoint:
> >>>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
> >>>> Reason: javax.persistence.PersistenceException: No persistence
> >>>> providers available for "camel" after trying the following discovered
> >>>> implementations:
> >>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >>>> org.hibernate.ejb.HibernatePersistence
> >>>>       at
> >>>>
> > org.apache.camel.impl.ProducerCache.doGetProducer(
> ProducerCache.java:444)
> >>>>       at
> >>>> org.apache.camel.impl.ProducerCache.acquireProducer(
> >>>> ProducerCache.java:160)
> >>>>       at org.apache.camel.processor.SendProcessor.doStart(
> >>>> SendProcessor.java:243)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >>>> DelegateAsyncProcessor.java:79)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
> >>>> RedeliveryErrorHandler.java:1372)
> >>>>       at
> >>>> org.apache.camel.support.ChildServiceSupport.start(
> >>>> ChildServiceSupport.java:44)
> >>>>       at
> >>>> org.apache.camel.support.ChildServiceSupport.start(
> >>>> ChildServiceSupport.java:31)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.interceptor.DefaultChannel.
> >>>> doStart(DefaultChannel.java:156)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:62)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.MulticastProcessor.doStart(
> >>>> MulticastProcessor.java:1149)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:60)
> >>>>       at
> >>>>
> > org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:104)
> >>>>       at org.apache.camel.util.ServiceHelper.startServices(
> >>>> ServiceHelper.java:90)
> >>>>       at
> >>>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >>>> DelegateAsyncProcessor.java:79)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at org.apache.camel.util.ServiceHelper.startService(
> >>>> ServiceHelper.java:75)
> >>>>       at
> >>>> org.apache.camel.impl.RouteService.startChildService(
> >>>> RouteService.java:340)
> >>>>       at org.apache.camel.impl.RouteService.warmUp(
> >>>> RouteService.java:182)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
> >>>> DefaultCamelContext.java:3496)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
> >>>> DefaultCamelContext.java:3426)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
> >>>> DefaultCamelContext.java:3203)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
> >>>> DefaultCamelContext.java:3059)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.access$
> >>>> 000(DefaultCamelContext.java:175)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext$2.call(
> >>>> DefaultCamelContext.java:2854)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext$2.call(
> >>>> DefaultCamelContext.java:2850)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
> >>>> DefaultCamelContext.java:2873)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.doStart(
> >>>> DefaultCamelContext.java:2850)
> >>>>       at org.apache.camel.support.ServiceSupport.start(
> >>>> ServiceSupport.java:61)
> >>>>       at
> >>>> org.apache.camel.impl.DefaultCamelContext.start(
> >>>> DefaultCamelContext.java:2819)
> >>>>       at
> >>>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
> >>>> org/apache/camel/CamelContext.java)
> >>>>       at
> >>>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
> >>>> CdiCamelExtension.java:376)
> >>>>       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.event.ObserverMethodImpl.invoke(
> >>>> ObserverMethodImpl.java:347)
> >>>>       at
> >>>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
> >>>> ContainerEventObserverMethodImpl.java:82)
> >>>>       at
> >>>> org.apache.webbeans.event.ObserverMethodImpl.notify(
> >>>> ObserverMethodImpl.java:312)
> >>>>       at
> >>>> org.apache.webbeans.event.NotificationManager.fireEvent(
> >>>> NotificationManager.java:676)
> >>>>       at
> >>>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
> >>>> BeanManagerImpl.java:485)
> >>>>       at
> >>>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
> >>>> BeanManagerImpl.java:480)
> >>>>       at
> >>>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
> >>>> nE
> >>>> vent(BeansDeployer.java:719)
> >>>>       at org.apache.webbeans.config.BeansDeployer.deploy(
> >>>> BeansDeployer.java:314)
> >>>>       at
> >>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
> >>>> OpenEJBLifecycle.java:196)
> >>>>       at
> >>>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
> >>>> ThreadSingletonServiceImpl.java:193)
> >>>>       at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
> >>>>       at
> >>>> org.apache.openejb.assembler.classic.Assembler.
> >>>> createApplication(Assembler.java:908)
> >>>>       at
> >>>> org.apache.openejb.assembler.classic.Assembler.
> >>>> createApplication(Assembler.java:714)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
> >>>> TomcatWebAppBuilder.java:1254)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
> >>>> TomcatWebAppBuilder.java:1112)
> >>>>       at
> >>>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
> >>>> GlobalListenerSupport.java:133)
> >>>>       at
> >>>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> >>>> LifecycleBase.java:94)
> >>>>       at
> >>>> org.apache.catalina.core.StandardContext.startInternal(
> >>>> StandardContext.java:5093)
> >>>>       at org.apache.catalina.util.LifecycleBase.start(
> >>>> LifecycleBase.java:152)
> >>>>       at
> >>>> org.apache.catalina.core.ContainerBase.addChildInternal(
> >>>> ContainerBase.java:726)
> >>>>       at org.apache.catalina.core.ContainerBase.addChild(
> >>>> ContainerBase.java:702)
> >>>>       at org.apache.catalina.core.StandardHost.addChild(
> >>>> StandardHost.java:734)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
> >>>> TomcatWebAppBuilder.java:644)
> >>>>       at
> >>>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
> >>>> TomcatWebAppBuilder.java:584)
> >>>>       at
> >>>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
> >>>> TomcatWebappDeployer.java:47)
> >>>>       at org.apache.openejb.assembler.DeployerEjb.deploy(
> >>>> DeployerEjb.java:180)
> >>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
> >>>> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >>>> ed(
> >>>> ReflectionInvocationContext.java:186)
> >>>>       at
> >>>> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
> >>>> ke(
> >>>> InternalSecurityInterceptor.java:35)
> >>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
> >>>> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >>>> ed(
> >>>> ReflectionInvocationContext.java:186)
> >>>>       at
> >>>> org.apache.openejb.monitoring.StatsInterceptor.record(
> >>>> StatsInterceptor.java:181)
> >>>>       at
> >>>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
> >>>> StatsInterceptor.java:100)
> >>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
> >>>> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >>>> ed(
> >>>> ReflectionInvocationContext.java:186)
> >>>>       at
> >>>> org.apache.openejb.core.interceptor.InterceptorStack.
> >>>> invoke(InterceptorStack.java:85)
> >>>>       at
> >>>> org.apache.openejb.core.singleton.SingletonContainer._
> >>>> invoke(SingletonContainer.java:256)
> >>>>       at
> >>>> org.apache.openejb.core.singleton.SingletonContainer.
> >>>> invoke(SingletonContainer.java:212)
> >>>>       at
> >>>> org.apache.openejb.server.ejbd.EjbRequestHandler.
> >>>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
> >>>>       at
> >>>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
> >>>> EjbRequestHandler.java:181)
> >>>>       at
> >>>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
> >>>> java:350)
> >>>>       at org.apache.openejb.server.ejbd.EjbDaemon.service(
> >>>> EjbDaemon.java:240)
> >>>>       at org.apache.openejb.server.ejbd.EjbServer.service(
> >>>> EjbServer.java:104)
> >>>>       at
> >>>> org.apache.openejb.server.httpd.ServerServlet.service(
> >>>> ServerServlet.java:58)
> >>>>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> >>>>       at
> >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >>>> ApplicationFilterChain.java:230)
> >>>>       at
> >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >>>> ApplicationFilterChain.java:165)
> >>>>       at
> >>>> org.apache.catalina.core.StandardWrapperValve.invoke(
> >>>> StandardWrapperValve.java:198)
> >>>>       at
> >>>> org.apache.catalina.core.StandardContextValve.invoke(
> >>>> StandardContextValve.java:108)
> >>>>       at org.apache.tomee.catalina.OpenEJBValve.invoke(
> >>>> OpenEJBValve.java:44)
> >>>>       at
> >>>> org.apache.catalina.core.StandardHostValve.invoke(
> >>>> StandardHostValve.java:140)
> >>>>       at
> >>>> org.apache.catalina.valves.ErrorReportValve.invoke(
> >>>> ErrorReportValve.java:79)
> >>>>       at
> >>>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
> >>>> AbstractAccessLogValve.java:620)
> >>>>       at
> >>>> org.apache.catalina.core.StandardEngineValve.invoke(
> >>>> StandardEngineValve.java:87)
> >>>>       at
> >>>> org.apache.catalina.connector.CoyoteAdapter.service(
> >>>> CoyoteAdapter.java:349)
> >>>>       at
> >>>> org.apache.coyote.http11.Http11Processor.service(
> >>>> Http11Processor.java:1102)
> >>>>       at
> >>>> org.apache.coyote.AbstractProcessorLight.process(
> >>>> AbstractProcessorLight.java:66)
> >>>>       at
> >>>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
> >>>> AbstractProtocol.java:788)
> >>>>       at
> >>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
> >>>> run(NioEndpoint.java:1485)
> >>>>       at
> >>>> java.util.concurrent.ThreadPoolExecutor.runWorker(
> >>>> ThreadPoolExecutor.java:1142)
> >>>>       at
> >>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> >>>> ThreadPoolExecutor.java:617)
> >>>>       at
> >>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> >>>> TaskThread.java:61)
> >>>>       at java.lang.Thread.run(Thread.java:745)
> >>>> Caused by: javax.persistence.PersistenceException: No persistence
> >>>> providers available for "camel" after trying the following discovered
> >>>> implementations:
> >>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >>>> org.hibernate.ejb.HibernatePersistence
> >>>>       at
> >>>> javax.persistence.Persistence.createEntityManagerFactory(
> >>>> Persistence.java:179)
> >>>>       at
> >>>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
> >>>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.
> java:96)
> >>>>       at
> >>>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
> >>>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
> >>>>       at
> >>>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
> >>>> (
> >>>> JpaEndpoint.java:510)
> >>>>       at
> >>>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
> >>>> JpaEndpoint.java:223)
> >>>>       at
> >>>>
> > org.apache.camel.component.jpa.JpaEndpoint.validate(
> JpaEndpoint.java:503)
> >>>>       at
> >>>> org.apache.camel.component.jpa.JpaEndpoint.
> createProducer(JpaEndpoint.
> >>>> java:145)
> >>>>       at
> >>>>
> > org.apache.camel.impl.ProducerCache.doGetProducer(
> ProducerCache.java:439)
> >>>>       ... 131 more
> >>>> SEVERE - CDI Beans module deployment failed
> >>>>
> >>>> Is there a way to postpone the Camel Context initialisation be
> > Camel-CDI?
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> View this message in context: http://camel.465427.n5.nabble.
> >>>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
> >>>> Sent from the Camel - Users mailing list archive at Nabble.com.
> >>>>
>
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Antonin Stefanutti <an...@stefanutti.fr>.
Hi Dimitri,

Thanks a lot for your feedback.

I’m planning to work on a Camel CDI example that would cover Camel JMS and JTA. I’ll try to extend it to cover Camel JPA or to have a dedicated Camel CDI example for it as well.

Meanwhile, you may want to contribute, if you think you have something generic enough to share, that’d be awesome! http://camel.apache.org/contributing.html

Keep in touch,

Antonin

> On 06 Aug 2016, at 22:25, Shultz, Dmitry <Dm...@kaltire.com> wrote:
> 
> I like the CDI way of doing DI, so I decided to dump the JPA  Camel component.
> 
> Ended up using beanRef invoking CDI Bean with injected EntityManager (for RESOURCE_LOCAL datas source). Had to begin/commit transaction manually) and it works.
> 
> It would be nice if Deltaspike JPA module ca help here (@Transactional doesn't seem to be doing anything), but it's manageable so far.
> 
> 
> Cheers,
> 
> Dmitry
> 
> ________________________________
> From: Romain Manni-Bucau <rm...@gmail.com>
> Sent: 05 August 2016 23:53:16
> To: users@camel.apache.org
> Subject: RE: Camel JPA + JTA Transaction (TomEE)
> 
> Le 6 août 2016 02:22, "Shultz, Dmitry" <Dm...@kaltire.com> a écrit :
>> 
>> Can't set the org.apache.camel.cdi.CdiCamelExtension.active=false in
> conf/system.properties because there will be other apps deployed on the
> same TomEE and they have no problems  (because they don't use any Camel
> JPA).
>> Also can't override the afterDeploymentValidation() because it is
> private, in fact all the methods in org.apache.camel.cdi.CdiCamelExtension
> class are private except of default Constructor - very well encapsulated...
> may be a bit too well.
>> 
> 
> WEB-INF/application.properties can hold it within the app too
> 
>> While I'm working on the github project to reproduce the issue, I need to
> deploy something working into our environment (i.e. something that can be
> restarted), so I decided to try not to use RESOURCE_LOCAL instead of JTA
> data source. It fails on :
>> 
>> 17:15| ERROR | CamelLogger.java 156 |
> javax.persistence.TransactionRequiredException: no transaction is in
> progress
>>        at
> org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:993)
>>        at
> org.apache.camel.component.jpa.JpaProducer$1.doInTransaction(JpaProducer.java:99)
>>        at
> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
>>        at
> org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
>>        at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>>        at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
>> 
>> How do I create transaction manually for JPA Camel?
>> 
>> 
> 
> Think you have to rely on spring.
> 
> That said a workaround for your app would be to use reflection - or add
> openejb-core as provided in your pom - and get the txmgr doing
> OpenEJB.getTransactionManager().
> 
>> 
>> -----Original Message-----
>> From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
>> Sent: August-05-16 1:57 PM
>> To: users@camel.apache.org
>> Subject: RE: Camel JPA + JTA Transaction (TomEE)
>> 
>> org.apache.camel.cdi.CdiCamelExtension.active=false in
> conf/system.properties then redefine this extension - likely extend camel
> one to override afterDeploymentValidation and dont forget to register it
> through standard SPI file.
>> 
>> Thinking to it using a servletcontextlistener if in a servlet container
> can be a better way to init camel - can be done automatically and switch
> back to either cdi or something else if in standalone.
>> 
>> Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> a
> écrit :
>> 
>> It looks like
> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
>> kicks up the Camel validation befiore TomEE is fully initialized. If
> there any way to disable this (or call validation manually later)?
>> 
>> -----Original Message-----
>> From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
>> Sent: August-05-16 11:48 AM
>> To: users@camel.apache.org
>> Subject: Re: Camel JPA + JTA Transaction (TomEE)
>> 
>> Note that Camel CDI does not change the semantic of
> context.setAutoStartup(false), that is the routes within the context are
> not started, though the context itself is started so that validation can
> occur when the application initialise.
>> 
>>> On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com>
>> wrote:
>>> 
>>> try sharing a sample with this issue on github with tomee-maven-plugin
>>> setup to reproduce it (mvn package tomee:run -> fails). Would be more
>>> relevant than guessing the actual issue.
>>> 
>>> 
>>> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
>>> 
>>>> Tried that, doesn't work. CDI is starting CamelContext even with
>>>> context.setAutoStartup(false).
>>>> 
>>>> SEVERE - Failed to create Producer for endpoint:
>>>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
>>>> javax.persistence.PersistenceException: No persistence providers
>>>> available for "camel" after trying the following discovered
>> implementations:
>>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>>>> org.hibernate.ejb.HibernatePersistence
>>>> org.apache.camel.FailedToCreateProducerException: Failed to create
>>>> Producer for endpoint:
>>>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
>>>> Reason: javax.persistence.PersistenceException: No persistence
>>>> providers available for "camel" after trying the following discovered
>>>> implementations:
>>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>>>> org.hibernate.ejb.HibernatePersistence
>>>>       at
>>>> 
> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
>>>>       at
>>>> org.apache.camel.impl.ProducerCache.acquireProducer(
>>>> ProducerCache.java:160)
>>>>       at org.apache.camel.processor.SendProcessor.doStart(
>>>> SendProcessor.java:243)
>>>>       at org.apache.camel.support.ServiceSupport.start(
>>>> ServiceSupport.java:61)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:75)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:60)
>>>>       at
>>>> 
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>>>       at org.apache.camel.util.ServiceHelper.startServices(
>>>> ServiceHelper.java:90)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>>>> DelegateAsyncProcessor.java:79)
>>>>       at org.apache.camel.support.ServiceSupport.start(
>>>> ServiceSupport.java:61)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:75)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:60)
>>>>       at
>>>> 
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>>>       at org.apache.camel.util.ServiceHelper.startServices(
>>>> ServiceHelper.java:90)
>>>>       at
>>>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
>>>> RedeliveryErrorHandler.java:1372)
>>>>       at
>>>> org.apache.camel.support.ChildServiceSupport.start(
>>>> ChildServiceSupport.java:44)
>>>>       at
>>>> org.apache.camel.support.ChildServiceSupport.start(
>>>> ChildServiceSupport.java:31)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:75)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:60)
>>>>       at
>>>> 
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>>>       at org.apache.camel.util.ServiceHelper.startServices(
>>>> ServiceHelper.java:90)
>>>>       at
>>>> org.apache.camel.processor.interceptor.DefaultChannel.
>>>> doStart(DefaultChannel.java:156)
>>>>       at org.apache.camel.support.ServiceSupport.start(
>>>> ServiceSupport.java:61)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:75)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:60)
>>>>       at
>>>> 
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:62)
>>>>       at
>>>> 
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>>>       at org.apache.camel.util.ServiceHelper.startServices(
>>>> ServiceHelper.java:90)
>>>>       at
>>>> org.apache.camel.processor.MulticastProcessor.doStart(
>>>> MulticastProcessor.java:1149)
>>>>       at org.apache.camel.support.ServiceSupport.start(
>>>> ServiceSupport.java:61)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:75)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:60)
>>>>       at
>>>> 
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>>>       at org.apache.camel.util.ServiceHelper.startServices(
>>>> ServiceHelper.java:90)
>>>>       at
>>>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>>>> DelegateAsyncProcessor.java:79)
>>>>       at org.apache.camel.support.ServiceSupport.start(
>>>> ServiceSupport.java:61)
>>>>       at org.apache.camel.util.ServiceHelper.startService(
>>>> ServiceHelper.java:75)
>>>>       at
>>>> org.apache.camel.impl.RouteService.startChildService(
>>>> RouteService.java:340)
>>>>       at org.apache.camel.impl.RouteService.warmUp(
>>>> RouteService.java:182)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
>>>> DefaultCamelContext.java:3496)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
>>>> DefaultCamelContext.java:3426)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
>>>> DefaultCamelContext.java:3203)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
>>>> DefaultCamelContext.java:3059)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.access$
>>>> 000(DefaultCamelContext.java:175)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext$2.call(
>>>> DefaultCamelContext.java:2854)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext$2.call(
>>>> DefaultCamelContext.java:2850)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
>>>> DefaultCamelContext.java:2873)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.doStart(
>>>> DefaultCamelContext.java:2850)
>>>>       at org.apache.camel.support.ServiceSupport.start(
>>>> ServiceSupport.java:61)
>>>>       at
>>>> org.apache.camel.impl.DefaultCamelContext.start(
>>>> DefaultCamelContext.java:2819)
>>>>       at
>>>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
>>>> org/apache/camel/CamelContext.java)
>>>>       at
>>>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
>>>> CdiCamelExtension.java:376)
>>>>       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.event.ObserverMethodImpl.invoke(
>>>> ObserverMethodImpl.java:347)
>>>>       at
>>>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
>>>> ContainerEventObserverMethodImpl.java:82)
>>>>       at
>>>> org.apache.webbeans.event.ObserverMethodImpl.notify(
>>>> ObserverMethodImpl.java:312)
>>>>       at
>>>> org.apache.webbeans.event.NotificationManager.fireEvent(
>>>> NotificationManager.java:676)
>>>>       at
>>>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
>>>> BeanManagerImpl.java:485)
>>>>       at
>>>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
>>>> BeanManagerImpl.java:480)
>>>>       at
>>>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
>>>> nE
>>>> vent(BeansDeployer.java:719)
>>>>       at org.apache.webbeans.config.BeansDeployer.deploy(
>>>> BeansDeployer.java:314)
>>>>       at
>>>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
>>>> OpenEJBLifecycle.java:196)
>>>>       at
>>>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
>>>> ThreadSingletonServiceImpl.java:193)
>>>>       at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
>>>>       at
>>>> org.apache.openejb.assembler.classic.Assembler.
>>>> createApplication(Assembler.java:908)
>>>>       at
>>>> org.apache.openejb.assembler.classic.Assembler.
>>>> createApplication(Assembler.java:714)
>>>>       at
>>>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
>>>> TomcatWebAppBuilder.java:1254)
>>>>       at
>>>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
>>>> TomcatWebAppBuilder.java:1112)
>>>>       at
>>>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
>>>> GlobalListenerSupport.java:133)
>>>>       at
>>>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
>>>> LifecycleBase.java:94)
>>>>       at
>>>> org.apache.catalina.core.StandardContext.startInternal(
>>>> StandardContext.java:5093)
>>>>       at org.apache.catalina.util.LifecycleBase.start(
>>>> LifecycleBase.java:152)
>>>>       at
>>>> org.apache.catalina.core.ContainerBase.addChildInternal(
>>>> ContainerBase.java:726)
>>>>       at org.apache.catalina.core.ContainerBase.addChild(
>>>> ContainerBase.java:702)
>>>>       at org.apache.catalina.core.StandardHost.addChild(
>>>> StandardHost.java:734)
>>>>       at
>>>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
>>>> TomcatWebAppBuilder.java:644)
>>>>       at
>>>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
>>>> TomcatWebAppBuilder.java:584)
>>>>       at
>>>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
>>>> TomcatWebappDeployer.java:47)
>>>>       at org.apache.openejb.assembler.DeployerEjb.deploy(
>>>> DeployerEjb.java:180)
>>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
>>>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>>>       at
>>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>>>> ed(
>>>> ReflectionInvocationContext.java:186)
>>>>       at
>>>> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
>>>> ke(
>>>> InternalSecurityInterceptor.java:35)
>>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
>>>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>>>       at
>>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>>>> ed(
>>>> ReflectionInvocationContext.java:186)
>>>>       at
>>>> org.apache.openejb.monitoring.StatsInterceptor.record(
>>>> StatsInterceptor.java:181)
>>>>       at
>>>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
>>>> StatsInterceptor.java:100)
>>>>       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.openejb.core.interceptor.ReflectionInvocationContext$
>>>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>>>       at
>>>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>>>> ed(
>>>> ReflectionInvocationContext.java:186)
>>>>       at
>>>> org.apache.openejb.core.interceptor.InterceptorStack.
>>>> invoke(InterceptorStack.java:85)
>>>>       at
>>>> org.apache.openejb.core.singleton.SingletonContainer._
>>>> invoke(SingletonContainer.java:256)
>>>>       at
>>>> org.apache.openejb.core.singleton.SingletonContainer.
>>>> invoke(SingletonContainer.java:212)
>>>>       at
>>>> org.apache.openejb.server.ejbd.EjbRequestHandler.
>>>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
>>>>       at
>>>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
>>>> EjbRequestHandler.java:181)
>>>>       at
>>>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
>>>> java:350)
>>>>       at org.apache.openejb.server.ejbd.EjbDaemon.service(
>>>> EjbDaemon.java:240)
>>>>       at org.apache.openejb.server.ejbd.EjbServer.service(
>>>> EjbServer.java:104)
>>>>       at
>>>> org.apache.openejb.server.httpd.ServerServlet.service(
>>>> ServerServlet.java:58)
>>>>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>>>       at
>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>>>> ApplicationFilterChain.java:230)
>>>>       at
>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>>>> ApplicationFilterChain.java:165)
>>>>       at
>>>> org.apache.catalina.core.StandardWrapperValve.invoke(
>>>> StandardWrapperValve.java:198)
>>>>       at
>>>> org.apache.catalina.core.StandardContextValve.invoke(
>>>> StandardContextValve.java:108)
>>>>       at org.apache.tomee.catalina.OpenEJBValve.invoke(
>>>> OpenEJBValve.java:44)
>>>>       at
>>>> org.apache.catalina.core.StandardHostValve.invoke(
>>>> StandardHostValve.java:140)
>>>>       at
>>>> org.apache.catalina.valves.ErrorReportValve.invoke(
>>>> ErrorReportValve.java:79)
>>>>       at
>>>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
>>>> AbstractAccessLogValve.java:620)
>>>>       at
>>>> org.apache.catalina.core.StandardEngineValve.invoke(
>>>> StandardEngineValve.java:87)
>>>>       at
>>>> org.apache.catalina.connector.CoyoteAdapter.service(
>>>> CoyoteAdapter.java:349)
>>>>       at
>>>> org.apache.coyote.http11.Http11Processor.service(
>>>> Http11Processor.java:1102)
>>>>       at
>>>> org.apache.coyote.AbstractProcessorLight.process(
>>>> AbstractProcessorLight.java:66)
>>>>       at
>>>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
>>>> AbstractProtocol.java:788)
>>>>       at
>>>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
>>>> run(NioEndpoint.java:1485)
>>>>       at
>>>> java.util.concurrent.ThreadPoolExecutor.runWorker(
>>>> ThreadPoolExecutor.java:1142)
>>>>       at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
>>>> ThreadPoolExecutor.java:617)
>>>>       at
>>>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
>>>> TaskThread.java:61)
>>>>       at java.lang.Thread.run(Thread.java:745)
>>>> Caused by: javax.persistence.PersistenceException: No persistence
>>>> providers available for "camel" after trying the following discovered
>>>> implementations:
>>>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>>>> org.hibernate.ejb.HibernatePersistence
>>>>       at
>>>> javax.persistence.Persistence.createEntityManagerFactory(
>>>> Persistence.java:179)
>>>>       at
>>>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
>>>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
>>>>       at
>>>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
>>>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
>>>>       at
>>>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
>>>> (
>>>> JpaEndpoint.java:510)
>>>>       at
>>>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
>>>> JpaEndpoint.java:223)
>>>>       at
>>>> 
> org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
>>>>       at
>>>> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
>>>> java:145)
>>>>       at
>>>> 
> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
>>>>       ... 131 more
>>>> SEVERE - CDI Beans module deployment failed
>>>> 
>>>> Is there a way to postpone the Camel Context initialisation be
> Camel-CDI?
>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> View this message in context: http://camel.465427.n5.nabble.
>>>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>> 


Re: Camel JPA + JTA Transaction (TomEE)

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
I like the CDI way of doing DI, so I decided to dump the JPA  Camel component.

Ended up using beanRef invoking CDI Bean with injected EntityManager (for RESOURCE_LOCAL datas source). Had to begin/commit transaction manually) and it works.

It would be nice if Deltaspike JPA module ca help here (@Transactional doesn't seem to be doing anything), but it's manageable so far.


Cheers,

Dmitry

________________________________
From: Romain Manni-Bucau <rm...@gmail.com>
Sent: 05 August 2016 23:53:16
To: users@camel.apache.org
Subject: RE: Camel JPA + JTA Transaction (TomEE)

Le 6 août 2016 02:22, "Shultz, Dmitry" <Dm...@kaltire.com> a écrit :
>
> Can't set the org.apache.camel.cdi.CdiCamelExtension.active=false in
conf/system.properties because there will be other apps deployed on the
same TomEE and they have no problems  (because they don't use any Camel
JPA).
> Also can't override the afterDeploymentValidation() because it is
private, in fact all the methods in org.apache.camel.cdi.CdiCamelExtension
class are private except of default Constructor - very well encapsulated...
may be a bit too well.
>

WEB-INF/application.properties can hold it within the app too

> While I'm working on the github project to reproduce the issue, I need to
deploy something working into our environment (i.e. something that can be
restarted), so I decided to try not to use RESOURCE_LOCAL instead of JTA
data source. It fails on :
>
> 17:15| ERROR | CamelLogger.java 156 |
javax.persistence.TransactionRequiredException: no transaction is in
progress
>         at
org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:993)
>         at
org.apache.camel.component.jpa.JpaProducer$1.doInTransaction(JpaProducer.java:99)
>         at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
>         at
org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
>         at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>         at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
>
> How do I create transaction manually for JPA Camel?
>
>

Think you have to rely on spring.

That said a workaround for your app would be to use reflection - or add
openejb-core as provided in your pom - and get the txmgr doing
OpenEJB.getTransactionManager().

>
> -----Original Message-----
> From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> Sent: August-05-16 1:57 PM
> To: users@camel.apache.org
> Subject: RE: Camel JPA + JTA Transaction (TomEE)
>
> org.apache.camel.cdi.CdiCamelExtension.active=false in
conf/system.properties then redefine this extension - likely extend camel
one to override afterDeploymentValidation and dont forget to register it
through standard SPI file.
>
> Thinking to it using a servletcontextlistener if in a servlet container
can be a better way to init camel - can be done automatically and switch
back to either cdi or something else if in standalone.
>
> Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> a
écrit :
>
> It looks like
org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
> kicks up the Camel validation befiore TomEE is fully initialized. If
there any way to disable this (or call validation manually later)?
>
> -----Original Message-----
> From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
> Sent: August-05-16 11:48 AM
> To: users@camel.apache.org
> Subject: Re: Camel JPA + JTA Transaction (TomEE)
>
> Note that Camel CDI does not change the semantic of
context.setAutoStartup(false), that is the routes within the context are
not started, though the context itself is started so that validation can
occur when the application initialise.
>
> > On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com>
> wrote:
> >
> > try sharing a sample with this issue on github with tomee-maven-plugin
> > setup to reproduce it (mvn package tomee:run -> fails). Would be more
> > relevant than guessing the actual issue.
> >
> >
> > 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
> >
> >> Tried that, doesn't work. CDI is starting CamelContext even with
> >> context.setAutoStartup(false).
> >>
> >> SEVERE - Failed to create Producer for endpoint:
> >> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
> >> javax.persistence.PersistenceException: No persistence providers
> >> available for "camel" after trying the following discovered
> implementations:
> >> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >> org.hibernate.ejb.HibernatePersistence
> >> org.apache.camel.FailedToCreateProducerException: Failed to create
> >> Producer for endpoint:
> >> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
> >> Reason: javax.persistence.PersistenceException: No persistence
> >> providers available for "camel" after trying the following discovered
> >> implementations:
> >> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >> org.hibernate.ejb.HibernatePersistence
> >>        at
> >>
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
> >>        at
> >> org.apache.camel.impl.ProducerCache.acquireProducer(
> >> ProducerCache.java:160)
> >>        at org.apache.camel.processor.SendProcessor.doStart(
> >> SendProcessor.java:243)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >> DelegateAsyncProcessor.java:79)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
> >> RedeliveryErrorHandler.java:1372)
> >>        at
> >> org.apache.camel.support.ChildServiceSupport.start(
> >> ChildServiceSupport.java:44)
> >>        at
> >> org.apache.camel.support.ChildServiceSupport.start(
> >> ChildServiceSupport.java:31)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.interceptor.DefaultChannel.
> >> doStart(DefaultChannel.java:156)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:62)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.MulticastProcessor.doStart(
> >> MulticastProcessor.java:1149)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >> DelegateAsyncProcessor.java:79)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at
> >> org.apache.camel.impl.RouteService.startChildService(
> >> RouteService.java:340)
> >>        at org.apache.camel.impl.RouteService.warmUp(
> >> RouteService.java:182)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
> >> DefaultCamelContext.java:3496)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
> >> DefaultCamelContext.java:3426)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
> >> DefaultCamelContext.java:3203)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
> >> DefaultCamelContext.java:3059)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.access$
> >> 000(DefaultCamelContext.java:175)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext$2.call(
> >> DefaultCamelContext.java:2854)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext$2.call(
> >> DefaultCamelContext.java:2850)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
> >> DefaultCamelContext.java:2873)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doStart(
> >> DefaultCamelContext.java:2850)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.start(
> >> DefaultCamelContext.java:2819)
> >>        at
> >> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
> >> org/apache/camel/CamelContext.java)
> >>        at
> >> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
> >> CdiCamelExtension.java:376)
> >>        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.event.ObserverMethodImpl.invoke(
> >> ObserverMethodImpl.java:347)
> >>        at
> >> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
> >> ContainerEventObserverMethodImpl.java:82)
> >>        at
> >> org.apache.webbeans.event.ObserverMethodImpl.notify(
> >> ObserverMethodImpl.java:312)
> >>        at
> >> org.apache.webbeans.event.NotificationManager.fireEvent(
> >> NotificationManager.java:676)
> >>        at
> >> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
> >> BeanManagerImpl.java:485)
> >>        at
> >> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
> >> BeanManagerImpl.java:480)
> >>        at
> >> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
> >> nE
> >> vent(BeansDeployer.java:719)
> >>        at org.apache.webbeans.config.BeansDeployer.deploy(
> >> BeansDeployer.java:314)
> >>        at
> >> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
> >> OpenEJBLifecycle.java:196)
> >>        at
> >> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
> >> ThreadSingletonServiceImpl.java:193)
> >>        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
> >>        at
> >> org.apache.openejb.assembler.classic.Assembler.
> >> createApplication(Assembler.java:908)
> >>        at
> >> org.apache.openejb.assembler.classic.Assembler.
> >> createApplication(Assembler.java:714)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
> >> TomcatWebAppBuilder.java:1254)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
> >> TomcatWebAppBuilder.java:1112)
> >>        at
> >> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
> >> GlobalListenerSupport.java:133)
> >>        at
> >> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> >> LifecycleBase.java:94)
> >>        at
> >> org.apache.catalina.core.StandardContext.startInternal(
> >> StandardContext.java:5093)
> >>        at org.apache.catalina.util.LifecycleBase.start(
> >> LifecycleBase.java:152)
> >>        at
> >> org.apache.catalina.core.ContainerBase.addChildInternal(
> >> ContainerBase.java:726)
> >>        at org.apache.catalina.core.ContainerBase.addChild(
> >> ContainerBase.java:702)
> >>        at org.apache.catalina.core.StandardHost.addChild(
> >> StandardHost.java:734)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
> >> TomcatWebAppBuilder.java:644)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
> >> TomcatWebAppBuilder.java:584)
> >>        at
> >> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
> >> TomcatWebappDeployer.java:47)
> >>        at org.apache.openejb.assembler.DeployerEjb.deploy(
> >> DeployerEjb.java:180)
> >>        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.openejb.core.interceptor.ReflectionInvocationContext$
> >> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>        at
> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >> ed(
> >> ReflectionInvocationContext.java:186)
> >>        at
> >> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
> >> ke(
> >> InternalSecurityInterceptor.java:35)
> >>        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.openejb.core.interceptor.ReflectionInvocationContext$
> >> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>        at
> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >> ed(
> >> ReflectionInvocationContext.java:186)
> >>        at
> >> org.apache.openejb.monitoring.StatsInterceptor.record(
> >> StatsInterceptor.java:181)
> >>        at
> >> org.apache.openejb.monitoring.StatsInterceptor.invoke(
> >> StatsInterceptor.java:100)
> >>        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.openejb.core.interceptor.ReflectionInvocationContext$
> >> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>        at
> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >> ed(
> >> ReflectionInvocationContext.java:186)
> >>        at
> >> org.apache.openejb.core.interceptor.InterceptorStack.
> >> invoke(InterceptorStack.java:85)
> >>        at
> >> org.apache.openejb.core.singleton.SingletonContainer._
> >> invoke(SingletonContainer.java:256)
> >>        at
> >> org.apache.openejb.core.singleton.SingletonContainer.
> >> invoke(SingletonContainer.java:212)
> >>        at
> >> org.apache.openejb.server.ejbd.EjbRequestHandler.
> >> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
> >>        at
> >> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
> >> EjbRequestHandler.java:181)
> >>        at
> >> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
> >> java:350)
> >>        at org.apache.openejb.server.ejbd.EjbDaemon.service(
> >> EjbDaemon.java:240)
> >>        at org.apache.openejb.server.ejbd.EjbServer.service(
> >> EjbServer.java:104)
> >>        at
> >> org.apache.openejb.server.httpd.ServerServlet.service(
> >> ServerServlet.java:58)
> >>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> >>        at
> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >> ApplicationFilterChain.java:230)
> >>        at
> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >> ApplicationFilterChain.java:165)
> >>        at
> >> org.apache.catalina.core.StandardWrapperValve.invoke(
> >> StandardWrapperValve.java:198)
> >>        at
> >> org.apache.catalina.core.StandardContextValve.invoke(
> >> StandardContextValve.java:108)
> >>        at org.apache.tomee.catalina.OpenEJBValve.invoke(
> >> OpenEJBValve.java:44)
> >>        at
> >> org.apache.catalina.core.StandardHostValve.invoke(
> >> StandardHostValve.java:140)
> >>        at
> >> org.apache.catalina.valves.ErrorReportValve.invoke(
> >> ErrorReportValve.java:79)
> >>        at
> >> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
> >> AbstractAccessLogValve.java:620)
> >>        at
> >> org.apache.catalina.core.StandardEngineValve.invoke(
> >> StandardEngineValve.java:87)
> >>        at
> >> org.apache.catalina.connector.CoyoteAdapter.service(
> >> CoyoteAdapter.java:349)
> >>        at
> >> org.apache.coyote.http11.Http11Processor.service(
> >> Http11Processor.java:1102)
> >>        at
> >> org.apache.coyote.AbstractProcessorLight.process(
> >> AbstractProcessorLight.java:66)
> >>        at
> >> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
> >> AbstractProtocol.java:788)
> >>        at
> >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
> >> run(NioEndpoint.java:1485)
> >>        at
> >> java.util.concurrent.ThreadPoolExecutor.runWorker(
> >> ThreadPoolExecutor.java:1142)
> >>        at
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> >> ThreadPoolExecutor.java:617)
> >>        at
> >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> >> TaskThread.java:61)
> >>        at java.lang.Thread.run(Thread.java:745)
> >> Caused by: javax.persistence.PersistenceException: No persistence
> >> providers available for "camel" after trying the following discovered
> >> implementations:
> >> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >> org.hibernate.ejb.HibernatePersistence
> >>        at
> >> javax.persistence.Persistence.createEntityManagerFactory(
> >> Persistence.java:179)
> >>        at
> >> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
> >> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
> >>        at
> >> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
> >> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
> >>        at
> >> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
> >> (
> >> JpaEndpoint.java:510)
> >>        at
> >> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
> >> JpaEndpoint.java:223)
> >>        at
> >>
org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
> >>        at
> >> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
> >> java:145)
> >>        at
> >>
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
> >>        ... 131 more
> >> SEVERE - CDI Beans module deployment failed
> >>
> >> Is there a way to postpone the Camel Context initialisation be
Camel-CDI?
> >>
> >>
> >>
> >>
> >> --
> >> View this message in context: http://camel.465427.n5.nabble.
> >> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
> >> Sent from the Camel - Users mailing list archive at Nabble.com.
> >>

RE: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Le 6 août 2016 02:22, "Shultz, Dmitry" <Dm...@kaltire.com> a écrit :
>
> Can't set the org.apache.camel.cdi.CdiCamelExtension.active=false in
conf/system.properties because there will be other apps deployed on the
same TomEE and they have no problems  (because they don't use any Camel
JPA).
> Also can't override the afterDeploymentValidation() because it is
private, in fact all the methods in org.apache.camel.cdi.CdiCamelExtension
class are private except of default Constructor - very well encapsulated...
may be a bit too well.
>

WEB-INF/application.properties can hold it within the app too

> While I'm working on the github project to reproduce the issue, I need to
deploy something working into our environment (i.e. something that can be
restarted), so I decided to try not to use RESOURCE_LOCAL instead of JTA
data source. It fails on :
>
> 17:15| ERROR | CamelLogger.java 156 |
javax.persistence.TransactionRequiredException: no transaction is in
progress
>         at
org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:993)
>         at
org.apache.camel.component.jpa.JpaProducer$1.doInTransaction(JpaProducer.java:99)
>         at
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
>         at
org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
>         at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
>         at
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)
>
> How do I create transaction manually for JPA Camel?
>
>

Think you have to rely on spring.

That said a workaround for your app would be to use reflection - or add
openejb-core as provided in your pom - and get the txmgr doing
OpenEJB.getTransactionManager().

>
> -----Original Message-----
> From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com]
> Sent: August-05-16 1:57 PM
> To: users@camel.apache.org
> Subject: RE: Camel JPA + JTA Transaction (TomEE)
>
> org.apache.camel.cdi.CdiCamelExtension.active=false in
conf/system.properties then redefine this extension - likely extend camel
one to override afterDeploymentValidation and dont forget to register it
through standard SPI file.
>
> Thinking to it using a servletcontextlistener if in a servlet container
can be a better way to init camel - can be done automatically and switch
back to either cdi or something else if in standalone.
>
> Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> a
écrit :
>
> It looks like
org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
> kicks up the Camel validation befiore TomEE is fully initialized. If
there any way to disable this (or call validation manually later)?
>
> -----Original Message-----
> From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
> Sent: August-05-16 11:48 AM
> To: users@camel.apache.org
> Subject: Re: Camel JPA + JTA Transaction (TomEE)
>
> Note that Camel CDI does not change the semantic of
context.setAutoStartup(false), that is the routes within the context are
not started, though the context itself is started so that validation can
occur when the application initialise.
>
> > On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com>
> wrote:
> >
> > try sharing a sample with this issue on github with tomee-maven-plugin
> > setup to reproduce it (mvn package tomee:run -> fails). Would be more
> > relevant than guessing the actual issue.
> >
> >
> > 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
> >
> >> Tried that, doesn't work. CDI is starting CamelContext even with
> >> context.setAutoStartup(false).
> >>
> >> SEVERE - Failed to create Producer for endpoint:
> >> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
> >> javax.persistence.PersistenceException: No persistence providers
> >> available for "camel" after trying the following discovered
> implementations:
> >> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >> org.hibernate.ejb.HibernatePersistence
> >> org.apache.camel.FailedToCreateProducerException: Failed to create
> >> Producer for endpoint:
> >> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
> >> Reason: javax.persistence.PersistenceException: No persistence
> >> providers available for "camel" after trying the following discovered
> >> implementations:
> >> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >> org.hibernate.ejb.HibernatePersistence
> >>        at
> >>
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
> >>        at
> >> org.apache.camel.impl.ProducerCache.acquireProducer(
> >> ProducerCache.java:160)
> >>        at org.apache.camel.processor.SendProcessor.doStart(
> >> SendProcessor.java:243)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >> DelegateAsyncProcessor.java:79)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
> >> RedeliveryErrorHandler.java:1372)
> >>        at
> >> org.apache.camel.support.ChildServiceSupport.start(
> >> ChildServiceSupport.java:44)
> >>        at
> >> org.apache.camel.support.ChildServiceSupport.start(
> >> ChildServiceSupport.java:31)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.interceptor.DefaultChannel.
> >> doStart(DefaultChannel.java:156)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:62)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.MulticastProcessor.doStart(
> >> MulticastProcessor.java:1149)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:60)
> >>        at
> >>
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
> >>        at org.apache.camel.util.ServiceHelper.startServices(
> >> ServiceHelper.java:90)
> >>        at
> >> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> >> DelegateAsyncProcessor.java:79)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at org.apache.camel.util.ServiceHelper.startService(
> >> ServiceHelper.java:75)
> >>        at
> >> org.apache.camel.impl.RouteService.startChildService(
> >> RouteService.java:340)
> >>        at org.apache.camel.impl.RouteService.warmUp(
> >> RouteService.java:182)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
> >> DefaultCamelContext.java:3496)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
> >> DefaultCamelContext.java:3426)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
> >> DefaultCamelContext.java:3203)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
> >> DefaultCamelContext.java:3059)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.access$
> >> 000(DefaultCamelContext.java:175)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext$2.call(
> >> DefaultCamelContext.java:2854)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext$2.call(
> >> DefaultCamelContext.java:2850)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
> >> DefaultCamelContext.java:2873)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.doStart(
> >> DefaultCamelContext.java:2850)
> >>        at org.apache.camel.support.ServiceSupport.start(
> >> ServiceSupport.java:61)
> >>        at
> >> org.apache.camel.impl.DefaultCamelContext.start(
> >> DefaultCamelContext.java:2819)
> >>        at
> >> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
> >> org/apache/camel/CamelContext.java)
> >>        at
> >> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
> >> CdiCamelExtension.java:376)
> >>        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.event.ObserverMethodImpl.invoke(
> >> ObserverMethodImpl.java:347)
> >>        at
> >> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
> >> ContainerEventObserverMethodImpl.java:82)
> >>        at
> >> org.apache.webbeans.event.ObserverMethodImpl.notify(
> >> ObserverMethodImpl.java:312)
> >>        at
> >> org.apache.webbeans.event.NotificationManager.fireEvent(
> >> NotificationManager.java:676)
> >>        at
> >> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
> >> BeanManagerImpl.java:485)
> >>        at
> >> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
> >> BeanManagerImpl.java:480)
> >>        at
> >> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
> >> nE
> >> vent(BeansDeployer.java:719)
> >>        at org.apache.webbeans.config.BeansDeployer.deploy(
> >> BeansDeployer.java:314)
> >>        at
> >> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
> >> OpenEJBLifecycle.java:196)
> >>        at
> >> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
> >> ThreadSingletonServiceImpl.java:193)
> >>        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
> >>        at
> >> org.apache.openejb.assembler.classic.Assembler.
> >> createApplication(Assembler.java:908)
> >>        at
> >> org.apache.openejb.assembler.classic.Assembler.
> >> createApplication(Assembler.java:714)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
> >> TomcatWebAppBuilder.java:1254)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
> >> TomcatWebAppBuilder.java:1112)
> >>        at
> >> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
> >> GlobalListenerSupport.java:133)
> >>        at
> >> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> >> LifecycleBase.java:94)
> >>        at
> >> org.apache.catalina.core.StandardContext.startInternal(
> >> StandardContext.java:5093)
> >>        at org.apache.catalina.util.LifecycleBase.start(
> >> LifecycleBase.java:152)
> >>        at
> >> org.apache.catalina.core.ContainerBase.addChildInternal(
> >> ContainerBase.java:726)
> >>        at org.apache.catalina.core.ContainerBase.addChild(
> >> ContainerBase.java:702)
> >>        at org.apache.catalina.core.StandardHost.addChild(
> >> StandardHost.java:734)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
> >> TomcatWebAppBuilder.java:644)
> >>        at
> >> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
> >> TomcatWebAppBuilder.java:584)
> >>        at
> >> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
> >> TomcatWebappDeployer.java:47)
> >>        at org.apache.openejb.assembler.DeployerEjb.deploy(
> >> DeployerEjb.java:180)
> >>        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.openejb.core.interceptor.ReflectionInvocationContext$
> >> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>        at
> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >> ed(
> >> ReflectionInvocationContext.java:186)
> >>        at
> >> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
> >> ke(
> >> InternalSecurityInterceptor.java:35)
> >>        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.openejb.core.interceptor.ReflectionInvocationContext$
> >> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>        at
> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >> ed(
> >> ReflectionInvocationContext.java:186)
> >>        at
> >> org.apache.openejb.monitoring.StatsInterceptor.record(
> >> StatsInterceptor.java:181)
> >>        at
> >> org.apache.openejb.monitoring.StatsInterceptor.invoke(
> >> StatsInterceptor.java:100)
> >>        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.openejb.core.interceptor.ReflectionInvocationContext$
> >> Invocation.invoke(ReflectionInvocationContext.java:205)
> >>        at
> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
> >> ed(
> >> ReflectionInvocationContext.java:186)
> >>        at
> >> org.apache.openejb.core.interceptor.InterceptorStack.
> >> invoke(InterceptorStack.java:85)
> >>        at
> >> org.apache.openejb.core.singleton.SingletonContainer._
> >> invoke(SingletonContainer.java:256)
> >>        at
> >> org.apache.openejb.core.singleton.SingletonContainer.
> >> invoke(SingletonContainer.java:212)
> >>        at
> >> org.apache.openejb.server.ejbd.EjbRequestHandler.
> >> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
> >>        at
> >> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
> >> EjbRequestHandler.java:181)
> >>        at
> >> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
> >> java:350)
> >>        at org.apache.openejb.server.ejbd.EjbDaemon.service(
> >> EjbDaemon.java:240)
> >>        at org.apache.openejb.server.ejbd.EjbServer.service(
> >> EjbServer.java:104)
> >>        at
> >> org.apache.openejb.server.httpd.ServerServlet.service(
> >> ServerServlet.java:58)
> >>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
> >>        at
> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> >> ApplicationFilterChain.java:230)
> >>        at
> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> >> ApplicationFilterChain.java:165)
> >>        at
> >> org.apache.catalina.core.StandardWrapperValve.invoke(
> >> StandardWrapperValve.java:198)
> >>        at
> >> org.apache.catalina.core.StandardContextValve.invoke(
> >> StandardContextValve.java:108)
> >>        at org.apache.tomee.catalina.OpenEJBValve.invoke(
> >> OpenEJBValve.java:44)
> >>        at
> >> org.apache.catalina.core.StandardHostValve.invoke(
> >> StandardHostValve.java:140)
> >>        at
> >> org.apache.catalina.valves.ErrorReportValve.invoke(
> >> ErrorReportValve.java:79)
> >>        at
> >> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
> >> AbstractAccessLogValve.java:620)
> >>        at
> >> org.apache.catalina.core.StandardEngineValve.invoke(
> >> StandardEngineValve.java:87)
> >>        at
> >> org.apache.catalina.connector.CoyoteAdapter.service(
> >> CoyoteAdapter.java:349)
> >>        at
> >> org.apache.coyote.http11.Http11Processor.service(
> >> Http11Processor.java:1102)
> >>        at
> >> org.apache.coyote.AbstractProcessorLight.process(
> >> AbstractProcessorLight.java:66)
> >>        at
> >> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
> >> AbstractProtocol.java:788)
> >>        at
> >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
> >> run(NioEndpoint.java:1485)
> >>        at
> >> java.util.concurrent.ThreadPoolExecutor.runWorker(
> >> ThreadPoolExecutor.java:1142)
> >>        at
> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> >> ThreadPoolExecutor.java:617)
> >>        at
> >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> >> TaskThread.java:61)
> >>        at java.lang.Thread.run(Thread.java:745)
> >> Caused by: javax.persistence.PersistenceException: No persistence
> >> providers available for "camel" after trying the following discovered
> >> implementations:
> >> org.apache.openjpa.persistence.PersistenceProviderImpl,
> >> org.hibernate.ejb.HibernatePersistence
> >>        at
> >> javax.persistence.Persistence.createEntityManagerFactory(
> >> Persistence.java:179)
> >>        at
> >> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
> >> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
> >>        at
> >> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
> >> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
> >>        at
> >> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
> >> (
> >> JpaEndpoint.java:510)
> >>        at
> >> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
> >> JpaEndpoint.java:223)
> >>        at
> >>
org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
> >>        at
> >> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
> >> java:145)
> >>        at
> >>
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
> >>        ... 131 more
> >> SEVERE - CDI Beans module deployment failed
> >>
> >> Is there a way to postpone the Camel Context initialisation be
Camel-CDI?
> >>
> >>
> >>
> >>
> >> --
> >> View this message in context: http://camel.465427.n5.nabble.
> >> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
> >> Sent from the Camel - Users mailing list archive at Nabble.com.
> >>

RE: Camel JPA + JTA Transaction (TomEE)

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
Can't set the org.apache.camel.cdi.CdiCamelExtension.active=false in conf/system.properties because there will be other apps deployed on the same TomEE and they have no problems  (because they don't use any Camel JPA). 
Also can't override the afterDeploymentValidation() because it is private, in fact all the methods in org.apache.camel.cdi.CdiCamelExtension class are private except of default Constructor - very well encapsulated... may be a bit too well.

While I'm working on the github project to reproduce the issue, I need to deploy something working into our environment (i.e. something that can be restarted), so I decided to try not to use RESOURCE_LOCAL instead of JTA data source. It fails on :

17:15| ERROR | CamelLogger.java 156 | javax.persistence.TransactionRequiredException: no transaction is in progress
	at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:993)
	at org.apache.camel.component.jpa.JpaProducer$1.doInTransaction(JpaProducer.java:99)
	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
	at org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
	at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
	at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145)

How do I create transaction manually for JPA Camel?



-----Original Message-----
From: Romain Manni-Bucau [mailto:rmannibucau@gmail.com] 
Sent: August-05-16 1:57 PM
To: users@camel.apache.org
Subject: RE: Camel JPA + JTA Transaction (TomEE)

org.apache.camel.cdi.CdiCamelExtension.active=false in conf/system.properties then redefine this extension - likely extend camel one to override afterDeploymentValidation and dont forget to register it through standard SPI file.

Thinking to it using a servletcontextlistener if in a servlet container can be a better way to init camel - can be done automatically and switch back to either cdi or something else if in standalone.

Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> a écrit :

It looks like org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
kicks up the Camel validation befiore TomEE is fully initialized. If there any way to disable this (or call validation manually later)?

-----Original Message-----
From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
Sent: August-05-16 11:48 AM
To: users@camel.apache.org
Subject: Re: Camel JPA + JTA Transaction (TomEE)

Note that Camel CDI does not change the semantic of context.setAutoStartup(false), that is the routes within the context are not started, though the context itself is started so that validation can occur when the application initialise.

> On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com>
wrote:
>
> try sharing a sample with this issue on github with tomee-maven-plugin 
> setup to reproduce it (mvn package tomee:run -> fails). Would be more 
> relevant than guessing the actual issue.
>
>
> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
>
>> Tried that, doesn't work. CDI is starting CamelContext even with 
>> context.setAutoStartup(false).
>>
>> SEVERE - Failed to create Producer for endpoint:
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
>> javax.persistence.PersistenceException: No persistence providers 
>> available for "camel" after trying the following discovered
implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>> org.apache.camel.FailedToCreateProducerException: Failed to create 
>> Producer for endpoint:
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
>> Reason: javax.persistence.PersistenceException: No persistence 
>> providers available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
>>        at
>> org.apache.camel.impl.ProducerCache.acquireProducer(
>> ProducerCache.java:160)
>>        at org.apache.camel.processor.SendProcessor.doStart(
>> SendProcessor.java:243)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
>> RedeliveryErrorHandler.java:1372)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:44)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:31)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.interceptor.DefaultChannel.
>> doStart(DefaultChannel.java:156)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:62)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.MulticastProcessor.doStart(
>> MulticastProcessor.java:1149)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at
>> org.apache.camel.impl.RouteService.startChildService(
>> RouteService.java:340)
>>        at org.apache.camel.impl.RouteService.warmUp(
>> RouteService.java:182)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
>> DefaultCamelContext.java:3496)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
>> DefaultCamelContext.java:3426)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
>> DefaultCamelContext.java:3203)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
>> DefaultCamelContext.java:3059)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.access$
>> 000(DefaultCamelContext.java:175)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2854)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2850)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
>> DefaultCamelContext.java:2873)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStart(
>> DefaultCamelContext.java:2850)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.start(
>> DefaultCamelContext.java:2819)
>>        at
>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
>> org/apache/camel/CamelContext.java)
>>        at
>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
>> CdiCamelExtension.java:376)
>>        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.event.ObserverMethodImpl.invoke(
>> ObserverMethodImpl.java:347)
>>        at
>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
>> ContainerEventObserverMethodImpl.java:82)
>>        at
>> org.apache.webbeans.event.ObserverMethodImpl.notify(
>> ObserverMethodImpl.java:312)
>>        at
>> org.apache.webbeans.event.NotificationManager.fireEvent(
>> NotificationManager.java:676)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
>> BeanManagerImpl.java:485)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
>> BeanManagerImpl.java:480)
>>        at
>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
>> nE
>> vent(BeansDeployer.java:719)
>>        at org.apache.webbeans.config.BeansDeployer.deploy(
>> BeansDeployer.java:314)
>>        at
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
>> OpenEJBLifecycle.java:196)
>>        at
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
>> ThreadSingletonServiceImpl.java:193)
>>        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:908)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:714)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
>> TomcatWebAppBuilder.java:1254)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
>> TomcatWebAppBuilder.java:1112)
>>        at
>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
>> GlobalListenerSupport.java:133)
>>        at
>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
>> LifecycleBase.java:94)
>>        at
>> org.apache.catalina.core.StandardContext.startInternal(
>> StandardContext.java:5093)
>>        at org.apache.catalina.util.LifecycleBase.start(
>> LifecycleBase.java:152)
>>        at
>> org.apache.catalina.core.ContainerBase.addChildInternal(
>> ContainerBase.java:726)
>>        at org.apache.catalina.core.ContainerBase.addChild(
>> ContainerBase.java:702)
>>        at org.apache.catalina.core.StandardHost.addChild(
>> StandardHost.java:734)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
>> TomcatWebAppBuilder.java:644)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
>> TomcatWebAppBuilder.java:584)
>>        at
>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
>> TomcatWebappDeployer.java:47)
>>        at org.apache.openejb.assembler.DeployerEjb.deploy(
>> DeployerEjb.java:180)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
>> ke(
>> InternalSecurityInterceptor.java:35)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.record(
>> StatsInterceptor.java:181)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
>> StatsInterceptor.java:100)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.core.interceptor.InterceptorStack.
>> invoke(InterceptorStack.java:85)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer._
>> invoke(SingletonContainer.java:256)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer.
>> invoke(SingletonContainer.java:212)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.
>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
>> EjbRequestHandler.java:181)
>>        at
>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
>> java:350)
>>        at org.apache.openejb.server.ejbd.EjbDaemon.service(
>> EjbDaemon.java:240)
>>        at org.apache.openejb.server.ejbd.EjbServer.service(
>> EjbServer.java:104)
>>        at
>> org.apache.openejb.server.httpd.ServerServlet.service(
>> ServerServlet.java:58)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:230)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:165)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(
>> StandardWrapperValve.java:198)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(
>> StandardContextValve.java:108)
>>        at org.apache.tomee.catalina.OpenEJBValve.invoke(
>> OpenEJBValve.java:44)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(
>> StandardHostValve.java:140)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(
>> ErrorReportValve.java:79)
>>        at
>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
>> AbstractAccessLogValve.java:620)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(
>> StandardEngineValve.java:87)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(
>> CoyoteAdapter.java:349)
>>        at
>> org.apache.coyote.http11.Http11Processor.service(
>> Http11Processor.java:1102)
>>        at
>> org.apache.coyote.AbstractProcessorLight.process(
>> AbstractProcessorLight.java:66)
>>        at
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
>> AbstractProtocol.java:788)
>>        at
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
>> run(NioEndpoint.java:1485)
>>        at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(
>> ThreadPoolExecutor.java:1142)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
>> ThreadPoolExecutor.java:617)
>>        at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
>> TaskThread.java:61)
>>        at java.lang.Thread.run(Thread.java:745)
>> Caused by: javax.persistence.PersistenceException: No persistence 
>> providers available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> javax.persistence.Persistence.createEntityManagerFactory(
>> Persistence.java:179)
>>        at
>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
>>        at
>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
>> (
>> JpaEndpoint.java:510)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
>> JpaEndpoint.java:223)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
>> java:145)
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
>>        ... 131 more
>> SEVERE - CDI Beans module deployment failed
>>
>> Is there a way to postpone the Camel Context initialisation be Camel-CDI?
>>
>>
>>
>>
>> --
>> View this message in context: http://camel.465427.n5.nabble.
>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>

RE: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
org.apache.camel.cdi.CdiCamelExtension.active=false in
conf/system.properties then redefine this extension - likely extend camel
one to override afterDeploymentValidation and dont forget to register it
through standard SPI file.

Thinking to it using a servletcontextlistener if in a servlet container can
be a better way to init camel - can be done automatically and switch back
to either cdi or something else if in standalone.

Le 5 août 2016 21:58, "Shultz, Dmitry" <Dm...@kaltire.com> a écrit :

It looks like org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation()
kicks up the Camel validation befiore TomEE is fully initialized. If there
any way to disable this (or call validation manually later)?

-----Original Message-----
From: Antonin Stefanutti [mailto:antonin@stefanutti.fr]
Sent: August-05-16 11:48 AM
To: users@camel.apache.org
Subject: Re: Camel JPA + JTA Transaction (TomEE)

Note that Camel CDI does not change the semantic of
context.setAutoStartup(false), that is the routes within the context are
not started, though the context itself is started so that validation can
occur when the application initialise.

> On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com>
wrote:
>
> try sharing a sample with this issue on github with tomee-maven-plugin
> setup to reproduce it (mvn package tomee:run -> fails). Would be more
> relevant than guessing the actual issue.
>
>
> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
>
>> Tried that, doesn't work. CDI is starting CamelContext even with
>> context.setAutoStartup(false).
>>
>> SEVERE - Failed to create Producer for endpoint:
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
>> javax.persistence.PersistenceException: No persistence providers
>> available for "camel" after trying the following discovered
implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>> org.apache.camel.FailedToCreateProducerException: Failed to create
>> Producer for endpoint:
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
>> Reason: javax.persistence.PersistenceException: No persistence
>> providers available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
>>        at
>> org.apache.camel.impl.ProducerCache.acquireProducer(
>> ProducerCache.java:160)
>>        at org.apache.camel.processor.SendProcessor.doStart(
>> SendProcessor.java:243)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
>> RedeliveryErrorHandler.java:1372)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:44)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:31)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.interceptor.DefaultChannel.
>> doStart(DefaultChannel.java:156)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:62)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.MulticastProcessor.doStart(
>> MulticastProcessor.java:1149)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at
>> org.apache.camel.impl.RouteService.startChildService(
>> RouteService.java:340)
>>        at org.apache.camel.impl.RouteService.warmUp(
>> RouteService.java:182)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
>> DefaultCamelContext.java:3496)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
>> DefaultCamelContext.java:3426)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
>> DefaultCamelContext.java:3203)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
>> DefaultCamelContext.java:3059)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.access$
>> 000(DefaultCamelContext.java:175)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2854)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2850)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
>> DefaultCamelContext.java:2873)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStart(
>> DefaultCamelContext.java:2850)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.start(
>> DefaultCamelContext.java:2819)
>>        at
>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
>> org/apache/camel/CamelContext.java)
>>        at
>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
>> CdiCamelExtension.java:376)
>>        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.event.ObserverMethodImpl.invoke(
>> ObserverMethodImpl.java:347)
>>        at
>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
>> ContainerEventObserverMethodImpl.java:82)
>>        at
>> org.apache.webbeans.event.ObserverMethodImpl.notify(
>> ObserverMethodImpl.java:312)
>>        at
>> org.apache.webbeans.event.NotificationManager.fireEvent(
>> NotificationManager.java:676)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
>> BeanManagerImpl.java:485)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
>> BeanManagerImpl.java:480)
>>        at
>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
>> nE
>> vent(BeansDeployer.java:719)
>>        at org.apache.webbeans.config.BeansDeployer.deploy(
>> BeansDeployer.java:314)
>>        at
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
>> OpenEJBLifecycle.java:196)
>>        at
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
>> ThreadSingletonServiceImpl.java:193)
>>        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:908)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:714)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
>> TomcatWebAppBuilder.java:1254)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
>> TomcatWebAppBuilder.java:1112)
>>        at
>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
>> GlobalListenerSupport.java:133)
>>        at
>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
>> LifecycleBase.java:94)
>>        at
>> org.apache.catalina.core.StandardContext.startInternal(
>> StandardContext.java:5093)
>>        at org.apache.catalina.util.LifecycleBase.start(
>> LifecycleBase.java:152)
>>        at
>> org.apache.catalina.core.ContainerBase.addChildInternal(
>> ContainerBase.java:726)
>>        at org.apache.catalina.core.ContainerBase.addChild(
>> ContainerBase.java:702)
>>        at org.apache.catalina.core.StandardHost.addChild(
>> StandardHost.java:734)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
>> TomcatWebAppBuilder.java:644)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
>> TomcatWebAppBuilder.java:584)
>>        at
>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
>> TomcatWebappDeployer.java:47)
>>        at org.apache.openejb.assembler.DeployerEjb.deploy(
>> DeployerEjb.java:180)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
>> ke(
>> InternalSecurityInterceptor.java:35)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.record(
>> StatsInterceptor.java:181)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
>> StatsInterceptor.java:100)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.core.interceptor.InterceptorStack.
>> invoke(InterceptorStack.java:85)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer._
>> invoke(SingletonContainer.java:256)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer.
>> invoke(SingletonContainer.java:212)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.
>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
>> EjbRequestHandler.java:181)
>>        at
>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
>> java:350)
>>        at org.apache.openejb.server.ejbd.EjbDaemon.service(
>> EjbDaemon.java:240)
>>        at org.apache.openejb.server.ejbd.EjbServer.service(
>> EjbServer.java:104)
>>        at
>> org.apache.openejb.server.httpd.ServerServlet.service(
>> ServerServlet.java:58)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:230)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:165)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(
>> StandardWrapperValve.java:198)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(
>> StandardContextValve.java:108)
>>        at org.apache.tomee.catalina.OpenEJBValve.invoke(
>> OpenEJBValve.java:44)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(
>> StandardHostValve.java:140)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(
>> ErrorReportValve.java:79)
>>        at
>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
>> AbstractAccessLogValve.java:620)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(
>> StandardEngineValve.java:87)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(
>> CoyoteAdapter.java:349)
>>        at
>> org.apache.coyote.http11.Http11Processor.service(
>> Http11Processor.java:1102)
>>        at
>> org.apache.coyote.AbstractProcessorLight.process(
>> AbstractProcessorLight.java:66)
>>        at
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
>> AbstractProtocol.java:788)
>>        at
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
>> run(NioEndpoint.java:1485)
>>        at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(
>> ThreadPoolExecutor.java:1142)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
>> ThreadPoolExecutor.java:617)
>>        at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
>> TaskThread.java:61)
>>        at java.lang.Thread.run(Thread.java:745)
>> Caused by: javax.persistence.PersistenceException: No persistence
>> providers available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> javax.persistence.Persistence.createEntityManagerFactory(
>> Persistence.java:179)
>>        at
>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
>>        at
>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
>> (
>> JpaEndpoint.java:510)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
>> JpaEndpoint.java:223)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
>> java:145)
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
>>        ... 131 more
>> SEVERE - CDI Beans module deployment failed
>>
>> Is there a way to postpone the Camel Context initialisation be Camel-CDI?
>>
>>
>>
>>
>> --
>> View this message in context: http://camel.465427.n5.nabble.
>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>

RE: Camel JPA + JTA Transaction (TomEE)

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
It looks like org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation() kicks up the Camel validation befiore TomEE is fully initialized. If there any way to disable this (or call validation manually later)?

-----Original Message-----
From: Antonin Stefanutti [mailto:antonin@stefanutti.fr] 
Sent: August-05-16 11:48 AM
To: users@camel.apache.org
Subject: Re: Camel JPA + JTA Transaction (TomEE)

Note that Camel CDI does not change the semantic of context.setAutoStartup(false), that is the routes within the context are not started, though the context itself is started so that validation can occur when the application initialise.

> On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com> wrote:
> 
> try sharing a sample with this issue on github with tomee-maven-plugin 
> setup to reproduce it (mvn package tomee:run -> fails). Would be more 
> relevant than guessing the actual issue.
> 
> 
> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
> 
>> Tried that, doesn't work. CDI is starting CamelContext even with 
>> context.setAutoStartup(false).
>> 
>> SEVERE - Failed to create Producer for endpoint:
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
>> javax.persistence.PersistenceException: No persistence providers 
>> available for "camel" after trying the following discovered implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>> org.apache.camel.FailedToCreateProducerException: Failed to create 
>> Producer for endpoint: 
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
>> Reason: javax.persistence.PersistenceException: No persistence 
>> providers available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
>>        at
>> org.apache.camel.impl.ProducerCache.acquireProducer(
>> ProducerCache.java:160)
>>        at org.apache.camel.processor.SendProcessor.doStart(
>> SendProcessor.java:243)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
>> RedeliveryErrorHandler.java:1372)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:44)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:31)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.interceptor.DefaultChannel.
>> doStart(DefaultChannel.java:156)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:62)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.MulticastProcessor.doStart(
>> MulticastProcessor.java:1149)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at
>> org.apache.camel.impl.RouteService.startChildService(
>> RouteService.java:340)
>>        at org.apache.camel.impl.RouteService.warmUp(
>> RouteService.java:182)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
>> DefaultCamelContext.java:3496)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
>> DefaultCamelContext.java:3426)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
>> DefaultCamelContext.java:3203)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
>> DefaultCamelContext.java:3059)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.access$
>> 000(DefaultCamelContext.java:175)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2854)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2850)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
>> DefaultCamelContext.java:2873)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStart(
>> DefaultCamelContext.java:2850)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.start(
>> DefaultCamelContext.java:2819)
>>        at
>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
>> org/apache/camel/CamelContext.java)
>>        at
>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
>> CdiCamelExtension.java:376)
>>        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.event.ObserverMethodImpl.invoke(
>> ObserverMethodImpl.java:347)
>>        at
>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
>> ContainerEventObserverMethodImpl.java:82)
>>        at
>> org.apache.webbeans.event.ObserverMethodImpl.notify(
>> ObserverMethodImpl.java:312)
>>        at
>> org.apache.webbeans.event.NotificationManager.fireEvent(
>> NotificationManager.java:676)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
>> BeanManagerImpl.java:485)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
>> BeanManagerImpl.java:480)
>>        at
>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidatio
>> nE
>> vent(BeansDeployer.java:719)
>>        at org.apache.webbeans.config.BeansDeployer.deploy(
>> BeansDeployer.java:314)
>>        at
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
>> OpenEJBLifecycle.java:196)
>>        at
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
>> ThreadSingletonServiceImpl.java:193)
>>        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:908)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:714)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
>> TomcatWebAppBuilder.java:1254)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
>> TomcatWebAppBuilder.java:1112)
>>        at
>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
>> GlobalListenerSupport.java:133)
>>        at
>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
>> LifecycleBase.java:94)
>>        at
>> org.apache.catalina.core.StandardContext.startInternal(
>> StandardContext.java:5093)
>>        at org.apache.catalina.util.LifecycleBase.start(
>> LifecycleBase.java:152)
>>        at
>> org.apache.catalina.core.ContainerBase.addChildInternal(
>> ContainerBase.java:726)
>>        at org.apache.catalina.core.ContainerBase.addChild(
>> ContainerBase.java:702)
>>        at org.apache.catalina.core.StandardHost.addChild(
>> StandardHost.java:734)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
>> TomcatWebAppBuilder.java:644)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
>> TomcatWebAppBuilder.java:584)
>>        at
>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
>> TomcatWebappDeployer.java:47)
>>        at org.apache.openejb.assembler.DeployerEjb.deploy(
>> DeployerEjb.java:180)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.security.internal.InternalSecurityInterceptor.invo
>> ke(
>> InternalSecurityInterceptor.java:35)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.record(
>> StatsInterceptor.java:181)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
>> StatsInterceptor.java:100)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proce
>> ed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.core.interceptor.InterceptorStack.
>> invoke(InterceptorStack.java:85)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer._
>> invoke(SingletonContainer.java:256)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer.
>> invoke(SingletonContainer.java:212)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.
>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
>> EjbRequestHandler.java:181)
>>        at
>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
>> java:350)
>>        at org.apache.openejb.server.ejbd.EjbDaemon.service(
>> EjbDaemon.java:240)
>>        at org.apache.openejb.server.ejbd.EjbServer.service(
>> EjbServer.java:104)
>>        at
>> org.apache.openejb.server.httpd.ServerServlet.service(
>> ServerServlet.java:58)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:230)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:165)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(
>> StandardWrapperValve.java:198)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(
>> StandardContextValve.java:108)
>>        at org.apache.tomee.catalina.OpenEJBValve.invoke(
>> OpenEJBValve.java:44)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(
>> StandardHostValve.java:140)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(
>> ErrorReportValve.java:79)
>>        at
>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
>> AbstractAccessLogValve.java:620)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(
>> StandardEngineValve.java:87)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(
>> CoyoteAdapter.java:349)
>>        at
>> org.apache.coyote.http11.Http11Processor.service(
>> Http11Processor.java:1102)
>>        at
>> org.apache.coyote.AbstractProcessorLight.process(
>> AbstractProcessorLight.java:66)
>>        at
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
>> AbstractProtocol.java:788)
>>        at
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
>> run(NioEndpoint.java:1485)
>>        at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(
>> ThreadPoolExecutor.java:1142)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
>> ThreadPoolExecutor.java:617)
>>        at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
>> TaskThread.java:61)
>>        at java.lang.Thread.run(Thread.java:745)
>> Caused by: javax.persistence.PersistenceException: No persistence 
>> providers available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> javax.persistence.Persistence.createEntityManagerFactory(
>> Persistence.java:179)
>>        at
>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
>>        at
>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory
>> (
>> JpaEndpoint.java:510)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
>> JpaEndpoint.java:223)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
>> java:145)
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
>>        ... 131 more
>> SEVERE - CDI Beans module deployment failed
>> 
>> Is there a way to postpone the Camel Context initialisation be Camel-CDI?
>> 
>> 
>> 
>> 
>> --
>> View this message in context: http://camel.465427.n5.nabble.
>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>> 


Re: Camel JPA + JTA Transaction (TomEE)

Posted by Antonin Stefanutti <an...@stefanutti.fr>.
Note that Camel CDI does not change the semantic of context.setAutoStartup(false), that is the routes within the context are not started, though the context itself is started so that validation can occur when the application initialise.

> On 05 Aug 2016, at 20:08, Romain Manni-Bucau <rm...@gmail.com> wrote:
> 
> try sharing a sample with this issue on github with tomee-maven-plugin
> setup to reproduce it (mvn package tomee:run -> fails). Would be more
> relevant than guessing the actual issue.
> 
> 
> 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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:
> 
>> Tried that, doesn't work. CDI is starting CamelContext even with
>> context.setAutoStartup(false).
>> 
>> SEVERE - Failed to create Producer for endpoint:
>> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
>> javax.persistence.PersistenceException: No persistence providers available
>> for "camel" after trying the following discovered implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>> org.apache.camel.FailedToCreateProducerException: Failed to create
>> Producer
>> for endpoint: Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
>> Reason: javax.persistence.PersistenceException: No persistence providers
>> available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
>>        at
>> org.apache.camel.impl.ProducerCache.acquireProducer(
>> ProducerCache.java:160)
>>        at org.apache.camel.processor.SendProcessor.doStart(
>> SendProcessor.java:243)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
>> RedeliveryErrorHandler.java:1372)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:44)
>>        at
>> org.apache.camel.support.ChildServiceSupport.start(
>> ChildServiceSupport.java:31)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.interceptor.DefaultChannel.
>> doStart(DefaultChannel.java:156)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:62)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.MulticastProcessor.doStart(
>> MulticastProcessor.java:1149)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:60)
>>        at
>> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>>        at org.apache.camel.util.ServiceHelper.startServices(
>> ServiceHelper.java:90)
>>        at
>> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
>> DelegateAsyncProcessor.java:79)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at org.apache.camel.util.ServiceHelper.startService(
>> ServiceHelper.java:75)
>>        at
>> org.apache.camel.impl.RouteService.startChildService(
>> RouteService.java:340)
>>        at org.apache.camel.impl.RouteService.warmUp(
>> RouteService.java:182)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
>> DefaultCamelContext.java:3496)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
>> DefaultCamelContext.java:3426)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
>> DefaultCamelContext.java:3203)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
>> DefaultCamelContext.java:3059)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.access$
>> 000(DefaultCamelContext.java:175)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2854)
>>        at
>> org.apache.camel.impl.DefaultCamelContext$2.call(
>> DefaultCamelContext.java:2850)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
>> DefaultCamelContext.java:2873)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.doStart(
>> DefaultCamelContext.java:2850)
>>        at org.apache.camel.support.ServiceSupport.start(
>> ServiceSupport.java:61)
>>        at
>> org.apache.camel.impl.DefaultCamelContext.start(
>> DefaultCamelContext.java:2819)
>>        at
>> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
>> org/apache/camel/CamelContext.java)
>>        at
>> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
>> CdiCamelExtension.java:376)
>>        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.event.ObserverMethodImpl.invoke(
>> ObserverMethodImpl.java:347)
>>        at
>> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
>> ContainerEventObserverMethodImpl.java:82)
>>        at
>> org.apache.webbeans.event.ObserverMethodImpl.notify(
>> ObserverMethodImpl.java:312)
>>        at
>> org.apache.webbeans.event.NotificationManager.fireEvent(
>> NotificationManager.java:676)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
>> BeanManagerImpl.java:485)
>>        at
>> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
>> BeanManagerImpl.java:480)
>>        at
>> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidationE
>> vent(BeansDeployer.java:719)
>>        at org.apache.webbeans.config.BeansDeployer.deploy(
>> BeansDeployer.java:314)
>>        at
>> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
>> OpenEJBLifecycle.java:196)
>>        at
>> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
>> ThreadSingletonServiceImpl.java:193)
>>        at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:908)
>>        at
>> org.apache.openejb.assembler.classic.Assembler.
>> createApplication(Assembler.java:714)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
>> TomcatWebAppBuilder.java:1254)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
>> TomcatWebAppBuilder.java:1112)
>>        at
>> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
>> GlobalListenerSupport.java:133)
>>        at
>> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
>> LifecycleBase.java:94)
>>        at
>> org.apache.catalina.core.StandardContext.startInternal(
>> StandardContext.java:5093)
>>        at org.apache.catalina.util.LifecycleBase.start(
>> LifecycleBase.java:152)
>>        at
>> org.apache.catalina.core.ContainerBase.addChildInternal(
>> ContainerBase.java:726)
>>        at org.apache.catalina.core.ContainerBase.addChild(
>> ContainerBase.java:702)
>>        at org.apache.catalina.core.StandardHost.addChild(
>> StandardHost.java:734)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
>> TomcatWebAppBuilder.java:644)
>>        at
>> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
>> TomcatWebAppBuilder.java:584)
>>        at
>> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
>> TomcatWebappDeployer.java:47)
>>        at org.apache.openejb.assembler.DeployerEjb.deploy(
>> DeployerEjb.java:180)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.security.internal.InternalSecurityInterceptor.invoke(
>> InternalSecurityInterceptor.java:35)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.record(
>> StatsInterceptor.java:181)
>>        at
>> org.apache.openejb.monitoring.StatsInterceptor.invoke(
>> StatsInterceptor.java:100)
>>        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.openejb.core.interceptor.ReflectionInvocationContext$
>> Invocation.invoke(ReflectionInvocationContext.java:205)
>>        at
>> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(
>> ReflectionInvocationContext.java:186)
>>        at
>> org.apache.openejb.core.interceptor.InterceptorStack.
>> invoke(InterceptorStack.java:85)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer._
>> invoke(SingletonContainer.java:256)
>>        at
>> org.apache.openejb.core.singleton.SingletonContainer.
>> invoke(SingletonContainer.java:212)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.
>> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
>>        at
>> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
>> EjbRequestHandler.java:181)
>>        at
>> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
>> java:350)
>>        at org.apache.openejb.server.ejbd.EjbDaemon.service(
>> EjbDaemon.java:240)
>>        at org.apache.openejb.server.ejbd.EjbServer.service(
>> EjbServer.java:104)
>>        at
>> org.apache.openejb.server.httpd.ServerServlet.service(
>> ServerServlet.java:58)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
>> ApplicationFilterChain.java:230)
>>        at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(
>> ApplicationFilterChain.java:165)
>>        at
>> org.apache.catalina.core.StandardWrapperValve.invoke(
>> StandardWrapperValve.java:198)
>>        at
>> org.apache.catalina.core.StandardContextValve.invoke(
>> StandardContextValve.java:108)
>>        at org.apache.tomee.catalina.OpenEJBValve.invoke(
>> OpenEJBValve.java:44)
>>        at
>> org.apache.catalina.core.StandardHostValve.invoke(
>> StandardHostValve.java:140)
>>        at
>> org.apache.catalina.valves.ErrorReportValve.invoke(
>> ErrorReportValve.java:79)
>>        at
>> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
>> AbstractAccessLogValve.java:620)
>>        at
>> org.apache.catalina.core.StandardEngineValve.invoke(
>> StandardEngineValve.java:87)
>>        at
>> org.apache.catalina.connector.CoyoteAdapter.service(
>> CoyoteAdapter.java:349)
>>        at
>> org.apache.coyote.http11.Http11Processor.service(
>> Http11Processor.java:1102)
>>        at
>> org.apache.coyote.AbstractProcessorLight.process(
>> AbstractProcessorLight.java:66)
>>        at
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
>> AbstractProtocol.java:788)
>>        at
>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
>> run(NioEndpoint.java:1485)
>>        at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(
>> ThreadPoolExecutor.java:1142)
>>        at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(
>> ThreadPoolExecutor.java:617)
>>        at
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
>> TaskThread.java:61)
>>        at java.lang.Thread.run(Thread.java:745)
>> Caused by: javax.persistence.PersistenceException: No persistence
>> providers
>> available for "camel" after trying the following discovered
>> implementations:
>> org.apache.openjpa.persistence.PersistenceProviderImpl,
>> org.hibernate.ejb.HibernatePersistence
>>        at
>> javax.persistence.Persistence.createEntityManagerFactory(
>> Persistence.java:179)
>>        at
>> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
>> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
>>        at
>> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
>> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory(
>> JpaEndpoint.java:510)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
>> JpaEndpoint.java:223)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
>>        at
>> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
>> java:145)
>>        at
>> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
>>        ... 131 more
>> SEVERE - CDI Beans module deployment failed
>> 
>> Is there a way to postpone the Camel Context initialisation be Camel-CDI?
>> 
>> 
>> 
>> 
>> --
>> View this message in context: http://camel.465427.n5.nabble.
>> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>> 


Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
try sharing a sample with this issue on github with tomee-maven-plugin
setup to reproduce it (mvn package tomee:run -> fails). Would be more
relevant than guessing the actual issue.


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-08-05 20:06 GMT+02:00 dimas <Dm...@kaltire.com>:

> Tried that, doesn't work. CDI is starting CamelContext even with
> context.setAutoStartup(false).
>
> SEVERE - Failed to create Producer for endpoint:
> Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
> javax.persistence.PersistenceException: No persistence providers available
> for "camel" after trying the following discovered implementations:
> org.apache.openjpa.persistence.PersistenceProviderImpl,
> org.hibernate.ejb.HibernatePersistence
> org.apache.camel.FailedToCreateProducerException: Failed to create
> Producer
> for endpoint: Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
> Reason: javax.persistence.PersistenceException: No persistence providers
> available for "camel" after trying the following discovered
> implementations:
> org.apache.openjpa.persistence.PersistenceProviderImpl,
> org.hibernate.ejb.HibernatePersistence
>         at
> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
>         at
> org.apache.camel.impl.ProducerCache.acquireProducer(
> ProducerCache.java:160)
>         at org.apache.camel.processor.SendProcessor.doStart(
> SendProcessor.java:243)
>         at org.apache.camel.support.ServiceSupport.start(
> ServiceSupport.java:61)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:75)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:60)
>         at
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>         at org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:90)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> DelegateAsyncProcessor.java:79)
>         at org.apache.camel.support.ServiceSupport.start(
> ServiceSupport.java:61)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:75)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:60)
>         at
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>         at org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:90)
>         at
> org.apache.camel.processor.RedeliveryErrorHandler.doStart(
> RedeliveryErrorHandler.java:1372)
>         at
> org.apache.camel.support.ChildServiceSupport.start(
> ChildServiceSupport.java:44)
>         at
> org.apache.camel.support.ChildServiceSupport.start(
> ChildServiceSupport.java:31)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:75)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:60)
>         at
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>         at org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:90)
>         at
> org.apache.camel.processor.interceptor.DefaultChannel.
> doStart(DefaultChannel.java:156)
>         at org.apache.camel.support.ServiceSupport.start(
> ServiceSupport.java:61)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:75)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:60)
>         at
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:62)
>         at
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>         at org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:90)
>         at
> org.apache.camel.processor.MulticastProcessor.doStart(
> MulticastProcessor.java:1149)
>         at org.apache.camel.support.ServiceSupport.start(
> ServiceSupport.java:61)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:75)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:60)
>         at
> org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
>         at org.apache.camel.util.ServiceHelper.startServices(
> ServiceHelper.java:90)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.doStart(
> DelegateAsyncProcessor.java:79)
>         at org.apache.camel.support.ServiceSupport.start(
> ServiceSupport.java:61)
>         at org.apache.camel.util.ServiceHelper.startService(
> ServiceHelper.java:75)
>         at
> org.apache.camel.impl.RouteService.startChildService(
> RouteService.java:340)
>         at org.apache.camel.impl.RouteService.warmUp(
> RouteService.java:182)
>         at
> org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(
> DefaultCamelContext.java:3496)
>         at
> org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(
> DefaultCamelContext.java:3426)
>         at
> org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(
> DefaultCamelContext.java:3203)
>         at
> org.apache.camel.impl.DefaultCamelContext.doStartCamel(
> DefaultCamelContext.java:3059)
>         at
> org.apache.camel.impl.DefaultCamelContext.access$
> 000(DefaultCamelContext.java:175)
>         at
> org.apache.camel.impl.DefaultCamelContext$2.call(
> DefaultCamelContext.java:2854)
>         at
> org.apache.camel.impl.DefaultCamelContext$2.call(
> DefaultCamelContext.java:2850)
>         at
> org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(
> DefaultCamelContext.java:2873)
>         at
> org.apache.camel.impl.DefaultCamelContext.doStart(
> DefaultCamelContext.java:2850)
>         at org.apache.camel.support.ServiceSupport.start(
> ServiceSupport.java:61)
>         at
> org.apache.camel.impl.DefaultCamelContext.start(
> DefaultCamelContext.java:2819)
>         at
> org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(
> org/apache/camel/CamelContext.java)
>         at
> org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(
> CdiCamelExtension.java:376)
>         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.event.ObserverMethodImpl.invoke(
> ObserverMethodImpl.java:347)
>         at
> org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(
> ContainerEventObserverMethodImpl.java:82)
>         at
> org.apache.webbeans.event.ObserverMethodImpl.notify(
> ObserverMethodImpl.java:312)
>         at
> org.apache.webbeans.event.NotificationManager.fireEvent(
> NotificationManager.java:676)
>         at
> org.apache.webbeans.container.BeanManagerImpl.fireEvent(
> BeanManagerImpl.java:485)
>         at
> org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(
> BeanManagerImpl.java:480)
>         at
> org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidationE
> vent(BeansDeployer.java:719)
>         at org.apache.webbeans.config.BeansDeployer.deploy(
> BeansDeployer.java:314)
>         at
> org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(
> OpenEJBLifecycle.java:196)
>         at
> org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(
> ThreadSingletonServiceImpl.java:193)
>         at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
>         at
> org.apache.openejb.assembler.classic.Assembler.
> createApplication(Assembler.java:908)
>         at
> org.apache.openejb.assembler.classic.Assembler.
> createApplication(Assembler.java:714)
>         at
> org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(
> TomcatWebAppBuilder.java:1254)
>         at
> org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(
> TomcatWebAppBuilder.java:1112)
>         at
> org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(
> GlobalListenerSupport.java:133)
>         at
> org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> LifecycleBase.java:94)
>         at
> org.apache.catalina.core.StandardContext.startInternal(
> StandardContext.java:5093)
>         at org.apache.catalina.util.LifecycleBase.start(
> LifecycleBase.java:152)
>         at
> org.apache.catalina.core.ContainerBase.addChildInternal(
> ContainerBase.java:726)
>         at org.apache.catalina.core.ContainerBase.addChild(
> ContainerBase.java:702)
>         at org.apache.catalina.core.StandardHost.addChild(
> StandardHost.java:734)
>         at
> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(
> TomcatWebAppBuilder.java:644)
>         at
> org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(
> TomcatWebAppBuilder.java:584)
>         at
> org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(
> TomcatWebappDeployer.java:47)
>         at org.apache.openejb.assembler.DeployerEjb.deploy(
> DeployerEjb.java:180)
>         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.openejb.core.interceptor.ReflectionInvocationContext$
> Invocation.invoke(ReflectionInvocationContext.java:205)
>         at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(
> ReflectionInvocationContext.java:186)
>         at
> org.apache.openejb.security.internal.InternalSecurityInterceptor.invoke(
> InternalSecurityInterceptor.java:35)
>         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.openejb.core.interceptor.ReflectionInvocationContext$
> Invocation.invoke(ReflectionInvocationContext.java:205)
>         at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(
> ReflectionInvocationContext.java:186)
>         at
> org.apache.openejb.monitoring.StatsInterceptor.record(
> StatsInterceptor.java:181)
>         at
> org.apache.openejb.monitoring.StatsInterceptor.invoke(
> StatsInterceptor.java:100)
>         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.openejb.core.interceptor.ReflectionInvocationContext$
> Invocation.invoke(ReflectionInvocationContext.java:205)
>         at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(
> ReflectionInvocationContext.java:186)
>         at
> org.apache.openejb.core.interceptor.InterceptorStack.
> invoke(InterceptorStack.java:85)
>         at
> org.apache.openejb.core.singleton.SingletonContainer._
> invoke(SingletonContainer.java:256)
>         at
> org.apache.openejb.core.singleton.SingletonContainer.
> invoke(SingletonContainer.java:212)
>         at
> org.apache.openejb.server.ejbd.EjbRequestHandler.
> doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
>         at
> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(
> EjbRequestHandler.java:181)
>         at
> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.
> java:350)
>         at org.apache.openejb.server.ejbd.EjbDaemon.service(
> EjbDaemon.java:240)
>         at org.apache.openejb.server.ejbd.EjbServer.service(
> EjbServer.java:104)
>         at
> org.apache.openejb.server.httpd.ServerServlet.service(
> ServerServlet.java:58)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:230)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:165)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:198)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:108)
>         at org.apache.tomee.catalina.OpenEJBValve.invoke(
> OpenEJBValve.java:44)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(
> StandardHostValve.java:140)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(
> ErrorReportValve.java:79)
>         at
> org.apache.catalina.valves.AbstractAccessLogValve.invoke(
> AbstractAccessLogValve.java:620)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:87)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(
> CoyoteAdapter.java:349)
>         at
> org.apache.coyote.http11.Http11Processor.service(
> Http11Processor.java:1102)
>         at
> org.apache.coyote.AbstractProcessorLight.process(
> AbstractProcessorLight.java:66)
>         at
> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(
> AbstractProtocol.java:788)
>         at
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
> run(NioEndpoint.java:1485)
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(
> ThreadPoolExecutor.java:1142)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> ThreadPoolExecutor.java:617)
>         at
> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
> TaskThread.java:61)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: javax.persistence.PersistenceException: No persistence
> providers
> available for "camel" after trying the following discovered
> implementations:
> org.apache.openjpa.persistence.PersistenceProviderImpl,
> org.hibernate.ejb.HibernatePersistence
>         at
> javax.persistence.Persistence.createEntityManagerFactory(
> Persistence.java:179)
>         at
> org.springframework.orm.jpa.LocalEntityManagerFactoryBean.
> createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
>         at
> org.springframework.orm.jpa.AbstractEntityManagerFactoryBe
> an.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
>         at
> org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory(
> JpaEndpoint.java:510)
>         at
> org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(
> JpaEndpoint.java:223)
>         at
> org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
>         at
> org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.
> java:145)
>         at
> org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
>         ... 131 more
> SEVERE - CDI Beans module deployment failed
>
> Is there a way to postpone the Camel Context initialisation be Camel-CDI?
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.
> com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by dimas <Dm...@kaltire.com>.
Tried that, doesn't work. CDI is starting CamelContext even with
context.setAutoStartup(false). 
 
SEVERE - Failed to create Producer for endpoint:
Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent]. Reason:
javax.persistence.PersistenceException: No persistence providers available
for "camel" after trying the following discovered implementations:
org.apache.openjpa.persistence.PersistenceProviderImpl,
org.hibernate.ejb.HibernatePersistence
org.apache.camel.FailedToCreateProducerException: Failed to create Producer
for endpoint: Endpoint[jpa://com.kaltire.mix.wosess.model.ScanEvent].
Reason: javax.persistence.PersistenceException: No persistence providers
available for "camel" after trying the following discovered implementations:
org.apache.openjpa.persistence.PersistenceProviderImpl,
org.hibernate.ejb.HibernatePersistence
	at
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:444)
	at
org.apache.camel.impl.ProducerCache.acquireProducer(ProducerCache.java:160)
	at org.apache.camel.processor.SendProcessor.doStart(SendProcessor.java:243)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
	at
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
	at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90)
	at
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
	at
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
	at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90)
	at
org.apache.camel.processor.RedeliveryErrorHandler.doStart(RedeliveryErrorHandler.java:1372)
	at
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:44)
	at
org.apache.camel.support.ChildServiceSupport.start(ChildServiceSupport.java:31)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
	at
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
	at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90)
	at
org.apache.camel.processor.interceptor.DefaultChannel.doStart(DefaultChannel.java:156)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
	at
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:62)
	at
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
	at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90)
	at
org.apache.camel.processor.MulticastProcessor.doStart(MulticastProcessor.java:1149)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:60)
	at
org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:104)
	at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:90)
	at
org.apache.camel.processor.DelegateAsyncProcessor.doStart(DelegateAsyncProcessor.java:79)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at org.apache.camel.util.ServiceHelper.startService(ServiceHelper.java:75)
	at
org.apache.camel.impl.RouteService.startChildService(RouteService.java:340)
	at org.apache.camel.impl.RouteService.warmUp(RouteService.java:182)
	at
org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:3496)
	at
org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3426)
	at
org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3203)
	at
org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3059)
	at
org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:175)
	at
org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2854)
	at
org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2850)
	at
org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2873)
	at
org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2850)
	at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
	at
org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2819)
	at
org.apache.camel.CamelContext$$OwbNormalScopeProxy0.start(org/apache/camel/CamelContext.java)
	at
org.apache.camel.cdi.CdiCamelExtension.afterDeploymentValidation(CdiCamelExtension.java:376)
	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.event.ObserverMethodImpl.invoke(ObserverMethodImpl.java:347)
	at
org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(ContainerEventObserverMethodImpl.java:82)
	at
org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:312)
	at
org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:676)
	at
org.apache.webbeans.container.BeanManagerImpl.fireEvent(BeanManagerImpl.java:485)
	at
org.apache.webbeans.container.BeanManagerImpl.fireLifecycleEvent(BeanManagerImpl.java:480)
	at
org.apache.webbeans.config.BeansDeployer.fireAfterDeploymentValidationEvent(BeansDeployer.java:719)
	at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:314)
	at
org.apache.openejb.cdi.OpenEJBLifecycle.startApplication(OpenEJBLifecycle.java:196)
	at
org.apache.openejb.cdi.ThreadSingletonServiceImpl.initialize(ThreadSingletonServiceImpl.java:193)
	at org.apache.openejb.cdi.CdiBuilder.build(CdiBuilder.java:41)
	at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:908)
	at
org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:714)
	at
org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1254)
	at
org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1112)
	at
org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:133)
	at
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
	at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5093)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
	at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:702)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at
org.apache.tomee.catalina.TomcatWebAppBuilder.deployWar(TomcatWebAppBuilder.java:644)
	at
org.apache.tomee.catalina.TomcatWebAppBuilder.deployWebApps(TomcatWebAppBuilder.java:584)
	at
org.apache.tomee.catalina.deployment.TomcatWebappDeployer.deploy(TomcatWebappDeployer.java:47)
	at org.apache.openejb.assembler.DeployerEjb.deploy(DeployerEjb.java:180)
	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.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
	at
org.apache.openejb.security.internal.InternalSecurityInterceptor.invoke(InternalSecurityInterceptor.java:35)
	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.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
	at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
	at
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
	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.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
	at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
	at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
	at
org.apache.openejb.core.singleton.SingletonContainer._invoke(SingletonContainer.java:256)
	at
org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:212)
	at
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
	at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:181)
	at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:350)
	at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:240)
	at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:104)
	at
org.apache.openejb.server.httpd.ServerServlet.service(ServerServlet.java:58)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)
	at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1102)
	at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:788)
	at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1485)
	at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Caused by: javax.persistence.PersistenceException: No persistence providers
available for "camel" after trying the following discovered implementations:
org.apache.openjpa.persistence.PersistenceProviderImpl,
org.hibernate.ejb.HibernatePersistence
	at
javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:179)
	at
org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:96)
	at
org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:319)
	at
org.apache.camel.component.jpa.JpaEndpoint.createEntityManagerFactory(JpaEndpoint.java:510)
	at
org.apache.camel.component.jpa.JpaEndpoint.getEntityManagerFactory(JpaEndpoint.java:223)
	at
org.apache.camel.component.jpa.JpaEndpoint.validate(JpaEndpoint.java:503)
	at
org.apache.camel.component.jpa.JpaEndpoint.createProducer(JpaEndpoint.java:145)
	at
org.apache.camel.impl.ProducerCache.doGetProducer(ProducerCache.java:439)
	... 131 more
SEVERE - CDI Beans module deployment failed

Is there a way to postpone the Camel Context initialisation be Camel-CDI? 




--
View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5786071.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel JPA + JTA Transaction (TomEE)

Posted by dimas <Dm...@kaltire.com>.
I like this option (using Singleton start up). Going to try to set
autoStartUp=false on CamelContext (produced by Camel CDI producer) and start
it up from Singleton EJB next week (I'm on vacation till next Friday). Will
update on results.

Cheers,
Dmitry



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5785759.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
PS: using an EJB - singleton startup - to start camel context should work
too and injections in EJB should work since they have their own jndi tree.

Le 30 juil. 2016 19:41, "Romain Manni-Bucau" <rm...@gmail.com> a
écrit :

> Thinking to it there is a way to rely on jta when cdi starts. OpenJPA does
> it for years with this bit of logic:
> https://github.com/apache/openjpa/blob/a453aa9f462cccb99f028426298e885c25b0cee2/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java
>
> Very doable with spring too.
>
> Le 30 juil. 2016 17:40, "dimas" <Dm...@kaltire.com> a écrit :
>
>> I looks like the CDI initialization is triggered by Camel JPA component.
>> How
>> to make Camel to initialize lazily?
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5785707.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Thinking to it there is a way to rely on jta when cdi starts. OpenJPA does
it for years with this bit of logic:
https://github.com/apache/openjpa/blob/a453aa9f462cccb99f028426298e885c25b0cee2/openjpa-kernel/src/main/java/org/apache/openjpa/ee/AutomaticManagedRuntime.java

Very doable with spring too.

Le 30 juil. 2016 17:40, "dimas" <Dm...@kaltire.com> a écrit :

> I looks like the CDI initialization is triggered by Camel JPA component.
> How
> to make Camel to initialize lazily?
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5785707.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by dimas <Dm...@kaltire.com>.
I looks like the CDI initialization is triggered by Camel JPA component. How
to make Camel to initialize lazily? 



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5785707.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
It's an integration issue with camel-cdi triggering the init too early,
making it lazy works


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 23:54 GMT+02:00 Shultz, Dmitry <Dm...@kaltire.com>:

> 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:Dmitry_Shultz@kaltire.com]
> Sent: July-29-16 2:46 PM
> To: users@camel.apache.org
> 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:rmannibucau@gmail.com]
> Sent: July-29-16 1:35 PM
> To: users@camel.apache.org
> 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 <Dm...@kaltire.com>:
>
> > 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.
> >
>

RE: Camel JPA + JTA Transaction (TomEE)

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
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:Dmitry_Shultz@kaltire.com] 
Sent: July-29-16 2:46 PM
To: users@camel.apache.org
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:rmannibucau@gmail.com]
Sent: July-29-16 1:35 PM
To: users@camel.apache.org
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 <Dm...@kaltire.com>:

> 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.
>

RE: Camel JPA + JTA Transaction (TomEE)

Posted by "Shultz, Dmitry" <Dm...@kaltire.com>.
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:rmannibucau@gmail.com] 
Sent: July-29-16 1:35 PM
To: users@camel.apache.org
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 <Dm...@kaltire.com>:

> 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.
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
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 <Dm...@kaltire.com>:

> 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-tp5785642p5785653.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by dimas <Dm...@kaltire.com>.
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-tp5785642p5785653.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Romain Manni-Bucau <rm...@gmail.com>.
@Resource
TransactionManager transactionManager;

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 18:56 GMT+02:00 dimas <Dm...@kaltire.com>:

> Antonin, yes, It helped a lot!
>
> I can see the transaction committed successfully and message persisted
> after
> I used your advice and injected transaction and manager like this:
>
> @Resource
> UserTransaction userTransaction;
>
> @Resource(lookup = "java:comp/env/TransactionManager")
> TransactionManager transactionManager;
>
>
> However, when i step with debugger in the producer method I can see that
> 'transactionManager' is null (userTransaction reference is Ok) probably
> because I'm using wrong lookup string for TomEE, so the produced
> JtaTransactionManager is not fully initialised.
> Not sure if it is a big deal (as i said it works), but it will be nice to
> figure out how to use it properly in TomEE environment.
>
> Cheers,
> Dmitry
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5785646.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>

Re: Camel JPA + JTA Transaction (TomEE)

Posted by dimas <Dm...@kaltire.com>.
Antonin, yes, It helped a lot!

I can see the transaction committed successfully and message persisted after
I used your advice and injected transaction and manager like this:

@Resource
UserTransaction userTransaction;

@Resource(lookup = "java:comp/env/TransactionManager")
TransactionManager transactionManager;


However, when i step with debugger in the producer method I can see that 
'transactionManager' is null (userTransaction reference is Ok) probably
because I'm using wrong lookup string for TomEE, so the produced
JtaTransactionManager is not fully initialised. 
Not sure if it is a big deal (as i said it works), but it will be nice to
figure out how to use it properly in TomEE environment.

Cheers,
Dmitry



--
View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642p5785646.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Camel JPA + JTA Transaction (TomEE)

Posted by Antonin Stefanutti <an...@stefanutti.fr>.
Hi Dimitri,

Camel JMS depends on Spring transaction. So as you want to coordinate your JMS broker and your DB within the same XA transaction, you have to rely on the Spring platform transaction manager. As you already figured out, you can produce it as a CDI producer method:

@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager(TransactionManager transactionManager, UserTransaction userTransaction) {
    JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
    jtaTransactionManager.setUserTransaction(userTransaction);
    jtaTransactionManager.setTransactionManager(transactionManager);
    jtaTransactionManager.afterPropertiesSet();
    return jtaTransactionManager;
}

And reference it from your camel routes with the # notation, e.g.:

from("jms:queue:{{destination}}?transacted=true&transactionManager=#jtaTransactionManager").to("...");

In a typical JTA enabled application server, you can retrieve the TransactionManager and UserTransaction as resources to be used to produce the named PlatformTransactionManager, e.g.:

@Resource(lookup = "java:jboss/TransactionManager”) 
TransactionManager transactionManager; 

@Resource 
UserTransaction userTransaction; 

@Produces
@Named("jtaTransactionManager")
PlatformTransactionManager createTransactionManager() {
    JtaTransactionManager jtaTransactionManager = new JtaTransactionManager();
    jtaTransactionManager.setUserTransaction(userTransaction);
    jtaTransactionManager.setTransactionManager(transactionManager);
    jtaTransactionManager.afterPropertiesSet();
    return jtaTransactionManager;
}

Hope this helps.

Antonin

> On 29 Jul 2016, at 17:57, dimas <Dm...@kaltire.com> wrote:
> 
> Hi All,
> 
> I'm using TomEE (7.0.0) + Camel JMS + Camel CDI + Camel JPA  to receive and
> store messages in the DB. Camel version is 2.17.2.
> 
> Out of the box, Camel JPA is failing because it is trying to access the
> EntityTransaction of TomEE. 
> 
> 08:36| ERROR | CamelLogger.java 156 | <openjpa-2.4.1-r422266:1730418
> nonfatal user error> org.apache.openjpa.persistence.InvalidStateException:
> You cannot access the EntityTransaction when using managed transactions.
> 	at
> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:553)
> 	at
> org.apache.openjpa.persistence.EntityManagerImpl.getTransaction(EntityManagerImpl.java:103)
> 	at
> org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:67)
> 	at
> org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:380)
> 	at
> org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)
> 	at
> org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
> 	at org.apache.camel.component.jpa.JpaProducer.process(JpaProducer.java:62)
> 	at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
> 
> 
> In the 'transactionManeger' description column of Camel JPA doc
> (http://camel.apache.org/jpa.html) there is some info about the ability to
> set up JTA Transaction Manger 'Can be used to set a JTA transaction manager
> (for integration with an EJB container).', but it's not clear how to do it
> exactly.
> 
> I tried to use the doc page of Camel CDI (http://camel.apache.org/cdi.html),
> the 'Referring beans from Endpoint URIs' section where it says that
> following code should be used:
> 
> @Produces
> @Named("jtaTransactionManager")
> PlatformTransactionManager createTransactionManager(TransactionManager
> transactionManager, UserTransaction userTransaction) {
>    JtaTransactionManager jtaTransactionManager = new
> JtaTransactionManager();
>    jtaTransactionManager.setUserTransaction(userTransaction);
>    jtaTransactionManager.setTransactionManager(transactionManager);
>    jtaTransactionManager.afterPropertiesSet();
>    return jtaTransactionManager;
> }
> 
> And I'm using it in my route like this:
> 
> .to("jpa://com.some.Event?transactionManager=#jtaTransactionManager");
> 
> But if fails:
> 
> Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Api type
> [javax.transaction.TransactionManager] is not found with the qualifiers 
> Qualifiers: [@javax.enterprise.inject.Default()]
> for injection into Method Injection Point, method name : 
> createTransactionManager, Bean Owner : [PlatformTransactionManager,
> WebBeansType:PRODUCERMETHOD, Name:jtaTransactionManager, API
> Types:[java.lang.Object,org.springframework.transaction.PlatformTransactionManager],
> Qualifiers:[javax.enterprise.inject.Default,javax.enterprise.inject.Any,javax.inject.Named]]
> 	at
> org.apache.webbeans.util.InjectionExceptionUtil.throwUnsatisfiedResolutionException(InjectionExceptionUtil.java:65)
> 	at
> org.apache.webbeans.container.InjectionResolver.checkInjectionPoint(InjectionResolver.java:234)
> 	at
> org.apache.webbeans.container.BeanManagerImpl.validate(BeanManagerImpl.java:1199)
> 	at org.apache.webbeans.util.WebBeansUtil.validate(WebBeansUtil.java:1709)
> 	at
> org.apache.webbeans.config.BeansDeployer.validate(BeansDeployer.java:909)
> 	at
> org.apache.webbeans.config.BeansDeployer.validateInjectionPoints(BeansDeployer.java:820)
> 	at org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:305)
> 
> 
> Looks like i have to create producer for
> javax.transaction.TransactionManager, not sure how to do it. Or may be I'm
> doing something totally wrong here..
> 
> Cheers,
> Dmitry
> 
> 
> 
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-JPA-JTA-Transaction-TomEE-tp5785642.html
> Sent from the Camel - Users mailing list archive at Nabble.com.