It is becoming more and more popular using rest-style web service.
1. create a new web service project, which name is TestWS_RS.
Chose Web Service Framework: REST(JAX-RS)
It automatically produces J2EE structure, and check the 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> <display-name>JAX-RS REST Servlet</display-name> <servlet-name>JAX-RS REST Servlet</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>JAX-RS REST Servlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
2.Add JAX-RS libraries into the project
chose JAX-RS 1.0.2 Core Libraries(Project Jersey 1.0.2)
JAXB supports the transform between Class and XML.
3. Create a POJO class User and add @XmlRootElement above it
package com.jack.ws;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class User {
private int id;
private String preferedname;
private String firstname;
private String lastname;
private String gender;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPreferedname() {
return preferedname;
}
public void setPreferedname(String preferedname) {
this.preferedname = preferedname;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return “Id:”+id+” , FirstName:”+firstname+” , LastName:”+lastname+” , PreferedName:”+preferedname+” , Gender:”+gender;
}
}
4.Build a web service, UserResource
Chose Framework: REST(JAX-RS), Tick ‘Create new Java bean’
In java class field,input ‘UserResource’; chose Produces: application/xml; in URL path field, input ‘users’.
Then click finish button, it produces a ‘UserResource’ Class
5. Now begin to add REST methods in UserResource Class.
Chose UserResource Class,right click ,chose ‘MyEclipse’,chose ‘Add REST Method…’.
Firstly, add ‘getUsers’ method.
Secondly,add ‘getUser’ method.
Thirdly,add ‘addUser’ method.
6. Modify UserResource Class
package com.jack.ws; import java.util.ArrayList; import java.util.List; import java.util.TreeMap; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import com.sun.jersey.spi.resource.Singleton; @Produces("application/xml") @Path("users") @Singleton public class UserResource { private TreeMap<Integer, User> userMap = new TreeMap<Integer, User>(); public UserResource(){ User user = new User(); user.setFirstname("Jackie"); user.setLastname("Chan"); user.setPreferedname("Jack"); user.setGender("Male"); addUser(user); } @GET public List<User> getUsers() { List<User> users = new ArrayList<User>(); users.addAll(userMap.values()); return users; } @GET @Path("{id}") public User getUser(@PathParam("id") int cId) { return userMap.get(cId); } @POST @Path("add") @Produces("text/plain") @Consumes("application/xml") public String addUser(User user) { int id = userMap.size(); user.setId(id); userMap.put(id, user); return "Added a new User and Its info is "+user.toString(); } }
7.Deploy the web service into tomcat 6 server.
8.Start Tomcat server
Some information about the web service in tomcat6server console.
04/08/2010 11:57:18 AM org.apache.catalina.startup.HostConfig checkResources INFO: Reloading context [/TestWS_RS] 04/08/2010 11:57:20 AM com.sun.jersey.api.core.ClasspathResourceConfig init INFO: Scanning for root resource and provider classes in the paths: D:\tomcat\webapps\TestWS_RS\WEB-INF\lib D:\tomcat\webapps\TestWS_RS\WEB-INF\classes 04/08/2010 11:57:21 AM com.sun.jersey.api.core.ClasspathResourceConfig init INFO: Root resource classes found: class com.jack.ws.CustomersResource class com.jack.ws.UserResource 04/08/2010 11:57:21 AM com.sun.jersey.api.core.ClasspathResourceConfig init INFO: Provider classes found:
9.Now begin to test the web service
chose this project, right click, chose ‘MyEclipse’,then chose ‘Test with web service explore’.
10.click id,input 0 in id field, then click Test button.
It gets a Response
<?xml version="1.0" encoding="UTF-8"?> <user> <firstname>Jackie</firstname> <gender>Male</gender> <id>0</id> <lastname>Chan</lastname> <preferedname>Jack</preferedname> </user>
11. Click add,in the content field, input
<user> <firstname>Jeanny</firstname> <lastname>Shery</lastname> <preferedname>Jean</preferedname> <gender>Female</gender> </user>
click test button, get a response
Added a new User and Its info is Id:1 , FirstName:Jeanny , LastName:Shery , PreferedName:Jean , Gender:Female
12. Click User,Click Test Button, it gets a response.
<?xml version="1.0" encoding="UTF-8"?> <users> <user> <firstname>Jackie</firstname> <gender>Male</gender> <id>0</id> <lastname>Chan</lastname> <preferedname>Jack</preferedname> </user> <user> <firstname>Jeanny</firstname> <gender>Female</gender> <id>1</id> <lastname>Shery</lastname> <preferedname>Jean</preferedname> </user> </users>
13. Now begin to use other browser to test the web server, open firefox, input
http://localhost:8080/TestWS_RS/services/users/0
It will invoke getUser method in UserResource Class, and return xml of a user object
http://localhost:8080/TestWS_RS/services/users/1
It will invoke getUser method in UserResource Class, and return xml of another user object
14. Install poster plugin in firefox, use poster to test addUser method of the web service
Open poster
In URL field, input ‘http://localhost:8080/TestWS_RS/services/users/add’
In Content Type field, input ‘application/xml’
In Content field,input:
<user> <firstname>Hilly</firstname> <lastname>Paris</lastname> <preferedname>Hill</preferedname> <gender>Male</gender> </user>
Click post button, it will get a response quickly.
Added a new User and Its info is Id:2 , FirstName:Hilly , LastName:Paris , PreferedName:Hill , Gender:Male
15. Open firefox, input the url
http://localhost:8080/TestWS_RS/services/users
It will invoke getUsers method in UserResource Class and return a user list.
<users> − <user> <firstname>Jackie</firstname> <gender>Male</gender> <id>0</id> <lastname>Chan</lastname> <preferedname>Jack</preferedname> </user> − <user> <firstname>Jeanny</firstname> <gender>Female</gender> <id>1</id> <lastname>Shery</lastname> <preferedname>Jean</preferedname> </user> − <user> <firstname>Hilly</firstname> <gender>Male</gender> <id>2</id> <lastname>Paris</lastname> <preferedname>Hill</preferedname> </user> </users>
Leave a comment