برای یک پروژه موبایل به سرویسی با خروجی 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 نیاز دارید:  دریافت

که باید به پروژه اضافه کنید. 


با تشکر

موفق باشید

میلاد