La réponse se trouve dans ce poste: http://jersey.576304.n2.nabble.com/extension-custom-negotiation-td3078866.html
Essentiellement, vous configurez un ResourceConfig https://jersey.dev.java.net/nonav/apidocs/1.1.0-ea/jersey/com/sun/jersey/api/core/ResourceConfig.html
Vous avez besoin d'étendre un implémentation de ResourceConfig [1] et remplacer la méthode des mappages de type de média.
Par exemple, vous pouvez effectuer les opérations suivantes:
package foo;
public class MyResourceConfig extends PackagesResourceConfig {
public PackagesResourceConfig(Map<String, Object> props) {
super(props);
}
public Map<String, MediaType> getMediaTypeMappings() {
Map<String, MediaType> m = new HashMap<String, MediaType>();
m.put("json", MediaType.APPLICATION_JSON_TYPE);
m.put("xml", MediaType.APPLICATION_XML_TYPE);
return m;
}
}
et vous pouvez enregistrer votre "MyResourceConfig" comme décrit ici:
https://jersey.dev.java.net/documentation/1.1.0-ea/user-guide.html#d4e115
Dans l'exemple ci-dessus votre web.xml aurait besoin à conteneur:
<web-app>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>foo.MyResourceConfig</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>org.foo.rest;org.bar.rest</param-value>
</init-param>
</servlet>
....
Si vous créez un service Web, par opposition Pour faire face à un service utilisateur, vous pouvez envisager de négocier le type de contenu (@Produces annotation dans JAX-RS). Cela vous laisserait avec un seul uri/texte et le type de contenu sera déclaré dans les en-têtes de requête (c'est plus d'approche RESTful). – Jonas