Chapter 5. Addressing Tutorial
We will start with the following endpoint implementation.
package org.jboss.test.ws.jaxws.samples.wsa;
import javax.jws.web service;
@web service
(
portName = "AddressingServicePort",
serviceName = "AddressingService",
targetNamespace = "http://www.jboss.org/jbossws/ws-extensions/wsaddressing",
endpointInterface = "org.jboss.test.ws.jaxws.samples.wsa.ServiceIface"
)
public class ServiceImpl implements ServiceIface
{
public String sayHello()
{
return "Hello World!";
}
}
package org.jboss.test.ws.jaxws.samples.wsa;
import javax.jws.WebMethod;
import javax.jws.web service;
@web service
(
targetNamespace = "http://www.jboss.org/jbossws/ws-extensions/wsaddressing"
)
public interface ServiceIface
{
@WebMethod
String sayHello();
}
/home/username/wsa/cxf/classes. The next step is to generate the JAX-WS artifacts and WSDL that will be part of the endpoint archive.
We will use the wsprovide command line tool to generate WSDL and JAX-WS artifacts. Here's the command:
cd JBOSS_HOME/bin ./wsprovide.sh --keep --wsdl \ --classpath=/home/username/wsa/cxf/classes \ --output=/home/username/wsa/cxf/wsprovide/generated/classes \ --resource=/home/username/wsa/cxf/wsprovide/generated/wsdl \ --source=/home/username/wsa/cxf/wsprovide/generated/src \ org.jboss.test.ws.jaxws.samples.wsa.ServiceImpl
- Compiled classes
SayHello.classSayHelloResponse.class- Java Sources
SayHello.javaSayHelloResponse.java- Contract Artifacts
AddressingService.wsdl
wsdlLocation annotation attribute. This is the updated endpoint implementation before it is packaged to the war file:
package org.jboss.test.ws.jaxws.samples.wsa;
import javax.jws.web service;
@web service
(
portName = "AddressingServicePort",
serviceName = "AddressingService",
wsdlLocation = "WEB-INF/wsdl/AddressingService.wsdl",
targetNamespace = "http://www.jboss.org/jbossws/ws-extensions/wsaddressing",
endpointInterface = "org.jboss.test.ws.jaxws.samples.wsa.ServiceIface"
)
public class ServiceImpl implements ServiceIface
{
public String sayHello()
{
return "Hello World!";
}
}
jar -tvf jaxws-samples-wsa.war
0 Mon Apr 21 20:39:30 CEST 2008 META-INF/
106 Mon Apr 21 20:39:28 CEST 2008 META-INF/MANIFEST.MF
0 Mon Apr 21 20:39:30 CEST 2008 WEB-INF/
593 Mon Apr 21 20:39:28 CEST 2008 WEB-INF/web.xml
0 Mon Apr 21 20:39:30 CEST 2008 WEB-INF/classes/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/wsa/
374 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/wsa/ServiceIface.class
954 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/wsa/ServiceImpl.class
0 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/wsa/jaxws/
703 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/wsa/jaxws/SayHello.class
1074 Mon Apr 21 20:39:26 CEST 2008 WEB-INF/classes/org/jboss/test/ws/jaxws/samples/wsa/jaxws/SayHelloResponse.class
0 Mon Apr 21 20:39:30 CEST 2008 WEB-INF/wsdl/
2378 Mon Apr 21 20:39:28 CEST 2008 WEB-INF/wsdl/AddressingService.wsdl
web.xml file is:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>AddressingService</servlet-name>
<servlet-class>org.jboss.test.ws.jaxws.samples.wsa.ServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddressingService</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
The following is the regular JAX-WS client using endpoint interface to lookup the web service: package.org.jboss.test.ws.jaxws.samples.wsa:
package.org.jboss.test.ws.jaxws.samples.wsa:
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public final class SimpleServiceTestCase
{
private final String serviceURL = "http://localhost:8080/jaxws-samples-wsa/AddressingService";
public static void main(String[] args) throws Exception
{
// create service
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);
ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class);
// invoke method
proxy.sayHello();
}
}
5.1. Turning on WS-Addressing 1.0
- Annotate service endpoint with @Addressing annotation.
- Modify client to configure WS-Addressing using the JAX-WS web service feature.
Now we need to update endpoint implementation to configure WS-Addressing. Here's the updated endpoint code:
package org.jboss.test.ws.jaxws.samples.wsa;
import javax.jws.web service;
import javax.xml.ws.soap.Addressing;
@web service
(
portName = "AddressingServicePort",
serviceName = "AddressingService",
wsdlLocation = "WEB-INF/wsdl/AddressingService.wsdl",
targetNamespace = "http://www.jboss.org/jbossws/ws-extensions/wsaddressing",
endpointInterface = "org.jboss.test.ws.jaxws.samples.wsa.ServiceIface"
)
@Addressing(enabled=true, required=true)
public class ServiceImpl implements ServiceIface
{
public String sayHello()
{
return "Hello World!";
}
}
We need to update client implementation to configure WS-Addressing. Here's the updated client code:
package org.jboss.test.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 AddressingTestCase
{
private final String serviceURL = "http://localhost:8080/jaxws-samples-wsa/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);
ServiceIface proxy = (ServiceIface)service.getPort(ServiceIface.class, new AddressingFeature());
// invoke method
proxy.sayHello();
}
}

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.