I am working in Java Web Service with Jersey. I'd like to understand how
could handle the following problem:
Apparently, JAX-RS (JSR
311)<
http://download.oracle.com/otn-pub/jcp/jaxrs-1.1-mrel-eval-oth-JSpec/jax_rs-1_1-mrel-spec.pdf?AuthParam=1355345006_d62ab40be00174f091ae132f0b4d724f>
for
every situation with 406 Status, say that response will have no entity. For
example, in section 3.7.2 Request Matching, Identify the method that will
handle the request:
At least one of the acceptable response entity body media types is a
supported output data format (see section 3.5). If no methods support one
of the acceptable response entity body media types an implementation MUST
generate a WebApplicationException with a not acceptable response (HTTP 406
status) and no entity. The exception MUST be processed as described in
section 3.3.4.
However, RFC 2616 recommends another thing:
10.4.7 406 Not Acceptable
The resource identified by the request is only capable of generating
response entities which have content characteristics not acceptable
according to the accept headers sent in the request.
Unless it was a HEAD request, the response SHOULD include an entity
containing a list of available entity characteristics and location(s) from
which the user or user agent can choose the one most appropriate. The
entity format is specified by the media type given in the Content-Type
header field. Depending upon the format and the capabilities of the user
agent, selection of the most appropriate choice MAY be performed
automatically. However, this specification does not define any standard for
such automatic selection.
Note: HTTP/1.1 servers are allowed to return responses which are
not acceptable according to the accept headers sent in the
request. In some cases, this may even be preferable to sending a
406 response. User agents are encouraged to inspect the headers of
an incoming response to determine if it is acceptable.
So, what should I do for Jersey include an entity containing a list of
available entity characteristics in 406 scenario.
Thanks in advance.
Rodrigo di Lorenzo Lopes