Changement de type de contenu de jax-rs service REST

Pardonnez-moi, mais j'ai peut-être pas familier avec tout le jargon nécessaire de poser cette question correctement.

Je suis en train de travailler sur un assez simple service web REST en Java à l'aide de la org.apache.cxf.jaxrs.ext mise en œuvre de jax-rs. La méthode d'en-tête est comme ceci:

@GET
@Path("json/{fullAlias}")
@Produces({"application/json"})
public String json(@PathParam("fullAlias") String fullAlias, @Context MessageContext req)

où MessageContext est org.apache.cxf.jaxrs.ext.MessageContext.

Il y a deux choses que je suis en train de réaliser que je n'arrive pas à comprendre:

  1. Modifier le type de contenu si certaines conditions sont remplies (par exemple, pour une erreur)
  2. Modifier le code d'état de la réponse

J'ai essayé d'utiliser la modification de la réponse en y accédant par le MessageContext:

HttpServletResponse response = req.getHttpServletResponse();
response.setContentType("text/plain")
response.setStatus("HttpServletResponse.SC_BAD_REQUEST);

Mais ces changements n'ont aucune incidence sur la réponse envoyée; avec ou sans le @Produit de l'annotation, le réglage du type de contenu à l'intérieur de la méthode n'affecte pas le contenu réel de type (Avec l'annotation, il retourne "application/json", sans valeur par défaut est "text/html").

Je suis de retour d'une simple Chaîne de caractères comme le corps. Je me suis amusé à essayer de revenir un javax.ws.rs.de base.Réponse de l'objet pour en faire ce que je veux, mais je ne sais pas beaucoup sur elle.

Comment puis-je modifier le type de contenu et/ou les codes d'état de l'intérieur de cette méthode?

OriginalL'auteur Indigenuity | 2011-04-05