3.10. 启用 Web 服务寻址(WS-Addressing)
Web 服务寻址或 WS-Addressing 提供了一种不传输机制来寻址 Web 服务及其相关消息。若要启用 WS-Addressing,您必须将 @Addressing 注释添加到 Web 服务端点,然后配置客户端以进行访问。
以下示例假定您的应用具有现有的 Jakarta XML Web 服务服务和客户端配置。有关完整的工作示例,请参见 JBoss EAP 附带的 jaxws-addressing 快速入门。
将
@Addressing注释添加到应用的 Jakarta XML Web Services 端点代码。示例:带有 @Addressing Annotation 的 Jakarta XML Web Services Endpoint
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!"; } }更新 Jakarta XML Web Services 客户端代码,以配置 WS-Addressing。
示例:为 WS-Addressing 配置的 Jakarta XML Web 服务客户端
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 进行通信。