介紹一下環境:
首先需要下載下傳一個jaxrs-ri-2.22.2.zip的包
采用Jdeveloper 12c版本,jdk1.8
WebLogic Server 12.2.1版本
Restful項目建立
在Jdeveloper 12c中建立一個項目,先建立一個application.
建立一個項目.
在項目中建立一個person的類,在建立一個personService類.
代碼如下:
Person.java
package restfulproject; import java.util.Date; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Person { private Long id; private String firstname; private String lastname; private Date hiredate; private Long addressId; public Person() { super(); } public void setId(Long id) { this.id = id; } public Long getId() { return id; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getFirstname() { return firstname; } public void setLastname(String lastname) { this.lastname = lastname; } public String getLastname() { return lastname; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public Date getHiredate() { return hiredate; } public void setAddressId(Long addressId) { this.addressId = addressId; } public Long getAddressId() { return addressId; } } |
PersonService
import java.util.ArrayList; import java.util.Date;import java.util.List; public class PersonService { private List<Person> persons; private Person person; public PersonService() { super(); this.persons = new ArrayList<Person>(); for (long i = 0; i < 10; i++) { Person p = new Person(); p.setId(i); p.setFirstname("Firstname " + i); p.setLastname("Last " + i); p.setHiredate(new Date()); this.persons.add(p); } this.person = this.persons.get(0); } public List<Person> getPersons(){ return this.persons; } public void addPerson(Person person) { System.out.println("add person " + person); if(person != null){ getPersons().add(person); } } public Person getPerson(){ return person; } } |
生成restful Service.
選擇consume和product支援的格式
修改代碼最後變成:
package restfulproject; import java.util.ArrayList; import java.util.Date;import java.util.List; import javax.ws.rs.Consumes; import javax.ws.rs.FormParam; import javax.ws.rs.PathParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path("restfulproject") @Consumes(value = { "application/json", "application/xml" }) @Produces(value = { "application/json", "application/xml" }) public class PersonService { private List<Person> persons; private Person person; public PersonService() { super(); this.persons = new ArrayList<Person>(); for (long i = 0; i < 10; i++) { Person p = new Person(); p.setId(i); p.setFirstname("Firstname " + i); p.setLastname("Last " + i); p.setHiredate(new Date()); this.persons.add(p); } this.person = this.persons.get(0); } @GET @Path("/Persons") public List<Person> getPersons(){ return this.persons; } @POST @Path("/person") @Consumes(MediaType.APPLICATION_JSON) public void addPerson(Person person) { if(person != null){ System.out.println("Enter===="); System.out.println(persons.size()); System.out.println(person.getFirstname()); this.persons.add(person); System.out.println(persons.size()); System.out.println("Over===="); } } @GET @Path("/person/{userid}") public Person getPerson(@PathParam("userid") int userid){ List<Person> personlist = this.getPersons(); for(Person user: personlist){ if(user.getId() == userid){ return user; } } return null; } } |
同時web.xml也加入了内容
<?xml version = '1.0' encoding = 'GBK'?> <web-app 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_3_0.xsd" version="3.0"> <servlet> <servlet-name>jersey</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</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app> |
部署
生成部署profile.
選擇生成War包
然後部署.
測試
在WebLogic管理控制台上找到部署的url
然後找到WADL位址
通過SOAPUI生成WADL項目,然後運作測試Perons,擷取所有的person資訊
如果需要得到xml,需要在head中加入Accept=application/xml
getperson/{userid}的測試界面
添加使用者