Java has options for implementing and publishing RESTful web services. On the publishing side, the choices range from very basic, command-line servers that are well suited for development, testing, and even low-volume production; through lightweight, Java-centric web servers such as Tomcat and Jetty; and up to full-blown Java Application Servers (JAS) such as GlassFish, JBoss, Oracle WebLogic, and WebSphere. This chapter introduces publication options in the first two categories, and Chapter 7 covers JAS publication.
There is also variety among the APIs and their implementations for RESTful services. Here is the list of APIs covered in this chapter:
HttpServlet
and JSP APIs, introduced briefly in Chapter 1 and examined more thoroughly in this chapter
@WebServiceProvider
interface in particular
For the most part, the API used to implement the web service does not constrain how this service can be published. The exception is the servlet API, as servlets need to be deployed in a servlet container such as Tomcat’s Catalina or Jetty. (Jetty is the name of both the web server and its servlet container.) There are shortcuts for publishing JAX-RS and JAX-WS services but these, too, can be published with Tomcat or Jetty; the same goes for Restlet services.
The decision about how to publish a service depends on many
factors. For example, if service deployment requires wire-level security in the form of HTTPS together with
user authentication/authorization, then a web server such as Tomcat or Jetty is the obvious starting point. If the published
web services are to interact with EJBs, which are deployed in an EJB container, then a souped-up web server such as TomEE (Tomcat
with EE support) or a full JAS is a better choice. In development, simpler command-line options such as Endpoint
, introduced
later, are attractive.