2009-10-22 4 views
2

내 가게에서는 오라클의 Application Server를 수년간 사용해 왔습니다. 따라서 우리가 잘 알기도 전에 WAR 파일 바깥에 애플리케이션 설정 파일을 저장하는 규범을 개발했으며 Oracle 전용 배치 서술자를 사용하여 애플리케이션 별 config 디렉토리를 각 애플리케이션에 추가했다. 이 배치 서술자는 WAR에 모든 의존성을 포함하지 않고 애플리케이션 계층에 classpath 요소를 추가 할 수있게 해줍니다.WebLogic 10의 애플리케이션 (WAR) 클래스 패스에 항목을 추가 하시겠습니까?

이제 우리는 WebLogic 10.3으로 업그레이드해야하며 외부 구성에 의존하는 응용 프로그램의 대안을 찾아야합니다.

응용 프로그램 수준에서 외부 jar 또는 디렉토리를 클래스 로더에 추가하는 방법이 있습니까? 시스템 클래스 로더를 추가하는 방법을 찾았지만 응용 프로그램 수준에 추가하여 배포 설명자를 수정하는 것 외에도 응용 프로그램을 다시 작업하지 않아도됩니다.

WebLogic 10에서 그런 일이 가능합니까?

답변

0

내 지식으로는 Weblogic에서는 불가능합니다. 실제로 외부 구성 파일을 system classpath에 추가해야합니다. 약간의 클래스 로더 (filteringloading order 참조)를 조정할 수 있지만 OAS의 "응용 프로그램 수준"에서 종속성을 추가 할 수있는 것은 없습니다. 위에서 언급 한 시나리오가 옵션이 아닌 경우 별도의 도메인을 실행해야합니다.

1

외부 jar는 공유 라이브러리를 사용하는 배포에서 참조 할 수 있습니다.

대략 외부 항아리는 라이브러리로 배포해야합니다. 그런 다음 library-ref 설명자를 사용하여 앱의 weblogic-application.xml에서 참조 할 수 있습니다.

doc을 참조하십시오.

비록 시스템 클래스 경로를 사용하지 않고 외부 디렉토리/config 파일을 제공 할 수 있다고 생각하지 않습니다.

5

추가 연구를 통해 WebLogic의 Generic File Loading Overrides 기능에 대해 학습했습니다.

이 기능을 사용하면 응용 프로그램에 대한 배포 계획을 사용하고 응용 프로그램에 "config-root"를 지정할 수 있습니다. config-root 내에서 "AppFileOverrides"라는 디렉토리를 만들고 WEB-INF/classes 또는 WEB-INF/lib 디렉토리의 모든 파일을 덮어 쓸 수 있습니다.

이 기능은 웹 응용 프로그램 클래스 로더 바로 앞에 클래스 로더를 삽입하여 작동하므로 클래스 경로에서로드 된 모든 리소스는 웹 응용 프로그램 아카이브에 번들로 제공되기 전에이 클래스 로더에서 발견됩니다.

이 기능을 사용하면 war 파일에 존재하지 않는 구성 파일 (이론적으로 클래스)을 추가 할 수 있습니다. 따라서 우리는 전쟁 외의 구성 파일을 유지하는 기능을 모방 할 수 있습니다.

전진하면서, 우리는 개발자들에게 war 파일 내에 설정을 포함 시키도록 권장하고 있습니다.하지만 이것은 레거시 애플 리케이션과 주어진 배포 타겟 (dev vs production)에 대한 설정을 변경해야 할 상황에 적합합니다.

관련 문제