JAX-WS 애플리케이션의 경우 코드에서 주소 지정 어노테이션을
사용하여 서비스 애플리케이션 배치 중에 WS-Addressing 지원을
사용할 수 있습니다. 또한 삽입된 웹 서비스 프록시 참조를 이 메소드를 사용하는
클라이언트 애플리케이션에서 사용할 수 있습니다.
이 태스크 정보
서비스 코드에서 다음과 같은 주소 지정 어노테이션
중 하나를 사용합니다.
- Addressing - 2005/08 WS-Addressing
스펙을 사용하려는 경우 이 어노테이션을 사용합니다.
- SubmissionAddressing - 2004/08 WS-Addressing
스펙을 사용하려는 경우 이 어노테이션을 사용합니다.
클라이언트에서는
주소 지정 어노테이션만 사용합니다. SubmissionAddressing 어노테이션은
지원되지 않습니다. WebServiceRef 어노테이션과 함께 주소 지정 어노테이션을 지정해야
합니다. WebServiceRef 어노테이션은 클라이언트 컨테이너가 삽입하는
웹 서비스 프록시에 대한 참조를 지정합니다.
어노테이션 설정은
WSDL 문서의 설정을 대체합니다. 어노테이션 설정은 코드에서 생성하는 대신,
수동으로 WSDL 문서를 작성하는 경우 WSDL 설정과 다를 수도 있습니다.
각 어노테이션에 대한 최대 3개의
선택적 매개변수를 지정하십시오.
표 1. 주소 지정 어노테이션에 대한 매개변수. 표에서는 서로 다른 매개변수와 가능한 값, 각각에 대한 설명을 나열합니다. 매개변수 이름 |
가능한 값 |
설명 |
enabled |
true(기본값) false
|
WS-Addressing 지원이 사용 가능한지 여부. |
required |
true
false(기본값)
|
WS-Addressing 헤더가 필요한지 여부. |
responses |
Responses.All(기본값)
Responses.ANONYMOUS
Responses.NON_ANONYMOUS
|
동기 또는 비동기 메시지 교환 패턴을 사용하는지 여부.
동기 메시지 패턴에서 메시지를 전송하려면 Responses.ANONYMOUS를
지정합니다. 비동기 메시지 교환 패턴에서 메시지를 전송하려면
Responses.NON_ANONYMOUS를 사용합니다. 참고: 이 매개변수는
SubmissionAddressing 어노테이션에서 지원되지 않습니다.
|
참고: Addressing 어노테이션은
SOAP(1.1 또는 1.2) over HTTP 바인딩에서만 사용할 수 있습니다.
다른 바인딩에서 클래스를 사용하면(예: XML over HTTP)
클라이언트에서 예외가 발생하고 서버에서는 웹 서비스 배치에 실패합니다.
프로시저
- 서비스 애플리케이션에서 WS-Addressing 지원 동작을 프로그래밍 방식으로
수정하려면 필요한 경우 코드에서 선택적 매개변수를 포함하여 주소 지정 어노테이션 중 하나를
사용하십시오. 다음 예제에서 Addressing 어노테이션은
매개변수 없이 사용됩니다. 따라서 기본 설정이 적용됩니다.
import javax.xml.ws.soap.Addressing;
@Addressing
@WebService(endpointInterface =
"org.apache.axis2.jaxws.calculator.Calculator",
serviceName = "CalculatorService",
portName = "CalculatorServicePort",
targetNamespace = "http://calculator.jaxws.axis2.apache.org")
다음 예제에서
SubmissionAddressing 어노테이션은
WS-Addressing이 사용 가능하고 필수임을 지정하는 매개변수와 함께 사용합니다.
responses 속성은 이 어노테이션에서
지원되지 않습니다. import com.ibm.websphere.wsaddressing.jaxws21.SubmissionAddressing;
@SubmissionAddressing(enabled=true, required=true)
@WebService(endpointInterface =
"org.apache.axis2.jaxws.calculator.Calculator",
serviceName = "CalculatorService",
portName = "CalculatorServicePort",
targetNamespace = "http://calculator.jaxws.axis2.apache.org")
- 삽입된 웹 서비스 프록시 참조를 사용하는 클라이언트에서
WS-Addressing 지원을 사용하려면 WebServiceRef 어노테이션과 함께
필요한 경우 선택적 매개변수를 사용하여 주소 지정 어노테이션을 사용하십시오.
SubmissionAddressing 어노테이션은 이 메소드에 대해 지원되지 않습니다.
예를 들어, 다음 코드 단편에서는
WS-Addressing이 사용 가능하고 동기 메시지 교환 패턴이 사용됨을
지정합니다.
public class MyClientApplication {
// Enable Addressing for a port-component-ref resource injection.
@Addressing(enabled=true, responses=Responses.ANONYMOUS)
@WebServiceRef(MyService.class)
private MyPortType myPort;
...
}
결과
서비스 애플리케이션에서 주소 지정 어노테이션을 사용하는 경우
서버는 인바운드 SOAP 메시지에서 관련 스펙을 준수하는 WS-Addressing 헤더를 처리합니다.
WS-Addressing이 필수임을 지정하고 인바운드 SOAP 메시지가 WS-Addressing 헤더를 포함하지
않거나 어노테이션에서 표시된 스펙을 준수하지 않는 WS-Addressing 헤더를 포함하는 경우
서버는 결함 메시지를 리턴합니다. 예를 들어, 클라이언트가 2004/08 WS-Addressing 헤더를
포함하는 메시지를 전송하고 서버에 2005/08 헤더가 필요한 경우 서버는
결함 메시지를 리턴합니다.
주소 지정
어노테이션을 사용하고 코드에서 WSDL 문서를 생성하는 경우
UsingAddressing 요소 및 WS-Policy 어설션이
WSDL 문서에서 작성됩니다. 이 WSDL 문서를 사용하는 클라이언트는
메시지에 WS-Addressing 정보를 포함합니다. SubmissionAddressing
어노테이션은 현재 WSDL 생성 도구에서 인식되지 않습니다.
그러나 WSDL 문서는 2005/08 스펙과 2004/08 스펙을 서로 구별하지
않습니다. 따라서 SubmissionAddressing 어노테이션을
포함하는 코드에서 WSDL 문서를 생성하려는 경우
Addressing 및 SubmissionAddressing 어노테이션 모두를 사용하십시오.
응답 속성을 지정하는 경우 대응하는
메시지 교환 패턴이 사용됩니다.