2012-04-30 26 views
1

環境EJB找不到可選包,因此持久性單元在它

  • 的WebLogic第11G(因此Java EE 5的和EJB 3.0)
  • 一個EJB包含JAR也擁有所有的持久性實體。它工作得很好(有一個使用EJB的Web應用程序,它按預期工作)。我決定將實體分爲另一個層,爲此我創建了另一個模塊並將其作爲可選包部署。所以現在我有兩個JAR文件,順便說一下,我分開部署,而不是作爲一個應用程序的一部分;持久性JAR和EJB JAR。

問題

我得到以下錯誤(這告訴我,可選包沒有被發現),EJB部署過程:

無法部署EJB:StocksBean從BLayer -1.0.0-SNAPSHOT.jar:沒有名爲'internalAppsPU'的持久性單元可用於作用域
BLayer-1.0.0-SNAPSHOT.jar。可用的持久化單元:[]

更多信息

清單持久性模塊的JAR的

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: bm03043 
Build-Jdk: 1.6.0_18 
Extension-Name: com.amir.persistence 
Implementation-Version: 1.0.0 
Specification-Version: 1.6 

persistence.xml中的持久性模塊的JAR的META-INF文件夾

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
    version="1.0"> 
    <persistence-unit name="internalAppsPU" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>InternalAppsDS</jta-data-source> 
     <class>com.xx.persistence.Stock</class> 
     <properties> 
      <property name="eclipselink.logging.level" value="FINE" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

EJB代碼

package com.xx.bll; 

// bunch of imports // 

@Stateless(name="StocksBean", mappedName="Internal-BLayer-StocksBean") 
public class StocksBean implements Stocks { 

    @PersistenceContext(unitName = "internalAppsPU") 
    private EntityManager em; 

    // SNIP // 
} 

清單EJB的JAR的

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: bm03043 
Build-Jdk: 1.6.0_18 
Extension-List: PLayer 
PLayer-Extension-Name: PersistenceLayer 
PLayer-Implementation-Version: 1.0.0-SNAPSHOT 
PLayer-Specification-Version: 1.6 

請大家注意以下幾點:

  • InternalAppsDS數據源在WebLogic中先前配置。
  • 在某些時候,我的印象是Extension-List中的名稱必須與部署爲Optional Package的JAR文件的名稱相匹配。但是當我閱讀更多時,我意識到這是不正確的。
+0

您是否嘗試過使用com.amir.persistence作爲擴展名? –

+0

是的。就是這樣。我前一陣子解決了這個問題,然後我在今天看到了你的評論。從來沒有得到通知,有人實際迴應。謝謝。那會爲我節省一些時間。 –

回答

0

所以答案是使用庫中使用的相同擴展名。

相關問題