Servlet 확장 인터페이스
확장 기능 생성기 및 핸들러를 사용하여 Servlet 및 포틀릿 호출 시 원격 메시지에 컨텐츠를 추가할 수 있습니다. Servlet 확장 기능은 필터 개념을 활용하여 기존 동작을 수정할 수도 있습니다. RRD(Remote Request Dispatcher) 확장 기능 프레임워크는 확장 기능 생성기(아웃바운드 RRD 요청에 임의의 데이터를 첨부함) 및 자확장 핸들러(데이터를 사용하고 수신한 데이터에 따라 조치를 수행함)에 의존합니다. com.ibm.wsspi.rrd.extension 패키지에 대한 자세한 정보는 관리자용 추가 API(Application Programming Interface) 항목을 참조하십시오.
확장 생성기
- 다른 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 인터페이스를 구현해야 합니다.
<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) 항목을 참조하십시오.자확장 핸들러
- 다른 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 인터페이스를 구현해야 합니다.
<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 요청 유형에 따라 런타임 시 적절한 위임자를 선택합니다.
- 다른 OSGI 번들.
- 모든 공유 라이브러리. 예를 들어 서버 클래스 로더에 바인드된 공유 라이브러리가 이에 해당합니다.
- RRD 사용 가능 로컬 웹 애플리케이션의 WEB-INF 디렉토리
<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 패키지
- 다른 OSGI 번들.
- 모든 공유 라이브러리. 예를 들어 서버 클래스 로더에 바인드된 공유 라이브러리가 이에 해당합니다.
- RRD 사용 가능 로컬 웹 애플리케이션의 WEB-INF 디렉토리
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
<emfPackages>
<emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
</emfPackages>
</extension>