2012-04-30 2 views
1

환경EJB는 옵션 패키지를 찾을 수있어 지속성 단위가

  • 웹 로직 11g (결과적으로 자바 EE 5, EJB 3.0)
  • 는 EJB가 모든 지속성 엔티티를 보유하고 JAR를 포함을에 수 없습니다. 그것은 잘 (EJB를 사용하는 웹 애플 리케이션을 가지고 예상대로 작동). 엔티티를 다른 레이어로 분리하기로 결정하고 다른 모듈을 만들어 선택적 패키지로 배포합니다. 그래서 이제는 두 개의 JAR 파일을 가지고 있습니다. 하나의 응용 프로그램에 포함되지 않고 별도로 배포됩니다. 지속성 JAR 및 EJB JAR.

    EJB를 배포 할 수 없습니다 : BLayer에서 StocksBean 나는 다음과 같은 오류 (저를 알려주는 옵션 패키지가 발견되지 않았 음을)받을 EJB의 배포시 문제

-1.0.0-SNAPSHOT.jar : 'internalAppsPU'라는 지속성 유닛은 범위
BLayer-1.0.0-SNAPSHOT.jar에서 사용할 수 없습니다. 사용 가능한 지속성 단위 : []

추가 정보 지속성 모듈의 JAR의 META-INF 폴더에

매니페스트 지속성 모듈의 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

<?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 데이터 소스는 웹 로직 이전에 구성되어 있습니다.
  • 어떤 점에서 나는 의 확장 이름 목록의 이름이 선택적 패키지로 배포 된 JAR 파일의 이름과 일치해야한다는 인상을 받았습니다. 그러나 나는 더 많이 읽을 때 그것이 옳지 않다는 것을 깨달았습니다.
+0

확장 이름에 com.amir.persistence를 사용해 보셨습니까? –

+0

예. 그거였다. 나는 이것을 얼마 전에 고쳤으며, 오늘 당신의 의견을 알게되었습니다. 누군가가 실제로 응답했다고 통보받지 못했습니다. 감사. 그것은 저를 약간 구원했을 것입니다. –

답변

0

그래서 대답은 라이브러리에서 사용 된 것과 동일한 확장명을 사용하는 것입니다.