I am getting the below error with PESSIMISTIC_WRITE while using same jpa component in 2 routes although camel jpa is by default PESSIMISTIC_WRITE from 2.13.0 which I am using
Error:
[ERROR] *************************************
[ERROR] Error occurred while running main from: org.apache.camel.spring.Main
[ERROR]
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:488)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NoSuchFieldError: PESSIMISTIC_WRITE
at org.apache.camel.component.jpa.JpaConsumer.<init>(JpaConsumer.java:60)
at org.apache.camel.component.jpa.JpaEndpoint.createConsumer(JpaEndpoint.java:111)
at org.apache.camel.impl.EventDrivenConsumerRoute.addServices(EventDrivenConsumerRoute.java:65)
at org.apache.camel.impl.DefaultRoute.onStartingServices(DefaultRoute.java:80)
at org.apache.camel.impl.RouteService.warmUp(RouteService.java:134)
at org.apache.camel.impl.DefaultCamelContext.doWarmUpRoutes(DefaultCamelContext.java:2263)
at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:2193)
at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:1981)
at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:1851)
at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:1683)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:1651)
at org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:254)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:120)
at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:318)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:96)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:948)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
at org.apache.camel.spring.Main.createDefaultApplicationContext(Main.java:217)
at org.apache.camel.spring.Main.doStart(Main.java:157)
at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
at org.apache.camel.main.MainSupport.run(MainSupport.java:147)
at org.apache.camel.main.MainSupport.run(MainSupport.java:351)
at org.apache.camel.spring.Main.main(Main.java:90)
my camel-context
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="vm://localhost" />
</bean>
</property>
</bean>
<bean id="jpa" class="org.apache.camel.component.jpa.JpaComponent">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="transactionManager" ref="springTransactionManager"/>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="camel" />
<property name="jpaVendorAdapter" ref="jpaAdapter" />
</bean>
<bean id="jpaAdapter"
class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
<property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.DerbyDictionary" />
<property name="database" value="DERBY" />
</bean>
<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="springTransactionManager">
<!--<bean class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>-->
</property>
</bean>
<bean id="springTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="downloadLogger" class="camelinaction.dl.DownloadLogger"/>
<bean id="exchangeLogger" class="camelinaction.dl.ExchangeLogger"/>
<bean id="startPolicy" class="org.apache.camel.routepolicy.quartz.CronScheduledRoutePolicy">
<property name="routeStartTime" value="0 0/1 * * * ?"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<jaxb id="jaxb" contextPath="camelinaction"/>
</dataFormats>
<route id="getFile" autoStartup="true" startupOrder="1">
<from uri="file:data/inbox?noop=true"/>
<process ref="downloadLogger"/>
<unmarshal ref="jaxb"/>
<to uri="jms:incomingOrders"/>
<process ref="exchangeLogger"/>
<to uri="jpa:camelinaction.PurchaseOrder"/>
</route>
<route id="fromDB" startupOrder="3">
<from uri="jpa://camelinaction.PurchaseOrder?consumer.namedQuery=honda"/>
<process ref="exchangeLogger"/>
<marshal ref="jaxb"/>
<to uri="file:data/outbox"/>
</route>
</camelContext>
</beans>
purchaseOrder class
@Entity
@NamedQuery(name = "honda", query = "select o from PurchaseOrder o where o.customer=honda")
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class PurchaseOrder implements Serializable {
private static final long serialVersionUID = 414632787969243627L;
@XmlElement
private String name;
@XmlElement
private double amount;
@XmlElement
private String customer;
public PurchaseOrder() {
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setCustomer(String customer) {
this.customer = customer;
}
public String getCustomer() {
return customer;
}
@Override
public String toString() {
return "Purchase Order Info: \n\tname: " + name + "\n\tamount: " + amount +
"\n\tcustomer: " + customer;
}
}