javax.ws.rs.core.Application ableitet und mit @ApplicationPath annotiert:package com.muchsoft.rest;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/rest")
public class ApplicationWithRESTWebServices
extends Application {
}
D.h. dass man nun REST-Web-Services anbieten kann, ohne sich um die konkrete Implementierung – beispielsweise Jersey als Referenz-Implementation – kümmern zu müssen. Gut.
Was aber, wenn man doch gewisse produktspezifische Features nutzen möchte, wie beispielsweise ausführliches Trace-Logging bei Jersey? Dann greift man auf den Deployment-Deskriptor
web.xml zurück und mappt dort ein Servlet mit den entsprechenden Init-Parametern. Allerdings muss das nicht eine Jersey-Klasse (mit entsprechendem servlet-mapping) sein, sondern es reicht, die eigene Application-Unterklasse als Servlet einzutragen (ohne servlet-mapping-Element):
<servlet>
<servlet-name>
com.muchsoft.rest.ApplicationWithRESTWebServices
</servlet-name>
<init-param>
<param-name>
com.sun.jersey.api.json.POJOMappingFeature
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
com.sun.jersey.config.feature.Trace
</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
