2014-04-06 65 views
2

我有一個MDB監聽一個JMS隊列,在onMessage()我需要調用我正在使用SpringBeanAutowiringInterceptor的spring bean。Weblogic:Spring應用程序上下文加載失敗:導致:java.lang.NoSuchMethodError:javax.persistence.Table.indexes()

當我將消息發佈到JMS隊列中時,MDB實際上是試圖加載Spring應用程序上下文,但失敗並顯示以下錯誤。

Caused By: org.springframework.beans.factory.access.BootstrapException: 
Unable to  initialize group definition. Group resource name [classpath*:beanRefContext.xml], 
factory key [null]; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'parentBeanFactory' defined in URL 
[zip:C:/Oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/factoryadaptor-1.0.0-api/4f4fxo/war/WEB-INF/lib/_wl_cls_gen.jar!/beanRefContext.xml]: 
Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: 
Could not instantiate bean class [org.springframework.context.support.ClassPathXmlApplicationContext]: 
Constructor threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'localEntityManagerFactory' defined in class path  resource [beans/applicationContext-db.xml]: Invocation of init method failed; 
nested exception is java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index; 

的ApplicationContext-db.xml的摘錄

<tx:annotation-driven transaction-manager="jpaTransactionManager" /> 

<bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" > 
    <property name="entityManagerFactory" ref="localEntityManagerFactory" /> 
</bean> 



<bean id="localEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="DMS" />  
    <property name="persistenceXmlLocation" value="classpath*:config/persistence1.xml" /> 
</bean> 

<bean id="entityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean"> 
     <property name="entityManagerFactory" ref="localEntityManagerFactory" /> 
</bean> 

的pom.xml的摘錄如下

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit-dep</artifactId> 
     <version>4.11</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hamcrest</groupId> 
     <artifactId>hamcrest-core</artifactId> 
     <version>1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>ojdbc5</artifactId> 
     <version>11.2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.0.Final</version> 
    </dependency> 

正如我在蝕依賴性的層次結構參見休眠-的EntityManager -4.3.0.Final.jar包含hibernate-jpa-2.1-api.jar。

與Junit一起嘗試與DB進行交互操作時,相同的配置效果很好。當我在weblogic 12c中部署戰爭時,我正面臨着上述問題。

有沒有人有類似的問題?

+0

你有'冬眠,JPA-2.1-API。在Weblogic類路徑中的jar?看起來像weblogic 12c默認使用舊的JPA API。 –

+1

感謝您的回覆Artem Bilan。因爲我有hibernate-entitymanager-4.3.0.Final jar作爲依賴項,所以添加hibernate-jpa-2.1-api.jar作爲依賴項,如eclipse依賴關係層次結構中所示。另外我在戰爭中檢查了WEB-INF/lib目錄,它有hibernate-jpa-2.1-api.jar。 –

+0

我暫時能夠通過用hibernate-entitymanager-4.2.8替換hibernate-entitymanager-4.3.0.Final來解決此應用程序上下文加載問題.Final –

回答

1

我能夠通過提供在weblogic.xml告訴weblogic的下面來解決這個問題,要使用提供休眠(包括JPA):

<wls:prefer-application-packages> 
     <wls:package-name>org.hibernate.*</wls:package-name> 
     <wls:package-name>javax.persistence.*</wls:package-name> 
     <wls:package-name>javassist</wls:package-name> 
    </wls:prefer-application-packages> 
相關問題