제공된 API를 대체 버전으로 대체

애플리케이션이 Liberty에서도 사용 가능한 클래스를 제공(하거나 이를 제공하는 라이브러리를 사용)하는 경우에는 기본적으로 Liberty의 클래스가 사용됩니다. 애플리케이션이 이 클래스의 대체 버전을 사용하도록 변경하려면, 애플리케이션은 server.xml 파일 또는 포함 파일에서 구성되어야 합니다.

이 태스크 정보

애플리케이션이 서버 런타임 환경에서도 존재하는 클래스를 포함하는 경우, 이 중에서 애플리케이션에서 사용하는 개별 클래스의 사본을 제어할 수 있습니다. 예를 들어, 애플리케이션 및 서버 런타임 환경에 서로 다른 버전의 클래스가 제시되는 경우, 애플리케이션에 패키징된 버전이 사용되도록 해야 합니다.

기본적으로, Liberty 런타임 환경의 클래스는 모든 Java™ EE 애플리케이션에 의해 사용됩니다. 클래스 로더 구성 delegation 속성을 사용하여 이 동작을 대체할 수 있습니다. 이 구성은 특정 애플리케이션이나, 애플리케이션에서 사용하기 위해 선택할 수 있는 공유 라이브러리에 한정됩니다.

다음 예제에서 Scholar라고 하는 애플리케이션은 Liberty에서 사용 가능한 클래스의 사본을 사용하는 대신에 자신이 제공(하거나 자신이 사용하는 라이브러리에서 제공)하는 클래스를 사용해야 합니다.

  • 클래스가 애플리케이션 내에 패키징된 경우, 기본 parentFirst 위임 동작을 server.xml 구성 파일의 classloader 요소 또는 여기서 포함하는 파일로 대체하십시오.
    <application id="" name="Scholar" type="ear" location="scholar.ear">
      <classloader delegation="parentLast" />
    </application>
    이는 클래스에 대한 연관 라이브러리 및 애플리케이션을 찾은 후에만 Liberty 클래스에서 찾도록 애플리케이션 클래스 로더에 지시합니다.
  • 클래스가 공유 라이브러리에 패키징된 경우, 다음과 같이 공유 라이브러리의 사용을 구성하는 classloader 요소에 delegation 속성을 추가하십시오.
    <application id="" name="Scholar" type="ear" location="scholar.ear">
      <classloader delegation="parentLast" commonLibraryRef="mySharedLib"/>
    </application>
    
    <library id="mySharedLib">
      <fileset dir="${server.config.dir}/myLib" includes="*.jar" />
    </library>

애플리케이션의 개인용 라이브러리에 대한 privateLibraryRef 속성을 사용할 수도 있습니다. 다중 Java EE 애플리케이션에서 라이브러리 공유의 내용을 참조하십시오.


주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_classloader_alt_api.html