General steps in creating bottom-up JAX-WS server, using CXF and Maven, in Java:
- Create java (maven) project
- if you are not using Maven, then you have to manually configure to include the required JAR dependencies.
- see Maven POM file below about required CXF libraries.
- Define Service Endpoint Interface (SEI)
- Define SEI Implementation (service layer)
- Create web service implementation (interaction layer)
- Deploy/execute
You should be able to see the generated WSDL file after deployment by enter the following URL in your browser:
http://localhost:9000/helloWorld?wsdl
The Service End Point Interface (SEI)
package com.jadobo.ws;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHi(@WebParam(name="text")String text);
}
The Service End Point Implementation
package com.jadobo.ws;
import javax.jws.WebService;
@WebService(endpointInterface = "com.jadobo.ws.HelloWorld",
serviceName = "HelloWorldService",
portName="HelloWorldPort")
public class HelloWorldImpl implements HelloWorld {
@Resource private WebServiceContext wsCtxt;
public String sayHi(String text) {
System.out.println("sayHi called");
return "Hello: " + text;
}
}
The Server Implementation
package com.jadobo.ws;
import javax.xml.ws.Endpoint;
public class Server {
protected Server() throws Exception {
// START SNIPPET: publish
System.out.println("Starting Server");
HelloWorldImpl implementor = new HelloWorldImpl();
String address = "http://localhost:9000/helloWorld";
Endpoint.publish(address, implementor);
// END SNIPPET: publish
}
public static void main(String args[]) throws Exception {
new Server();
System.out.println("Server ready...");
Thread.sleep(5 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
}
The Project's Maven POM
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jadobo.ws</groupId>
<artifactId>bottomup</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>default</id>
<name>Maven Repository</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<dependencies>
<!-- CXF Web Service -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-core</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-api</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-common-schemas</artifactId>
<version>2.3.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>2.4.1</version>
</dependency>
</dependencies>
</project>