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
의 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에서이 기능을 사용하는 방법에 대한 아이디어가 있으십니까?
감사합니다.하지만 불행히도 앱이 아직 배포되지 않습니다. 위에서 설명한 것과 동일한 오류로 실패합니다. –
전체 로그 파일을 제공하십시오. 나는 단지와 발췌로 당신을 도울 수 없다. –