귀의 앱 inf/lib 내부의 항아리 로딩 순서
문제
Ear 내부의 메타 -inf 디렉토리에 클래스 경로 속성이있는 Manifest.mf 파일을 추가하면 Weblogic 8.1에 따라 App-Inf/Lib에있는 항아리의로드 순서에 영향을 미칩니 까?
해결책
나는 당신이 manifest.mf의 classpath 속성을 통해 app-inf/lib 주문을 제어 할 수 있다고 생각하지 않습니다.
나는 클라이언트에 따라 이것을 몇 가지 다른 방법으로했다.
- 패치 항아리를 WLS의 시스템 클래스 경로에 추가하십시오. 도메인/bin/setdomainenv.sh (또는 .cmd)를 검사하는 경우 사전, POST, PATCH CLASSPATH 환경 변수가 있어야합니다. 여기에 패치 항아리를 클래스 경로에 추가 할 수 있습니다. 이렇게하면 모든 앱에서 사용할 수 있으며 고객이 원하는 것이 아닐 수도 있습니다.
- patch sodite jar.jar & name jar-patched.jar. app-inf/lib의 항아리를 "-패치"버전으로 교체하십시오.
다른 팁
클래스 로더가 항아리가 귀하의 응용 프로그램에서 요구하는대로 읽기를 읽었다고 생각했습니다.
두 가지 질문이 있습니다.
- 왜 여전히 Weblogic 8.1을 사용하고 있습니까? 지금은 지원하지 않고 현재 버전은 10.x입니다. 당신은 두 가지 버전 뒤에 있습니다. 아직 마이그레이션되지 않은 레거시 앱입니까? -server 옵션과 함께 JDK 5 또는 6을 사용하기 때문에 업그레이드를 통해 큰 부스트를 얻을 수 있습니다. 나는 그것을 추천 할 것이다.
- 로딩 순서에 관심이 있어야하는 이유는 무엇입니까? 컨테이너가 콩을로드하고 관리하는 방법은 앱에 중요하지 않아야합니다.
업데이트:
마치 서버 항아리와 충돌하는 것처럼 거의 다릅니다. 그게 있어요 선호하는 Web-inf 클래스 그 상황에 대한 설정. 이게 네가 말하는거야?
나는 동의한다 더 피니 모
클래스 로딩 순서에 대해 걱정할 필요는 없습니다.이 클래스가 상충되면 항상 Maven 또는 유사한 도구를 사용하여 항아리에서 충돌하는 클래스를 항상 제외 할 수 있습니다.
예를 들어 이것은 Jersey-Spring4 Jar를 추가하는 매우 간단한 예이지만 종속성을 제외하고 다른 버전의 Spring Framework 라이브러리를 사용할 수 있습니다.
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring4</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-aop</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-context</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-beans</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
제휴하지 않습니다 StackOverflow