The common way to deploy a Jersey REST resource is to configure the
web.xml
file so that there is a servlet container responsible to delegate requests from a specific URL pattern to resource classes. If you use a Servlet 3.0 container, for example Tomcat 7, it is possible to use Java annotations rather than aweb.xml
file. Oddly enough, there is not much information available on how to configure Jersey by using annotations.
First, you need a class that extends class
Application
and that has to be annotated with @ApplicationPath
. The value of the annotation is the base path of the REST service that is to be managed by this class. This class must override method getClasses
that returns a set of classes that provide the implementation of the endpoints of this REST service. This is comparable to the declaration of packages that was used previously in the web.xml
file.1 2 3 4 5 6 7 8 9 10 11 12 13 | @ApplicationPath( "rest" ) public class RestService extends Application { public RestService( ) {} @Override public Set<Class<?>> getClasses( ) { final Set<Class<?>> returnValue = new HashSet<Class<?>>( ); returnValue.add( Resource.class ); return returnValue; } } |
Class
Resource
implements the REST service and has to be annotated with @Path
on the class level. This is very important. If this annotation is missing, the REST service cannot be accessed.1 2 3 4 5 6 7 8 9 10 11 12 | @Path( "/hello" ) public class Resource { public Resource( ) {} @GET @Produces( "text/html" ) public String printHelloWorld( ) { return "Hello World"; } } |
The URL to access the REST service is
http://localhost:8080/api/rest/hello
, provided that api
is the path under which this project was deployed into the Tomcat container. When you open this URL in a Web browser, you should see the Hello World
message.
original link:
http://peter-braun.org/2013/03/deploying-jersey-resources-on-servlet-3-0-container/
Comments
Post a Comment