BEA-160228 AppMerge Failed

akanana·2022년 5월 3일
0

Weblogic

목록 보기
13/14

BEA-160228 발생


Weblogic 12.1.3 Deploy도중,

<2022. 5. 2 오전 10시 48분 48초 KST> <Error> <J2EE> <BEA-160228>
<AppMerge failed to merge your application. If you are running AppMerge on the command-line, merge again with the -verbose option for more details. See the error message(s) below.> 

와 같은 에러가 발생하며 정상적으로 Deploy가 되지 않았다.

Spring 4.x 버전 배포시 발생한 문제이며, Spring 3.x 버전 배포시에는 해당 문제가 발생하지 않았다.

검색 및 시도


해당 내용을 검색하자 Weblogic 업그레이드시(JAVA6 -> JAVA8) 발생하는 경우, JPA 2.1 사용, lib classpath 등의 케이스가 존재하였다.

JPA2.1


weblogic 12.1.3은 기본적으로 JPA2.1 버전을 지원하지 않는다. 하지만 JPA2.1을 사용하는 어플리케이션을 위해 별도의 CLASSPATH를 지정해주어 해당 어플리케이션 배포를 가능하게 할 수 있다.

cd ${DOMAIN_HOME}/bin/
vi setDomainEnv.sh
PRE_CLASSPATH=${ORACLE_HOME}/oracle_common/modules/javax.persistence_2.1.jar:${ORACLE_HOME}/wlserver/modules/com.oracle.weblogic.jpa21support_1.0.0.0_2-1.jar

위 설정 후에도 해당 환경에서는 정상적으로 배포가 되지 않았다.

JDK release 변경


jdk1.8.0_201 -> jdk1.8.0_321

cd ${DOMAIN_HOME}/bin/
vi setDomainEnv.sh
JAVA_HOME=/usr/bin/jdk1.8.0_321

위와같이 설정 변경 후, weblogic을 재기동.

ps -ef|grep java

를 통해 해당 릴리즈 버전으로 정상 기동되었는지 확인하였다.

위 설정 후에도 해당 환경에서는 정상적으로 배포가 되지 않았다.

LIB 검사


application 내 lib속 class의 이상 유무를 검사하였다.

cd lib
# 해당 명령어를 통하여 현재 디렉토리 내부 모든 jar 파일 압축을 해제하였다.
# 해당 명령어를 실행하기 전, lib 디렉토리를 복사 후 실행하자.
for i in `find . -name '*.jar'`; do unzip -qo $i -d $i.delemete; done
# 해당 명령어를 통하여 모든 class 파일의 자바 컴파일 버전을 확인하였다.
find . -name '*.class' |xargs javap -verbose

위 명령어 수행결과, 일부 클래스의 major version이 53임을 확인했다.

  • Java 1.2 uses major version 46
  • Java 1.3 uses major version 47
  • Java 1.4 uses major version 48
  • Java 5 uses major version 49
  • Java 6 uses major version 50
  • Java 7 uses major version 51
  • Java 8 uses major version 52
  • Java 9 uses major version 53

해당 클래스가 포함된 라이브러리(솔루션)의 버전을 낮춘 후 배포하자 정상 작동됨을 확인 할 수 있었다.

0개의 댓글