Servlet 확장 인터페이스

확장 기능 생성기 및 핸들러를 사용하여 Servlet 및 포틀릿 호출 시 원격 메시지에 컨텐츠를 추가할 수 있습니다. Servlet 확장 기능은 필터 개념을 활용하여 기존 동작을 수정할 수도 있습니다. RRD(Remote Request Dispatcher) 확장 기능 프레임워크는 확장 기능 생성기(아웃바운드 RRD 요청에 임의의 데이터를 첨부함) 및 자확장 핸들러(데이터를 사용하고 수신한 데이터에 따라 조치를 수행함)에 의존합니다. com.ibm.wsspi.rrd.extension 패키지에 대한 자세한 정보는 관리자용 추가 API(Application Programming Interface) 항목을 참조하십시오.

확장 생성기

확장 기능 생성기 체인에 속해 있는 확장 기능 생성기는 RRD 요청을 초기화하기 전에 호출됩니다. 이 확장 기능 생성기 체인은 plugin.xml 파일의 com.ibm.wsspi.rrd.generators 확장점에 정의되어 있습니다. 이때 다음 위치 중 한 곳에 있을 수 있습니다.
  • 다른 OSGI 번들.
  • 모든 공유 라이브러리. 예를 들어 서버 클래스 로더에 바인드된 공유 라이브러리가 이에 해당합니다.
  • RRD 사용 가능 로컬 웹 애플리케이션의 WEB-INF 디렉토리

각 확장 기능 생성기는 id 속성을 포함하는 generator 요소로 정의됩니다. 이 id 속성은 RRD 응답 데이터에 추가된 확장 기능에서 확장 기능 생성기를 대상으로 지정할 수 있도록 확장 기능 생성기에 고유한 ID를 지정하는 데 사용합니다. class 속성은 com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator 인터페이스를 구현해야 하는 확장 기능 생성기의 클래스 이름을 지정하는 데 사용됩니다. 각 확장 기능 생성기의 실행 순서는 order 속성을 통해 해당 확장 기능 생성기와 연관되어 있습니다. 이때 order 속성은 다중 확장 기능 생성기 디스크립터 파일이 존재하는 환경에서 확장 기능 생성기 실행 순서를 강제로 적용하는 경우에 유용합니다. 또한 생성기에는 생성기 유형을 정의하는 type이라는 필수 속성이 있습니다. Servlet RRD의 경우 이 값은 "servlet"이고 클래스는 com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator 인터페이스를 구현해야 합니다.

또한 각 확장 기능 생성기는 초기화 매개변수를 임의의 수대로 제공할 수 있습니다. 이 매개변수는 0개 이상의 init-param 요소를 generator 요소의 하위로 포함하여 지정됩니다. 다음은 확장 기능 생성기 선언에 대한 예제입니다.
<extension point="com.ibm.wsspi.rrd.generators">
  <generator id="int1"
        class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
        order="1"
        type=”servlet”>
	   <init-param>
              <param-name>intValue</param-name>
              <param-value>100</param-value>
	   </init-param>
   </generator>
   <generator id="string1"
        class="com.ibm.ws.rrd.example.extension.StringExtensionGenerator"
        order="2"
        type=”servlet”>
      <init-param>
              <param-name>stringValue</param-name>
              <param-value>This is an example string</param-value>
      </init-param>
   </generator>
   <generator id="int2"
        class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
        order="3"
        type=”servlet”>
      <init-param>
              <param-name>intValue</param-name>
              <param-value>200</param-value>
      </init-param>
   </generator>
</extension>
com.ibm.wsspi.rrd.extension.generator 패키지에 대한 자세한 정보는 관리자용 추가 API(Application Programming Interface) 항목을 참조하십시오.

자확장 핸들러

자확장 핸들러 체인에 속해 있는 자확장 핸들러는 RRD 요청을 수신한 후에 호출됩니다. 이 자확장 핸들러 체인은 plugin.xml 파일의 com.ibm.wsspi.rrd.handlers 확장점에 정의되어 있습니다. 이때 다음 위치 중 한 곳에 있을 수 있습니다.
  • 다른 OSGI 번들.
  • 모든 공유 라이브러리. 예를 들어 서버 클래스 로더에 바인드된 공유 라이브러리가 이에 해당합니다.
  • RRD 사용 가능 로컬 웹 애플리케이션의 WEB-INF 디렉토리

각 자확장 핸들러는 namespaceURI 및 localName 속성을 포함하는 handler 요소로 정의됩니다. 이러한 조합의 속성은 자확장 핸들러가 처리할 수 있는 확장 기능 데이터의 규정된 이름을 정의합니다. 또한 각 자확장 핸들러에는 id 속성으로 고유한 ID가 지정되어야 합니다. 이 속성으로 지정된 값은 일치하는 규정된 이름 및 ID의 확장 기능 데이터를 생성하는 확장 기능 생성기와 일치해야 합니다. class 속성은 com.ibm.wsspi.extension.handler.ExtensionHandler 인터페이스를 구현해야 하는 자확장 핸들러의 클래스 이름을 지정하는 데 사용됩니다. 또한 핸들러에는 핸들러 유형을 정의하는 type이라는 필수 속성이 있습니다. 이 값은 "servlet"이고 클래스는 com.ibm.wsspi.rrd.extension.handler.ExtensionHandler 인터페이스를 구현해야 합니다.

또한 각 자확장 핸들러는 초기화 매개변수를 임의의 수대로 제공할 수 있습니다. 이 매개변수는 0개 이상의 init-param 요소를 handler 요소의 하위로 포함하여 지정됩니다. 다음은 자확장 핸들러 선언에 대한 예제입니다.
  <extension point="com.ibm.wsspi.rrd.handlers">
      <handler id="int1"
               class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="1"
               type=”servlet”/>
      <handler id="string1"
               class="com.ibm.ws.rrd.example.extension.StringExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="2"
               type=”servlet”/>
      <handler id="int2"
               class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="3"
               type=”servlet”/>
</extension>
com.ibm.wsspi.rrd.extension.handler 패키지에 대한 자세한 정보는 관리자용 추가 API(Application Programming Interface) 항목을 참조하십시오.

확장 기능 위임자

확장 기능 위임자는 RRD를 사용하여 사용자가 RRD 호출 동안 사용할 특정 확장 기능 생성기 및 핸들러 체인 인스턴스를 지정하도록 허용하여 임의의 Servlet 컨테이너를 처리할 수 있습니다. RRD는 사용자가 확장할 수 있는 확장 기능 위임자 목록을 유지보수하며 발행할 Servlet 요청 유형에 따라 런타임 시 적절한 위임자를 선택합니다.

사용자 정의 확장 기능 위임자는 plugin.xml 파일의 com.ibm.wsspi.rrd.rrd-extension-delegator 확장점에 정의되어 있습니다. 이때 다음 위치 중 한 곳에 있을 수 있습니다.
  • 다른 OSGI 번들.
  • 모든 공유 라이브러리. 예를 들어 서버 클래스 로더에 바인드된 공유 라이브러리가 이에 해당합니다.
  • RRD 사용 가능 로컬 웹 애플리케이션의 WEB-INF 디렉토리
각 확장 기능 위임자는 확장 기능 위임자를 초기화하는 상대적인 순서를 정의하는 priority 속성 및 특정 확장 기능 위임자의 구현 클래스를 정의하는 classname 속성을 포함하는 ExtensionDelegator 요소에서 정의됩니다. 이때 해당 확장 기능 위임자는 com.ibm.wsspi.rrd.extension.factory.ExtensionDelegator 인터페이스를 구현해야 합니다. 우선순위가 동일한 2개 이상의 확장 기능 위임자에서 실행 순서는 예상할 수 없다는 점에 주의하십시오. 다음은 확장 기능 위임자 선언에 대한 예제입니다.
<extension point="com.ibm.wsspi.rrd.rrd-extension-delegator">
  <ExtensionDelegatorRegistration>
    <ExtensionDelegator priority="1" classname="com.ibm.ws.rrd.extension.PortletExtensionDelegator"/>
    <ExtensionDelegator priority="2" classname="com.ibm.ws.rrd.extension.ServletExtensionDelegator"/>
  </ExtensionDelegatorRegistration>
</extension>

사용자 정의 EMF 패키지

확장 기능 생성기에서 생성되어 자확장 핸들러가 사용하는 확장 기능 데이터는 EMF(Eclipse Modeling Framework)를 사용하여 직렬화됩니다. 사용자 정의 확장 기능 데이터를 사용하려는 사용자는 RRD에서 사용하기 전에 적절한 EMF 패키지를 초기화하려면 com.ibm.wsspi.rrd.rrd-emf-packages 확장점을 활용해야 합니다. 이 확장점은 plugin.xml 파일에 속해 있습니다. 이때 다음 위치 중 한 곳에 있을 수 있습니다.
  • 다른 OSGI 번들.
  • 모든 공유 라이브러리. 예를 들어 서버 클래스 로더에 바인드된 공유 라이브러리가 이에 해당합니다.
  • RRD 사용 가능 로컬 웹 애플리케이션의 WEB-INF 디렉토리
각 EMF 패키지는 특정 EMF 패키지(org.eclipse.emf.ecore.impl.EFactoryImpl을 구현하는 생성된 모델 클래스임)의 생성된 EMF 팩토리 구현 클래스를 지시해야 하는 className 요소를 포함하는 emfPackage 요소에서 정의됩니다. 다음은 EMF 패키지 선언에 대한 예제입니다.
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
  <emfPackages>
    <emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
  </emfPackages>
</extension>
참고: 생성된 동일한 EMF 모델 코드가 다중 웹 애플리케이션에서 공유되는 경우, 이때 해당 EMF 모델 코드는 공유 서버 라이브러리에 속해 있어야 하고 모든 웹 애플리케이션이 동일한 애플리케이션 서버에서 실행 중이어야 합니다. 프로덕션에서는 일반적으로 이 경우에 해당하지 않지만, 공통 EMF 모델 코드는 웹 애플리케이션 레벨에 존재할 수 있습니다.

주제 유형을 표시하는 아이콘 참조 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rweb_rrd_servlet_ext
파일 이름:rweb_rrd_servlet_ext.html