2017-12-07 18 views
1

JBoss EAP 6.4와 7.0 모두에서 실행해야하는 애플리케이션이 있습니다. 응용 프로그램은 JBoss EAP 7에서 더 이상 지원되지 않는 EJB 엔티티 bean을 사용하므로 엔티티 bean은 JBoss 이주 안내서에 설명 된대로 JPA 엔티티를 사용하도록 이주됩니다. 응용 프로그램은 6.4에서는 잘 전개되고 작동하지만 7.0에서는 "누락 된 종속성"오류로 전개하지 못합니다. 내가 잃어버린 종속성이 데이터 소스 였지만 여기에는 그럴 것 같지 않은 많은 이슈들을 보았습니다. 누락 된 종속성 오류에서 데이터 소스가 전혀 언급되지 않았습니다. 로그에서 persistence.xml 파일이 파싱되고 배포가 실패하기 전에 세션 빈에 jndi 바인딩이 추가 된 것을 볼 수 있습니다.지속성 유닛에 JBoss EAP 6.4에서 7.0으로 마이그레이션하는 종속성이 누락되었습니다.

여러 war 및 ejb jar 파일을 포함하는 EAR 파일이 있습니다. 문제가있는 응용 프로그램은 persistence.xml 파일과 엔티티 클래스가 들어있는 ejbModule.jar과 ejbModule.jar에 포함 된 엔티티 클래스를 참조하는 taglib 클래스가있는 webModule.war 파일로 구성됩니다.

EAR 파일의 구조는 아래에 설명된다 :

MyEAR.ear
는 - ejbJar.jar
- webApp1.war
는 - webApp2.war
는 - ejbModule.jar은 (persistence.xml을 포함 엔티티 클래스)
- META-INF/persistence.xml을
- webModule.jar (태그 라이브러리 클래스 ejbModule.jar에서 엔티티 클래스에 대한 종속성을 가지고)
- META-INF

,451,515,

의 persistence.xml : 그것은 "실종 의존성"에 대한 라인의 수백을 가지고로 (대체 클래스 이름, 데이터 소스 이름, 지속성 단위 이름)

<persistence version="2.0" xmlns:per="2.1" 
xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="myPU"> 
    <class>org.MyEntity1</class> 
    <class>org.MyEntity2</class> 
    <jta-data-source>java:/MyDataSource</jta-data-source> 
    <properties> 
     <property name="jboss.entity.manager.jndi.name" value="java:/myPU"/> 
     <property name="jboss.entity.manager.factory.jndi.name" value="java:/myPU"/> 
    </properties> 
</persistence-unit> 

이 오류 메시지를 게시하기는 어렵습니다 클래스 이름과 응용 프로그램 이름을 공유 할 수 없으며 대체 할 때마다 많이 사용하지 않을 것이라고 생각하지 않습니다.

는 "jboss.naming.context.java.comp.MyEAR.ejbModule.MyEntity1.InAppClientContainer는 [jboss.naming.context.java.comp.MyEAR.ejbModule.MyEntity1] 없습니다": 그러나 같은 항목이 있습니다 ". \"

그러나 또한 같은이 엔트리 ".. 구성 요소 \"webApp1.war \

". jboss.deployment.subunit \"MyEAR.ear \ org.taglib.MyTagLibClass \ " .START가 없습니다. [jboss.persistenceunit. \ "MyEAT.ear/ejbModule.jar # myPU \"] "

나는 fr을 볼 수 있습니다. org.jboss.as.jpa에 대한 DEBUG 로깅은 JBoss가 ear의 모든 war 파일에있는 모든 taglib 클래스에 대한 지속성 유닛에 대한 종속성을 추가하는 것으로 보입니다. webModule.war 만 지속성 단위를 사용해야합니다.

2017년 12월 7일 15 : 37 :. 13,808 DEBUG [org.jboss.as.jpa (MSC 서비스 스레드 1-2) PU 서비스 서비스 jboss.persistenceunit 의존성 추가 "MyEAR.ear # myPU" org.taglib.MyTagLibClass 구성 요소

EAR의 META-INF 디렉토리로 persistence.xml 파일을 옮길 때 응용 프로그램은 JBoss EAP 7.0에 배포되어 제대로 작동합니다. 그러나 이것은 EAR 파일이 동적으로 빌드되고 제어 할 수없는 사용자 정의 응용 프로그램을 포함 할 수 있으므로 이상적인 솔루션은 아닙니다. 나는이 다른 구조를 시도해 보았지만 작동하는 다른 것을 찾지 못했습니다.

JBoss EAP 7.0에서이 기능을 사용하는 방법에 대한 아이디어가 있으십니까?

답변

0

은 실체가

이 시도하십시오 persistence.xml을 위해 자동으로 상대 찾을 수 있기 때문에 아무튼 당신은 그냥이

<persistence version="2.0" xmlns:per="2.1" 
xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="myPU"> 
    <jta-data-source>java:/MyDataSource</jta-data-source> 
</persistence-unit> 

필요

당신의 persistence.xml에 불필요한 항목이 있습니다 가능한 한 많은 server.log를 게시하십시오.

또 다른 아이디어는 EAP를 사용할 때 RedHat 지원에 문의하는 것입니다. 지원이 포함 된 구독이 있다고 가정합니다.

+0

감사합니다.하지만 불행히도 앱이 아직 배포되지 않습니다. 위에서 설명한 것과 동일한 오류로 실패합니다. –

+0

전체 로그 파일을 제공하십시오. 나는 단지와 발췌로 당신을 도울 수 없다. –