JAX-RPC

JAX-RPC(Java API for XML-based RPC) 스펙을 사용하면 SOAP 기반의 상호 운용 및 이식 가능 웹 서비스와 웹 서비스 클라이언트 개발이 가능합니다. JAX-RPC 1.1은 Java™ 플랫폼에서 웹 서비스를 개발 및 배치하는 코어 API를 제공하며 Java EE(Java Platform, Enterprise Edition) 플랫폼에 대한 웹 서비스의 파트입니다. Java EE 플랫폼을 사용하여 이식 가능한 웹 서비스를 개발할 수 있습니다.

WebSphere® Application Server는 JAX-RPC 1.1 표준을 구현합니다.

JAX-RPC 표준은 Java 언어에서 웹 서비스에 대해 WSDL(Web Services Description Language) 사용에 대한 프로그래밍 모델 및 바인딩을 포함합니다. JAX-RPC는 SOAP 통신의 기반이 되는 복잡성을 사용자에게 표시하지 않아서 웹 서비스 개발을 단순하게 해줍니다.

표면상 JAX-RPC는 다른 RMI(Remote Method Invocation)의 인스턴스화와 유사합니다. 특히, JAX-RPC를 사용하면 클라이언트는 웹 서비스가 클라이언트의 주소 공간에 맵핑된 로컬 오브젝트인 것처럼 웹 서비스에 액세스할 수 있으며 웹 서비스 제공자가 다른 세계에 있는 경우에도 마찬가지입니다. JAX-RPC는 일반적으로 HTTP 위에서 사용되는 XML 기반 프로토콜 SOAP를 사용하여 수행됩니다.

JAX-RPC는 WSDL 포트 유형과 Java 인터페이스 사이의 맵핑과 Java 언어와 XML(Extensible Markup Language) 스키마 유형 사이의 맵핑도 정의합니다.

JAX-RPC 웹 서비스는 JavaBeans 또는 엔터프라이즈 Bean 구현에서 작성할 수 있습니다. Java 인터페이스에 원격 메소드를 정의하여 원격 프로시저를 지정할 수도 있습니다. 메소드를 구현하는 하나 이상의 클래스만 코딩하면 됩니다. 나머지 클래스와 기타 아티팩트는 웹 서비스 벤더의 도구를 사용하여 생성됩니다. 다음은 웹 서비스 인터페이스의 예입니다.
package com.ibm.mybank.ejb;
import java.rmi.RemoteException;
import com.ibm.mybank.exception.InsufficientFundsException;
/**
	* Remote interface for Enterprise Bean: Transfer
	*/
public interface Transfer_SEI extends java.rmi.Remote {
			public void transferFunds(int fromAcctId, int toAcctId, float amount)
						throws java.rmi.RemoteException;

}
JAX-RPC의 인터페이스 정의는 특정 규칙을 따라야 합니다.
  • 인터페이스는 RMI처럼 java.rmi.Remote를 확장해야 합니다.
  • 메소드는 java.rmi.RemoteException을 작성해야 합니다.
  • 메소드 매개변수는 원격 참조일 수 없습니다.
  • 메소드 매개변수는 JAX-RPC 스펙에서 지원되는 매개변수 중 하나여야 합니다. 다음 목록은 지원되는 메소드 매개변수 예입니다. 메소드 매개변수에 대한 전체 목록은 JAX-RPC 스펙을 참조하십시오.
    • 기본 유형: boolean, byte, double, float, short, int, long
    • 기본 유형의 오브젝트 랩퍼:java.lang.Boolean, java.lang.Byte, java.lang.Double, java.lang.Float, java.lang.Integer, java.lang.Long, java.lang.Short
    • java.lang.String
    • java.lang.BigDecimal
    • java.lang.BigInteger
    • java.lang.Calendar
    • java.lang.Date
  • 메소드는 집계 값 오브젝트 이외에 이전에 나열된 유형의 컴포지트로 구성되는 값 오브젝트를 사용할 수 있습니다.

클라이언트는 스텁을 작성하고 거기에서 메소드를 호출합니다. 스텁은 웹 서비스에 대해 프록시로 사용됩니다. 클라이언트 코드 퍼스펙티브에서 이는 로컬 메소드 호출과 유사합니다. 그렇지만 각 메소드 호출은 원격 서버에 마샬링됩니다. 마샬링은 SOAP 프로토콜에서 지시되는 대로 XML에 메소드 호출 인코딩을 포함합니다.

다음은 웹 서비스 및 웹 서비스 클라이언트 작성에 필요한 키 클래스와 인터페이스입니다.
  • 서비스 인터페이스: 스텁 및 동적 호출의 팩토리 및 메소드 호출에 사용되는 프록시 오브젝트
  • ServiceFactory 클래스: 서비스의 팩토리.
  • loadService

    loadService 메소드는 WebSphere Application Server 버전 6.0에서 JAX-RPC 구현에 필요한 서비스 위치 지정자를 생성하기 위해 제공됩니다. 이전 버전에서는 생성된 서비스 위치 지정자를 가져오는 특별한 방법이 없었습니다. JNDI 메소드를 사용하여 서비스 위치 지정자를 가져오는 관리 대상 클라이언트 및 비관리 대상 클라이언트에 대해 이식성을 제공하지 않는 IBM의 특정 서비스 위치 지정자 ServiceLocator service=new ServiceLocator(...);를 인스턴스화해야 했었습니다. loadService 매개변수는 다음을 포함합니다.

    • wsdlDocumentLocation: 서비스에 대한 WSDL 문서 위치 URL 또는 널.
    • serviceName: 서비스의 규정된 이름.
    • properties: 생성된 서비스 구현 클래스를 찾는 데 사용할 수 있는 구현 특정 특성 세트.
  • isUserInRole
    isUserInRole 메소드는 엔드포인트 인스턴스에서 현재 메소드 호출에 대한 인증된 사용자가 지정한 논리 역할에 포함되는지를 표시하는 부울 값을 리턴합니다.
    • role: 역할 매개변수는 역할 이름을 지정하는 문자열입니다.
  • 서비스
  • 호출 인터페이스: 동적 호출에 사용
  • 스텁 인터페이스: 스텁의 기본 인터페이스

스텁을 사용하여 웹 서비스 제공자에 액세스하는 경우 대부분의 JAX-RPC API 세부사항은 숨겨집니다. 클라이언트는 ServiceFactory(java.xml.rpc.ServiceFactory)를 작성합니다. 클라이언트는 서비스(java.xml.rpc.Service)를 ServiceFactory에서 인스턴스화합니다. 서비스는 포트를 작성하는 팩토리 오브젝트입니다. 포트는 웹 서비스에 대한 원격 서비스 엔드포인트 인터페이스입니다. Dll의 경우, 서비스 오브젝트는 웹 서비스 포트에서 메소드를 호출하도록 구성 가능한 호출 오브젝트 작성에 사용됩니다.

지원되는 표준 및 스펙의 전체 목록은 웹 서비스 스펙과 API 문서를 참조하십시오.


주제 유형을 표시하는 아이콘 개념 주제



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