2010-01-26 4 views
3

WebLogic 10.0에서는 WLS의 "공유 J2EE 라이브러리"(http://download.oracle.com/docs/cd/E11035_01/wls100/programming/libraries.html) 기능을 사용하여 여러 개의 귀로 액세스 할 수 있어야하는 병을 그룹화합니다. 이 항아리들은 시스템 클래스 패스에 있었고, 나는 그것들을 공유 라이브러리로 옮기려고했다.참조하는 앱에 Weblogic 10 공유 라이브러리가 표시되지 않습니다.

내 문제는 다음 WLS 웹 관리 콘솔에서

  • 내가 배치에서
  • 은 "이 라이브러리를 참조하는 응용 프로그램"목록 ("theSharedLib"라는 이름의) 공유 라이브러리를 클릭 비어
  • weblogic.Deployer를 사용하여 lib를 배포 취소 할 수도 있지만 다음에 서버를 다시 시작하면 참조하는 응용 프로그램을로드 할 때 누락 된 참조 라이브러리가 누락됩니다.

그래서 시작할 때 참조가 적용되지만 런타임에 WLS가 어떻게 든 이것을 잊어 버린 것 같습니다 (여기에 몇 가지 마술 트릭이 필요합니까?).

또한이를 수 :

  • theSharedLib (아무 불평) someReferencingApp 배포 취소
  • (확인) 배포 취소
  • someReferencingApp (오류없는 LIB!)
  • 배포 theSharedLib (확인)
  • 을 배포
  • someReferencingApp를 배포합니다 (ok; 웹 콘솔에 앱이 나열되지만 다음에 다시 시작하거나 임의의 다른 배포 후에 목록이 다시 비어 있음)
    • META-INF
      • MANIFEST.MF
      • application.xml을
    • LIB
        : 폭발 디렉토리 형식의 공유 lib에 귀 16,

      구조

    • (물건을 내가 단지로 공유 할 필요)

    MANIFEST.MF에 포함 된 (뭔가를 포함하기 때문에)

  • dummyejb.jar을 :
    ..
    확장 - 이름 : theSharedLib
    사양-버전 : 1.0
    구현-버전 : 1.0.0
    ..

    application.xml에는 기본 요소 (하나의 dummyejb ejb 모듈)가 포함되어 있습니다.참조 앱

    구조 : 그것은 META-INF/로직-application.xml을 함유했다 중에서도

    :

    < XML 버전 = 1.0 " "? >
    < 웹 로직 애플리케이션 >
    < 라이브러리-REF >
    < 라이브러리 이름 > theSharedLib </라이브러리 이름 >
    < 사양 버전 > 1.0 </사양 버전 >
    < 구현 버전 > 1.0.0 </구현 버전 >
    < 정확히 일치 > 사실 </정확히 일치 >
    </라이브러리-REF >
    </웹 로직 애플리케이션 >

    무슨 문제가 될 수 있을까? 공유 라이브러리 나 참조하는 앱에서 (1) 참조 목록을 올바르게 작성하고 가장 중요하게 (2) 앱간에 항아리를 공유하도록 다른 작업을 수행해야합니까?

    lib 내의 공유 jar가 각 응용 프로그램의 공유 라이브러리에있는 동일한 클래스 로더를 사용하여로드되어 sys 클래스 경로 동작과 거의 유사하게 동작한다고 가정합니다. 이것도 확인해 주시겠습니까?

    감사합니다.

  • +0

    (오랜 시간이 걸리므로 시간이 많이 걸렸기 때문에) 미안하지만 공유 라이브러리가 실제로 잘 배치되었는지는 확실하지 않습니다. 문제를 명확히 할 수 있습니까? –

    +0

    @Pascal : 예, weblogic.Deployer ... -library를 사용하여 공유 라이브러리를 배포했습니다. 웹 콘솔에서 배포 된 라이브러리의 상태는 "라이브러리"입니다. 배포중인 공유 라이브러리가 없으면 참조하는 응용 프로그램은 도메인 시작시 불만을 제기하고 "새로 만들기"상태를 갖지만 공유 된 lib가 배포 되더라도 설명 된 효과가 표시됩니다. – ron

    +0

    이상한 일들이 좋아 보인다. MANIFEST.MF에서 참조되는 lib에있는 JAR 파일입니까? –

    답변

    1

    감사합니다. 실제로 이것은 내가 발견 한 것입니다 : 참조 응용 프로그램이 배포시 이상한 경우 (이상한 이유가있을 수 있지만 지금은 상당히 일관성이있는 경우) 참조 응용 프로그램 목록이 웹 콘솔에서 사라집니다.

    2) 유감스럽게도 공유 라이브러리 안의 클래스는 서로 다른 참조 응용 프로그램의 클래스 로더에 의해로드되므로이 방법으로 응용 프로그램 간의 통신을 위해 인터페이스 클래스를 공유 할 수 없습니다.

    +0

    인터페이스 정의를 공유 라이브러리에 공유 할 수 없습니까? JEE 공유 라이브러리의 모든 부분을 재사용한다는 것이 맞지 않습니까? – SJunejo

    0

    공유 라이브러리의 MANIFEST.MF (EAR)는 lib의 JAR을 참조하는 Class-Path 항목을 포함해야한다고 생각합니다 (클래스를 찾을 위치를 클래스로 알려줍니다). 다음과 같은 내용 :

    Class-Path: lib/foo.jar lib/bar.jar lib/foobar.jar 
    
    관련 문제