2014-10-14 1 views
0

я получаю ошибку ниже с PESSIMISTIC_WRITE при использовании же JPA компонента в 2 маршрута хотя и верблюдах JPA является PESSIMISTIC_WRITE по умолчанию из 2.13.0, который я используюjava.lang.NoSuchFieldError: PESSIMISTIC_WRITE ошибка с jpaConsumer в Apache Camel

Ошибка:

[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) 

мой верблюд контекст

<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 CLA сс

@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; 
    } 
} 

ответ

0

Я имел этот вопрос, и она была решена, когда я изменил зависимость OpenJPA и добавил Maven сборки плагин к ПОМ. Пожалуйста, смотрите ниже:

ОТ:

<dependency> 
    <groupId>org.apache.openjpa</groupId> 
    <artifactId>openjpa-persistence-jdbc</artifactId> 
    <version>1.2.2</version> 
</dependency> 

TO:

<dependency> 
    <groupId>org.apache.openjpa</groupId> 
    <artifactId>openjpa</artifactId> 
    <version>2.1.0</version> 
</dependency> 

BUILD PLUGIN

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>openjpa-maven-plugin</artifactId> 
    <version>1.2</version> 
    <configuration> 
     <includes>**/model/*.class</includes> 
     <addDefaultConstructor>true</addDefaultConstructor> 
     <enforcePropertyRestrictions>true</enforcePropertyRestrictions> 
    </configuration> 
    <executions> 
     <execution> 
      <id>enhancer</id> 
      <phase>process-classes</phase> 
      <goals> 
       <goal>enhance</goal> 
      </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.openjpa</groupId> 
      <artifactId>openjpa</artifactId> 
      <version>2.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
    </dependencies> 
    </plugin>