Monday, July 01, 2013

Simple JAX-RS Restful WebService example

1. Create service implementation
@Path("/pojo")
public class PojoRestfulService {

@GET
@Path("/person")
@Produces(MediaType.APPLICATION_JSON)
public Person getPerson() {
Person p = new Person("xyz");
return p;
}
}


2. Update web.xml
<servlet>
  <servlet-name>Jersey Web Application</servlet-name>
  <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <!--You need to change this line to match your package name -->
      <param-value>foo.rest</param-value>
    </init-param>
    <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>Jersey Web Application</servlet-name>
  <url-pattern>/*</url-pattern>
  </servlet-mapping>


3. Create client
public static void main(String[] args) {

ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
Boolean.TRUE);
Client client = Client.create(clientConfig);

WebResource resource = client.resource("http://localhost:7001/MavenWebProject/pojo/person");
ClientResponse response = resource.accept(MediaType.APPLICATION_JSON)
.get(ClientResponse.class);

String output = response.getEntity(String.class);
System.out.println(output);
}

4. Client output
{"name":"xyz"}

No comments: