Apache SOAP 웹 서비스를 Java EE 표준에 기반한 JAX-RPC 웹 서비스로 마이그레이션

Apache SOAP를 사용하여 개발된 웹 서비스를, Java™ EE(Java Platform, Enterprise Edition)용 웹 서비스 스펙에 기반하여 개발된 JAX-RPC(Java API for XML-based RPC) 웹 서비스로 마이그레이션할 수 있습니다.

시작하기 전에

Apache SOAP에 기반하여 웹 서비스를 사용했고, 현재 Java에 기반하여 웹 서비스를 개발 및 구현하려는 경우, 5.0.2 버전 이전의 모든 4.0 및 5.0 버전으로 개발된 클라이언트 애플리케이션을 마이그레이션할 필요가 있습니다.

이 태스크 정보

Apache SOAP 구현을 기반으로 하는 SOAP 보안(XML 디지털 서명)이 제거되었습니다. SOAP 보안을 사용하는 대신, 애플리케이션을 웹 서비스의 JSR-109 구현으로 마이그레이션하고 다시 구성하십시오.

Java 표준에 따라 이러한 클라이언트 애플리케이션을 마이그레이션하려면 다음을 수행하십시오.

프로시저

  1. 마이그레이션 계획을 수립하십시오. 두 가지 방법 중 하나로 Apache SOAP 클라이언트를 JAX-RPC 웹 서비스 클라이언트에 포트할 수 있습니다.
    • 서비스에 대한 WSDL(Web Services Description Language) 문서가 있거나 문서를 작성할 수 있는 경우, WSDL2Java 명령 도구를 사용한 웹 서비스용 바인딩 생성을 고려하십시오. Apache SOAP 클라이언트를 생성된 JAX-RPC 바인딩을 사용하도록 개조하는 것이 더 큰 일이지만, 결과 클라이언트 코드가 훨씬 확고하고 유지보수하기가 더 쉽습니다.

      이 경로를 따르려면 Information Center에서 웹 서비스 클라이언트 개발에 대한 문서를 참조하십시오.

    • 서비스용 WSDL 문서가 없고 서비스가 변경될 것으로 예상되지 않으며 Apache SOAP 클라이언트를 최소한의 작업으로 포트하려는 경우, 코드를 변환하여 Apache SOAP API와 비슷한 JAX-RPC 동적 호출 인터페이스(DII)를 사용할 수 있습니다. DII API는 WSDL 또는 생성된 바인딩을 사용하지 않습니다.
    JAX-RPC가 사용자 작성 직렬화 프로그램을 위한 프레임워크를 지정하지 않으므로 JAX-RPC가 사용자 정의 직렬화 프로그램의 사용을 지원하지 않습니다. 애플리케이션이 WebSphere® 애플리케이션 서버가 지원하는 Java, WSDL 및 XML 기술 사이의 기본 맵핑을 준수할 수 없는 경우, 애플리케이션을 마이그레이션하려 시도하지 마십시오. 이 주제의 나머지는 사용자가 JAX-RPC DII API를 사용할 것을 결정했다고 가정합니다.
  2. GetQuote 샘플을 검토하십시오. Information Center의 샘플 섹션에서 웹 서비스 마이그레이션 샘플을 사용할 수 있습니다. 이 샘플은 원래 Apache SOAP 사용자용으로 작성된 GetQuote.java 파일에 있으며, JAX-RPC DII 인터페이스로 마이그레이션하는 데 필요한 변경사항에 대한 설명을 포함하고 있습니다. 자세히 학습하려면 Information Center의 샘플 섹션을 참조하십시오.
  3. 클라이언트 애플리케이션을 Apache SOAP에서 JAX-RPC DII로 변환하십시오. Apache SOAP API와 JAX-RPC DII API 구조는 비슷합니다. 두 API 모두에서 호출 오브젝트를 인스턴스화 및 구성하고, 매개변수를 설정하고, 조작을 호출하고, 그 결과를 처리할 수 있습니다. 다음 명령으로 Service 오브젝트의 일반 인스턴스를 작성할 수 있습니다.
    javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(new QName(""));
    의 특성에 의해 설정됩니다.
    1. 호출 오브젝트를 작성하십시오. Apache SOAP의 다음 코드를 사용하여 호출 오브젝트의 인스턴스가 작성됩니다.
      org.apache.soap.rpc.Call call = new org.apache.soap.rpc.Call ()
      에 의해 호출 오브젝트에 구성됩니다.
      JAX-RPC의 다음 코드로 호출 오브젝트의 인스턴스가 작성됩니다.
      java.xml.rpc.Call call = service.createCall();
      의 특성에 의해 설정됩니다.
    2. 엔드포인트 URI(Uniform Resource Identifier)를 설정하십시오. 조작에 대한 대상 URI가 Apache SOAP의
      call.invoke:  call.invoke("http://...", "");
      에 매개변수로 전달됩니다.
      setTargetEndpointAddress 메소드가 JAX-RPC의
      call.setTargetEndpointAddress("http://...");
      의 특성에 의해 설정됩니다.

      Apache SOAP는 요청에 대한 라우팅 정보를 포함하는 호출 오브젝트에 setTargetObjectURI 메소드를 갖습니다. JAX-RPC는 동등한 메소드가 없습니다. JAX-RPC의 경우에 targetObjectURI의 정보는 targetEndpoint URI에 포함됩니다.

    3. 조작 이름을 설정하십시오. Apache SOUP에서 조작 이름은
      call.setMethodName("opName");
      에 매개변수로 전달됩니다.
      다음 예에 설명된 대로 JAX-RPC에서는 String 매개변수 대신 QName을 승인하는 setOperationName 메소드가 사용됩니다.
      call.setOperationName(new javax.xml.namespace.Qname("namespace", "opName"));
    4. 인코딩 양식을 설정하십시오. Apache SOAP에서 인코딩 양식은
      call.setEncodingStyleURI(org.apache.soap.Constants.NS_URI_SOAP_ENC);
      에 의해 호출 오브젝트에 구성됩니다.
      인코딩 양식은 JAX-RPC에서 호출 오브젝트
      call.setProperty(javax.xml.rpc.Call.ENCODINGSTYLE_URI_PROPERTY, "http://schemas.
      xmlsoap.org/soap/encoding/");
      의 특성에 의해 설정됩니다.
    5. 매개변수를 선언하고 매개변수 값을 설정하십시오. Apache SOAP 매개변수 유형과 값은 벡터로 수집되고 호출 전에 호출 오브젝트에 설정되는 매개변수 인스턴스에 의해 설명됩니다. 예를 들면,
      Vector params = new Vector (); 
      params.addElement (new org.apache.soap.rpc.Parameter(name, type, value, encodingURI)); 
      // repeat for additional parameters... 
      call.setParams (params);
      JAX-RPC의 경우, 호출 오브젝트는 매개변수 값을 제공하지 않고 매개변수 이름과 유형으로 구성됩니다. 예를 들면,
      call.addParameter(name, xmlType, mode); 
      // repeat for additional parameters 
      call.setReturnType(type);
      여기서,
      • name(유형 java.lang.String)은 매개변수 이름입니다.
      • xmlType(유형 javax.xml.namespace.QName)은 매개변수의 XML 유형입니다.
      • mode(유형 javax.xml.rpc.ParameterMode)는 매개변수의 모드입니다(예: IN, OUT 또는 INOUT).
    6. 호출을 작성하십시오. Apache SOAP에서 조작은
      org.apache.soap.Response resp = call.invoke(endpointURI, "");
      에 의해 호출 오브젝트에 구성됩니다.
      매개변수 값은 다음 예에 설명된 대로 배열에 수집되고 call.invoke로 전달됩니다.
      Object resp = call.invoke(new Object[] {parm1, parm2,...});
      의 특성에 의해 설정됩니다.
    7. 결함이 있는지 검사하십시오. Apache SOAP에서 응답을 확인하여 호출의 SOAP 결함을 점검할 수 있습니다.
      if resp.generatedFault then {   
      org.apache.soap.Fault f = resp.getFault;   
      f.getFaultCode();   
      f.getFaultString(); 
      }
      에 의해 호출 오브젝트에 구성됩니다.
      호출에서 SOAP 결함이 발생하는 경우 java.rmi.RemoteException 오류가 JAX-RPC에 표시됩니다.
      try { 
      ... call.invoke(...) 
      } catch (java.rmi.RemoteException) ...
    8. 결과를 검색하십시오. Apache SOAP에서는, 호출이 성공하고 결과를 리턴하는 경우 Response 오브젝트에서 검색할 수 있습니다.
      Parameter result = resp.getReturnValue(); return result.getValue();
      JAX-RPC에서는, 예외가 표시되지 않을 때 호출 결과가 리턴된 오브젝트입니다.
      Object result = call.invoke(...);
       ... 
      return result;

결과

Apache SOAP 웹 서비스를 Java EE 스펙에 기반한 JAX-RPC 웹 서비스로 마이그레이션했습니다.

다음에 수행할 작업

Java EE용 웹 서비스 스펙에 기반한 웹 서비스 클라이언트 개발하십시오.

웹 서비스 가능 클라이언트를 테스트하여 마이그레이션 프로세스가 성공했는지와 Java EE 환경에서 웹 서비스를 구현할 수 있는지 확인하십시오.


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



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