3.10. 웹 서비스 주소 지정 활성화 (WS-Addressing)
웹 서비스 주소 지정 또는 WS-Addressing은 웹 서비스 및 관련 메시지를 처리할 수 있는 전송 중립적 메커니즘을 제공합니다. WS-Addressing을 활성화하려면 웹 서비스 엔드포인트에 @Addressing 주석을 추가한 다음 액세스할 클라이언트를 구성해야 합니다.
다음 예제에서는 애플리케이션에 기존 Jakarta XML Web Services 서비스 및 클라이언트 구성이 있다고 가정합니다. 전체 작업 예는 JBoss EAP와 함께 제공되는 jaxws-addressing 빠른 시작을 참조하십시오.
@Addressing주석을 애플리케이션의 Jakarta XML Web Services 엔드포인트 코드에 추가합니다.예제: @Addressing 주석이 있는 자카르타 XML 웹 서비스 엔드 포인트
package org.jboss.quickstarts.ws.jaxws.samples.wsa; import org.jboss.quickstarts.ws.jaxws.samples.wsa.ServiceIface; import javax.jws.WebService; import javax.xml.ws.soap.Addressing; @WebService( portName = "AddressingServicePort", serviceName = "AddressingService", wsdlLocation = "WEB-INF/wsdl/AddressingService.wsdl", targetNamespace = "http://www.jboss.org/jbossws/ws-extensions/wsaddressing", endpointInterface = "org.jboss.quickstarts.ws.jaxws.samples.wsa.ServiceIface") @Addressing(enabled = true, required = true) public class ServiceImpl implements ServiceIface { public String sayHello() { return "Hello World!"; } }WS-Addressing을 구성하도록 Jakarta XML Web Services 클라이언트 코드를 업데이트합니다.
예제: WS-Addressing용으로 구성된 자카르타 XML 웹 서비스 클라이언트
package org.jboss.quickstarts.ws.jaxws.samples.wsa; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import javax.xml.ws.soap.AddressingFeature; public final class AddressingClient { private static final String serviceURL = "http://localhost:8080/jaxws-addressing/AddressingService"; public static void main(String[] args) throws Exception { // construct proxy QName serviceName = new QName("http://www.jboss.org/jbossws/ws-extensions/wsaddressing", "AddressingService"); URL wsdlURL = new URL(serviceURL + "?wsdl"); Service service = Service.create(wsdlURL, serviceName); org.jboss.quickstarts.ws.jaxws.samples.wsa.ServiceIface proxy = (org.jboss.quickstarts.ws.jaxws.samples.wsa.ServiceIface) service.getPort(org.jboss.quickstarts.ws.jaxws.samples.wsa.ServiceIface.class, new AddressingFeature()); // invoke method System.out.println(proxy.sayHello()); } }
이제 클라이언트 및 엔드포인트에서 WS-Addressing을 사용하여 통신합니다.