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