예: 웹 서비스 배치 디스크립터에 대한 핸들러 클래스 구성
이 시나리오는 클라이언트 및 서버 핸들러 클래스를 WebServicesSamples.ear이라는 이름의 샘플 애플리케이션에 추가하는 방법을 설명합니다. 핸들러 클래스는 처리할 요청 또는 응답이 주어졌을 때 메시지를 표시합니다.
클라이언트 핸들러 클래스에 대한 코드는 다음 예와 같습니다.
package samples;
public class ClientHandler implements javax.xml.rpc.handler.Handler {
public ClientHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ClientHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) {}
public void destroy() {}
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
서버 핸들러 클래스에 대한 코드는 다음 예와 같습니다.
package sample;
public class ServerHandler implements javax.xml.rpc.handler.Handler {
public ServerHandler() { }
public boolean handleRequest(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleRequest");
return true; }
public boolean handleResponse(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleResponse");
return true; }
public boolean handleFault(javax.xml.rpc.handler.MessageContext context) {
System.out.println("ServerHandler: In handleFault");
return true; }
public void init(javax.xml.rpc.handler.HandlerInfo config) {}
public void destroy() {}
public javax.xml.namespace.QName[] getHeaders() {
return null; }
}
- 다음을 사용하여 이 클래스를 컴파일하십시오.
%JAVA_HOME%\bin\java -extdirs %WAS_EXT_DIRS% ClientHandler.java ServerHandler.java
$JAVA_HOME/bin/java -extdirs $WAS_EXT_DIRS ClientHandler.java ServerHandler.java
- 어셈블리 도구를 열고 두 개의 샘플 엔터프라이즈 아카이브 파일(EAR)을
가져오십시오.
...\installableApps\WebServicesSamples.ear
.../installableApps/WebServicesSamples.ear
...\installableApps\ApplicationClients.ear
.../installableApps/ApplicationClients.ear
- 컴파일된 핸들러 클래스를 샘플 모듈에 대해 프로젝트로
가져오십시오.
- sample.ClientHandler를 AddressBookClient 프로젝트의 appClientModule 디렉토리에 가져오십시오.
- sample.ServerHandler를 AddressBookW2JE 프로젝트의 ejbModule 디렉토리에 가져오십시오.
- 핸들러 클래스용
클라이언트 배치 디스크립터를 구성하십시오.
이 주제에서는 사용자 제공 핸들러 클래스를 이용하기 위한 클라이언트 배치 디스크립터를 구성하는 방법에 대해 설명합니다.
- 핸들러 클래스용 webservices.xml 배치
디스크립터를 구성하십시오.
이 주제에서는 사용자 제공 핸들러 클래스를 이용하기 위한 webservices.xml 배치 디스크립터를 구성하는 방법에 대해 설명합니다.
- 변경사항을 저장하고 EAR 파일을 내보내십시오.
- 이미 설치된 경우 WebServicesSamples.ear 애플리케이션을 서버에서 설치 제거하십시오.
- 새 WebServicesSamples.ear 애플리케이션을 설치하십시오.
- 서버를 시작하십시오.
- 클라이언트를 실행하십시오.
launchClient ApplicationClients.ear -CCjar=AddressBookClient.jar
클라이언트가 실행되면, 콘솔 출력은 다음 예와 같습니다. 핸들러의 메시지는 굵게 표시됩니다.
IBM Websphere Application Server J2EE Application Client Tool Copyright IBM Corp., 1997-2003 WSCL0012I: Processing command line arguments. WSCL0013I: Initializing the J2EE Application Client Environment. WSCL0035I: Initialization of the J2EE Application Client Environment has completed. WSCL0014I: Invoking the Application Client class com.ibm.websphere.samples.webservices.addr.AddressBookClient >> Querying address for 'Purdue Boilermaker' using port AddressBookW2JE ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 1 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookJ2WE ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 2 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookJ2WB ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 3 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900 >> Querying address for 'Purdue Boilermaker' using port AddressBookW2JB ClientHandler: In handleRequest ClientHandler: In handleResponse >> Response is: 4 University Drive West Lafayette, IN 47907 Phone: (765) 555-4900
클라이언트의 경우, 핸들러 클래스는 각 포트가 아닌 각 서비스 참조에 대해 구성됩니다. AddressBook 샘플에는 4개의 포트가 있지만 1개의 서비스 참조만 있으므로 ClientHandler는 모든 포트에서 요청 및 응답을 처리합니다.
서버 로그 파일을 조사할 때, 다음 데이터가 포함됩니다.
[9/24/03 16:39:22:661 CDT] 4deec1c6 WebGroup I SRVE0180I:
[HTTP router for AddressBookW2JE.jar] [/AddressBookW2JE] [Servlet.LOG]:
AddressBook: init
[9/24/03 16:39:23:161 CDT] 4deec1c6 SystemOut O ServerHandler: In handleRequest
[9/24/03 16:39:23:211 CDT] 4deec1c6 SystemOut O ServerHandler: In handleResponse
결과
핸들러 클래스용 배치 디스크립터가 구성됩니다. WebSphere® Application Server가 수신 웹 서비스 요청을 처리할 수 있도록 하려면 배치 디스크립터가 필요합니다.
다음에 수행할 내용
웹 서비스에 대해 구성되고 사용으로 설정된 EAR 파일을 배치하십시오. 그런 다음 애플리케이션을 테스트하여 WebSphere Application Server 환경에서 실행하는지 확인할 수 있습니다.