برای یک پروژه موبایل به سرویسی با خروجی json نیاز داشتم. به همین دلیل رویه زیر را برای ایجاد این سرویس طی کردم. محیط برنامه نویسی jdeveloper و application server هم weblogic میباشد. برای این کار کلاسهای زیر ایجاد شد:
Person - HelloWorld - TestClient
package project1.bean;
public class Person {
private String fname;
private String lname;
public Person() {
super();
}
public void setFname(String fname) {
this.fname = fname;
}
public String getFname() {
return fname;
}
public void setLname(String lname) {
this.lname = lname;
}
public String getLname() {
return lname;
}
}
package project1;
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.MediaType;
import com.google.gson.Gson;
import project1.bean.Person;
@Path("/helloworld")
public class HelloWorld {
@Context
private UriInfo context;
public HelloWorld() {
}
@GET
@Path("retAllPersons")
@Produces("text/plain")
public String retAllPersons(@QueryParam("count")
String count) {
System.out.println("calling retAllPersons");
List<Person> persons = new ArrayList<Person>();
for(int i=0;i<Integer.valueOf(count);i++){
Person p = new Person();
p.setFname("milad"+i);
p.setLname("alizade"+i);
persons.add(p);
}
Gson gson = new Gson();
return gson.toJson(persons);
}
}
دقت کنید که بعد از ایجاد کلاس HelloWorld در محیط jdev در صورتی که کرسر را روی @Path نگه دارید یک علامت زرد رنگ نمایان میشود که اعلان میکند که باید فایل web.xml ایجاد شود، روی آن کلیک کنید تا فایل ایجاد شود:
<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app 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"
version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<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>/jersey/*</url-pattern>
</servlet-mapping>
</web-app>
برای تست آن نیز به روش زیر عمل کردم:
package project1.test;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
public class TestClient {
public TestClient() {
super();
}
public static void main(String[] args) {
Client c = Client.create();
WebResource resource3 =
c.resource("http:/localhost:7001/restPrj/jersey/helloworld/retAllPersons");
String response3 = resource3.queryParam("count", "5").get(String.class);
System.out.println(response3);
}
}
برای استفاده از این کدها به jersey lib نیاز دارید:
دریافت
که باید به پروژه اضافه کنید.
با تشکر
موفق باشید
میلاد