This is a simple example of creating Web Service using JAX-RS.
The following are the requirements for this example to work:
a. Apache Tomcat 6 - this sample code was tested using version 6.
b. Java 1.5 or higher
c. Eclipse - Kepler version was used to code this example.
c. Knowledge of XML, WSDL and SOAP.
Step 1: Create Web Service.
a. Create WebService Dynamic Web project.
i.e. jaxrsexample
b. Create a class that returns plain text, xml, html and json message.
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import net.sf.json.JSONObject;
@Path("/jaxrsservice")
public class HelloJAXRSService
{
@GET
@Path("/{param}")
@Produces(MediaType.TEXT_PLAIN)
public Response getMsg(@PathParam("param") String name)
{
String str = "Hello " + name;
return Response.status(200).entity(str).build();
}
@GET
@Produces(MediaType.TEXT_XML)
public String sayXMLHello()
{
return "<?xml version=\"1.0\"?>" + "<hello> Hello Robin" + "</hello>";
}
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello()
{
return "<html> " + "<title>" + "Hello Robin" + "</title>"
+ "<body><h1>" + "Hello Jersey" + "</body></h1>" + "</html> ";
}
@GET
@Produces(MediaType.APPLICATION_JSON)
public String sayJSONHello()
{
JSONObject json = new JSONObject();
List<String> list = new ArrayList<String>();
list.add("Sunday");
list.add("Monday");
list.add("Tuesday");
json.accumulate("weekdays", list);
return json.toString();
}
}//end class
c. Update web.xml file.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,
Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
c. Export jaxrsexample as WAR file. You can save it directly to Apache Tomcat webapps folder.
i.e. jaxrsexample.war
d. Start Tomcat server.
Step 2: Create Client.
a. Generate client classes using ws import:
wsimport -keep -verbose <WSDL url here>
b. Create client class using wsimport generated classes:
import java.net.URI;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
public class HelloTraineeClient
{
private static URI getBaseURI(){
return UriBuilder.fromUri(
"http://localhost:8080/WebService").build();
}
public static void main(String[] args){
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
//XML
System.out.println("XML :" + service.path("rest").path("hellotrainee").accept(MediaType.TEXT_XML).get(String.class));
//HTML
System.out.println("\nHTML :" + service.path("rest").path("hellotrainee").accept(MediaType.TEXT_HTML).get(String.class));
//JSON
System.out.println("\nJSON : " + service.path("rest").path("hellotrainee").accept(MediaType.APPLICATION_JSON).get(String.class));
}
}//end class
c. Run the Client class.
That's it!
Note : You can use SOAPUI for quick testing.
No comments:
Post a Comment