Page 1 of 2

JBoss AS 6 ships with
Apache CXF web services implementation. In this tutorial we will show how to create a simple Web service endpoint and how to deploy and test it with a client.
Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI.
Developing the Web service
Create a new
Dynamic Web Project from Eclipse Menu and select Target runtime and configuration "
JBoss AS 6"
If you don't have a recent version of JBoss Tools installed you will not be able to see in the JBoss Community server list JBoss AS 6. However choosing JBoss AS 5 (and pointing to JBoss AS 6 installation) will just work fine
We will add at first the Web services an interface which will be used by our implementation.
package com.sample;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService
public interface Math {
@WebMethod
public long sum(long a, long b);
}
and this is the implementation class:
package com.sample;
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService(endpointInterface = "com.sample.Math", serviceName = "MathWS")
public class MathWS implements Math
{
public long sum(long a, long b) {
System.out.println("Summing "+a+" + "+b);
return a+b;
}
}
Now it's time to register your Web service. Add your web service in web.xml:
<?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>MathWS</servlet-name>
<servlet-class>com.sample.MathWS</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MathWS</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
A JAX-WS Endpoint can be also configured using Spring XML file in addition to using the JAX-WS APIs. Once you've created your server implementation, you simply need to provide the class name and an address.
Here's a sample
jbossws-cxf.xml
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!-- one or more jaxws:endpoint POJO declarations -->
<jaxws:endpoint id="MathWS" address="http://localhost:8080/Samplews"
implementor="com.sample.MathWS">
<jaxws:invoker>
<bean class="org.jboss.wsf.stack.cxf.InvokerJSE"/>
</jaxws:invoker>
</jaxws:endpoint>
</beans>
For more details about configuring Apache CXF web services with Apache CXF configuration file, please refer to
http://community.jboss.org/wiki/JBossWS-StackCXFUserGuideDeploy the service. If everything compiled correctly, you should see in the list of the deployed services your mathWS service.
Point the browser at http://localhost:8080/jbossws/services and check it.
