예: 웹 서비스 배치 디스크립터에 대한 핸들러 클래스 구성

이 시나리오는 클라이언트 및 서버 핸들러 클래스를 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;  }
}
  1. 다음을 사용하여 이 클래스를 컴파일하십시오.

    [Windows]%JAVA_HOME%\bin\java -extdirs %WAS_EXT_DIRS% ClientHandler.java ServerHandler.java

    [Linux][AIX][HP-UX][Solaris]$JAVA_HOME/bin/java -extdirs $WAS_EXT_DIRS ClientHandler.java ServerHandler.java

  2. 어셈블리 도구를 열고 두 개의 샘플 엔터프라이즈 아카이브 파일(EAR)을 가져오십시오.
    • [Windows]...\installableApps\WebServicesSamples.ear

      [Linux][AIX][HP-UX][Solaris].../installableApps/WebServicesSamples.ear

    • [Windows]...\installableApps\ApplicationClients.ear

      [Linux][AIX][HP-UX][Solaris].../installableApps/ApplicationClients.ear

  3. 컴파일된 핸들러 클래스를 샘플 모듈에 대해 프로젝트로 가져오십시오.
    • sample.ClientHandler를 AddressBookClient 프로젝트의 appClientModule 디렉토리에 가져오십시오.
    • sample.ServerHandler를 AddressBookW2JE 프로젝트의 ejbModule 디렉토리에 가져오십시오.
  4. 핸들러 클래스용 클라이언트 배치 디스크립터를 구성하십시오.

    이 주제에서는 사용자 제공 핸들러 클래스를 이용하기 위한 클라이언트 배치 디스크립터를 구성하는 방법에 대해 설명합니다.

  5. 핸들러 클래스용 webservices.xml 배치 디스크립터를 구성하십시오.

    이 주제에서는 사용자 제공 핸들러 클래스를 이용하기 위한 webservices.xml 배치 디스크립터를 구성하는 방법에 대해 설명합니다.

  6. 변경사항을 저장하고 EAR 파일을 내보내십시오.
  7. 이미 설치된 경우 WebServicesSamples.ear 애플리케이션을 서버에서 설치 제거하십시오.
  8. WebServicesSamples.ear 애플리케이션을 설치하십시오.
  9. 서버를 시작하십시오.
  10. 클라이언트를 실행하십시오.

    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 환경에서 실행하는지 확인할 수 있습니다.


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



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