Getting started with Restful web service in java using jersey

Creating Restful web services in java is not a difficult task. You just use some annotation to expose you methods as web service end points. All annotations those turn your method into web services are in javax.ws.rs package. To host you web service, you can use tomcat or any web server. One thing you need to do is, configure the jersey ServletContainer servlet in web.xml for the particular url pattern.

See the following example depicting the calculator service.

package pack;

import java.net.URI;
import java.net.URISyntaxException;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;

@Path("/cal")
public class CalculatorResource {
    @GET
    @Produces("text/plain")
    public String getDate() {
        return "Server date:" + new java.util.Date();
    }
    @GET
    @Path("/add/{x}/{y}")
    @Produces("application/xml")
    public String add(@PathParam("x")int x,@PathParam("y")int y){
        return "<result>\n" +
                "     <first-value>"+x+"</first-value>\n" +
                "     <second-value>"+y+"</second-value>\n" +
                "     <sum>"+(x+y)+"</sum>\n" +
                "</result>";
    }
    @POST
    @Path("/add")
    @Produces("application/xml")
    public String add2(@PathParam("x")int x,@PathParam("y")int y){
        return "<result>\n" +
                "     <first-value>"+x+"</first-value>\n" +
                "     <second-value>"+y+"</second-value>\n" +
                "     <sum>"+(x+y)+"</sum>\n" +
                "</result>";
    }
}

jersey ServletContainer servlet config in web.xml

 <servlet>
      <servlet-name>restservlet</servlet-name>
      <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>restservlet</servlet-name>
      <url-pattern>/restful/*</url-pattern>
  </servlet-mapping>

Overview of Spring Framework

Spring framework is the platform which supports for developing java applications using its infrastructure (Physical and organizational structures). Spring allows you to develop application with simple plan old java objects (POJO). Spring takes care of managing objects and their lifecycle. This framework provides the stage for your objects to play their role and all dependencies the objects depend on are provided at that time whenever required.

Spring framework integrates your objects to create an application and make them independent from each other. Spring connects all objects being maintained by it by injecting their reference in each other as per requirements.

Spring able to manage various common requirements for your application like database connection, transactions, emailing, orm, aop etc.

For example, if you imagine a calculator application which has the following objects to accomplish its functionality:
  • Keyboards
  • Display
  • Adder
  • Subs tractor
  • Divider
  • Multiplier
  • Calculator
Then spring assembles all objects as follows to make the calculator. All objects are managed by spring and connect to each other to make them working.




Architectural advantages of using frameworks

Indirectly, spring helps you to follow some architecture and design principles of software engineering. Spring does not allow you to bind objects yourself however it provides the structured ways to bind the object to make something understandable. Software design is the important aspects of your project and spring forces you to follow the design patterns and architecture patterns.

Without following the architecture and design pattern, your application may look like a circuit of something which is working fine but you cannot repair it easily. But spring arranges components of your application that looks like the circuit which can be repaired without any hassle.


This is the TV circuit and you can see how difficult to understand of connectivity of the different components(Ref:https://www.reddit.com/r/mildlyinteresting/comments/2od5e9/circuitry_inside_a_50_year_old_television_im/)

 

 This is also a TV circuit board but having organized way of components (Ref: http://www.qsl.net/pu1xtb/artigos.html)

Popular Posts