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>