Add the 4 dependencies below. If you are using maven, here is a shortcut:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.6.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>3.0.6.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>3.0.6.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.6.Final</version>
</dependency>
Loading the RESTEasy framework is very easy. Simple configure it in web.xml.
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<!-- Set servlet-mapping for the Resteasy servlet if it has a url-pattern other than /* -->
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<listener>
<listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
</listener>
To make spring available in the rest services, add another listener in the web.xml.
<listener>
<listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>
</listener>
And now a simple JSON REST service, to check everything works.
A simple POJO class:
public class RestObject {
private long id;
private String name;
private String value;
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return this.value;
}
public void setValue(String value) {
this.value = value;
}
}
And a service who offers two methods. One who consumes and produces a JSON POST request and another who produces JSON.
@Path("/v1")
public class RestService {
@POST
@Path("/post-service")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response addRestObject(RestObject restObject) {
restObject.setId(123L);
return Response.status(HttpResponseCodes.SC_OK).entity(restObject).build();
}
@GET
@Path("/get-service/{id}")
@Produces(MediaType.APPLICATION_JSON)
public Response getRestObject(@PathParam("id") long id) {
RestObject restObject = new RestObject();
restObject.setId(id);
restObject.setName("your name");
restObject.setValue("JP");
return Response.status(HttpResponseCodes.SC_OK).entity(restObject).build();
}
}
Accessing the GET method, http://localhost:8080/war-file/rest/v1/get-service/2 will output:
{
"id": 2,
"name": "your name",
"value": "JP"
}
Accessing the POST, http://localhost:8080/war-file/rest/v1/post-service method with payload:
{
"id": 1,
"name": "my name",
"value": "JP"
}
Will output:
{
"id": 123,
"name": "my name",
"value": "JP"
}
That is all it takes to get started with RESTEasy using an older application server, happy REST/SOAP service development :).
No comments:
Post a Comment