문제

Ear 내부의 메타 -inf 디렉토리에 클래스 경로 속성이있는 Manifest.mf 파일을 추가하면 Weblogic 8.1에 따라 App-Inf/Lib에있는 항아리의로드 순서에 영향을 미칩니 까?

도움이 되었습니까?

해결책

나는 당신이 manifest.mf의 classpath 속성을 통해 app-inf/lib 주문을 제어 할 수 있다고 생각하지 않습니다.

나는 클라이언트에 따라 이것을 몇 가지 다른 방법으로했다.

  1. 패치 항아리를 WLS의 시스템 클래스 경로에 추가하십시오. 도메인/bin/setdomainenv.sh (또는 .cmd)를 검사하는 경우 사전, POST, PATCH CLASSPATH 환경 변수가 있어야합니다. 여기에 패치 항아리를 클래스 경로에 추가 할 수 있습니다. 이렇게하면 모든 앱에서 사용할 수 있으며 고객이 원하는 것이 아닐 수도 있습니다.
  2. patch sodite jar.jar & name jar-patched.jar. app-inf/lib의 항아리를 "-패치"버전으로 교체하십시오.

다른 팁

클래스 로더가 항아리가 귀하의 응용 프로그램에서 요구하는대로 읽기를 읽었다고 생각했습니다.

두 가지 질문이 있습니다.

  1. 왜 여전히 Weblogic 8.1을 사용하고 있습니까? 지금은 지원하지 않고 현재 버전은 10.x입니다. 당신은 두 가지 버전 뒤에 있습니다. 아직 마이그레이션되지 않은 레거시 앱입니까? -server 옵션과 함께 JDK 5 또는 6을 사용하기 때문에 업그레이드를 통해 큰 부스트를 얻을 수 있습니다. 나는 그것을 추천 할 것이다.
  2. 로딩 순서에 관심이 있어야하는 이유는 무엇입니까? 컨테이너가 콩을로드하고 관리하는 방법은 앱에 중요하지 않아야합니다.

업데이트:

마치 서버 항아리와 충돌하는 것처럼 거의 다릅니다. 그게 있어요 선호하는 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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top