엔드포인트 참조는 웹 서비스 주소 지정(WS-Addressing)
상호 운용성 프로토콜의 기본 개념이며 특정 웹 서비스 엔드포인트에
대한 정보를 캡슐화하기 위한 표준 메커니즘을 제공합니다. 이 제품은
표준 JAX-WS API를 사용하여 엔드포인트 참조를 작성하는 인터페이스를 제공합니다.
이 태스크 정보
이 태스크는
웹 서비스 주소 지정을 사용하는 JAX-WS 웹 서비스 애플리케이션 작성의 하위
태스크입니다.
표준
JAX-WS WS-Addressing API를 사용하는 애플리케이션을 작성 중인
경우에는 이 태스크를 완료하십시오. 이러한 애플리케이션에는
대상 웹 서비스 엔드포인트에 대한 엔드포인트 참조가 필요합니다.
표준 JAX-WS API는 단순한 엔드포인트 참조만 작성하도록 설계되었으므로,
다음과 같은 제한사항이 있습니다.
- 고가용성 또는 워크로드를 관리하는 엔드포인트 참조를 작성할 수 없습니다.
- Stateful 세션 Bean을 나타내는 엔드포인트 참조를 작성할 수 없습니다.
- IBM 독점 WS-Addressing SPI와 함께 JAX-WS API를 사용하여 작성된 클래스를
사용할 수 없습니다.
엔드포인트 참조를 작성하도록 IBM 독점 WS-Addressing API를 사용하고
나머지 애플리케이션에서 사용하도록 표준 JAX-WS 엔드포인트
참조로 이를 변환하여 이러한 제한사항을 극복할 수 있습니다.
프로시저
- 엔드포인트가 자체를 나타내는 엔드포인트 참조를 작성해야 하는 경우
엔드포인트 참조 또는 참조 매개변수를 지정하지 않으려면
null
오브젝트와 연관시킬 참조 매개변수를 나타내는 Element 오브젝트를 전달하여
웹 서비스 컨텍스트 오브젝트의 getEndpointReference 메소드를 사용하십시오.
기본적으로 이 메소드는 W3CEndpointReference 오브젝트를 작성합니다.
2004/08 WS-Addressing 스펙을 준수하는 엔드포인트를 나타내는
SubmissionEndpointReference 오브젝트를 작성하려면
매개변수로 엔드포인트 참조 유형을 전달하십시오.
예를 들어, 다음 코드 단편은 getEndpointReference 메소드를
사용하여 티켓 ID가 연관된 W3CEndpointRerence 오브젝트를 리턴합니다.
...
@WebService(name="Calculator",
targetNamespace="http://calculator.org")
public class Calculator {
@Resource
WebServiceContext wsc;
...
// Create the ticket id
element = document.createElementNS(
"http://calculator.jaxws.axis2.apache.org", "TicketId");
element.appendChild( document.createTextNode("123456789") );
...
public W3CEndpointReference getEPR() {
// Get the endpoint reference and associate the ticket id
// with it as a reference parameter
W3CEndpointReference epr = (W3CEndpointReference)wsc.getEndpointReference(element);
return epr;
}
...
다음 코드 행은 이전 샘플에 대한 2004/08 엔드포인트 참조를 작성하는
방법을 보여줍니다.
SubmissionEndpointReference epr = (SubmissionEndpointReference)
wsc.getEndpointReference(SubmissionEndpointReference.class, element);
- 엔드포인트가 다른 엔드포인트를 나타내는 엔드포인트 참조를 작성해야 하는 경우
사용하려는 네임스페이스에 따라 W3CEndpointReferenceBuilder
클래스 또는 SubmissionEndpointReferenceBuilder 클래스를 사용하십시오.
- 적절한 빌더 클래스의 인스턴스를 작성하십시오. 2005/08 WS-Addressing 스펙을 준수하는 엔드포인트 참조를
작성하려는 경우 W3CEndpointReferenceBuilder 클래스를 사용합니다.
2004/08 WS-Addressing 스펙을 준수하는 엔드포인트 참조를
작성하려는 경우 SubmissionEndpointReferenceBuilder 클래스를 사용합니다.
- 엔드포인트 위치에 따라 빌더 인스턴스의 특성 또는 다음 특성을 설정하십시오.
- 옵션: 필요한 경우 빌더 인스턴스의 기타 특성을 설정하십시오. 예를 들어, 자원 인스턴스에 액세스하는 데 웹 서비스를 사용하는 경우
referenceParameter 특성을 사용하여 엔드포인트 참조와 자원의 ID를 연관시키십시오.
설정 가능한 특성에 대한 자세한 정보는 API 문서를 참조하십시오.
- 빌더 인스턴스에서
build 메소드를
호출하여 엔드포인트 참조를 확보하십시오.
예를 들어, 다음 코드 단편은 W3CEndpointReferenceBuilder
클래스를 사용하여 2005/08 스펙을 준수하고
다른 애플리케이션에 있는 엔드포인트를 가리키는
엔드포인트 참조를 확보합니다.
...
@WebService(name="Calculator", targetNamespace="http://calculator.org")
public class Calculator {
public W3CEndpointReference getEPR() {
...
// Create the builder object
W3CEndpointReferenceBuilder builder = new
W3CEndpointReferenceBuilder();
// Modify builder properties
builder.address(otherServiceURI);
// Create the endpoint reference from the builder object
W3CEndpointReference epr = builder.build();
return epr;
}
...
다음 코드 단편은 SubmissionEndpointReferenceBuilder
클래스를 사용하여 2004/08 스펙을 준수하고
이 애플리케이션의 다른 모듈에 있는 엔드포인트를 가리키는
엔드포인트 참조를 확보합니다.
...
@WebService(name="Calculator", targetNamespace="http://calculator.org")
public class Calculator {
public W3CEndpointReference getEPR() {
...
// Create the builder object
SubmissionEndpointReferenceBuilder builder = new
SubmissionEndpointReferenceBuilder();
// Modify builder properties
builder.serviceName(calculatorService);
builder.endpointName(calculatorPort);
// Create the endpoint reference from the builder object
SubmissionEndpointReference epr = builder.build();
return epr;
}
...
결과
애플리케이션에서 사용할 엔드포인트 참조를 작성했습니다.
다음에 수행할 작업
- 필요한 경우 createIBMEndpointReference 메소드를 사용하여
com.ibm.websphere.wsaddressing.EndpointReference 클래스의 인스턴스로
엔드포인트 참조를 변환하십시오. 예를 들어,
클라이언트에서 아웃바운드 메시지에 대한 FaultTo 메시지 주소 지정 특성을
설정할 수도 있습니다. JAX-WS API를 사용하여 이 특성을 설정할 수 없습니다.
따라서 BindingProvider 오브젝트에서 특성으로 설정하기 전에
FaultTo 엔드포인트를 나타내는 엔드포인트 참조를
com.ibm.websphere.wsaddressing.EndpointReference 클래스의 인스턴스로 변환해야 합니다.
- 웹 서비스 주소 지정을 사용하는 JAX-WS 웹 서비스 애플리케이션 작성
작업을 계속하십시오.