jsr339-experts@jax-rs-spec.java.net

[jsr339-experts] Re: Binding of ContainerRequestContext to Servlet

From: Marek Potociar <marek.potociar_at_oracle.com>
Date: Fri, 7 Sep 2012 15:36:02 +0200

On Sep 7, 2012, at 3:22 PM, Bill Burke <bburke_at_redhat.com> wrote:

>
>
> On 9/7/2012 7:53 AM, Markus KARG wrote:
>>> -----Original Message-----
>>> From: Sergey Beryozkin [mailto:sberyozkin_at_talend.com]
>>> Sent: Freitag, 7. September 2012 11:37
>>> To: jsr339-experts_at_jax-rs-spec.java.net
>>> Subject: [jsr339-experts] Binding of ContainerRequestContext to Servlet
>>>
>>> The documentation for all the ContainerRequestContext methods to do
>>> with retrieving or setting the properties refers to Servlet
>>> (effectively
>>> HttpServletRequest) attributes.
>>>
>>> getPropertyNames() even returns Enumeration.
>>>
>>> This concerns me a bit. I think if some users are keen to work with
>>> Servlet API in context of JAX-RS then they will expect more than just
>>> the ability to get an access to the underlying Servlet attributes. In
>>> other words, they'd want HTTPServletRequest.
>>>
>>> AFAIK, the whole idea was to be able to exchange properties between the
>>> filters, as such I do not see why Servlet even has to be mentioned, and
>>> the ancient legacy Enumeration interface has to be introduced into the
>>> signature.
>>>
>>> It also may send a message that JAX-RS is some kind of thin wrapper on
>>> top of Servlet API.
>>>
>>> Thoughts ?
>>>
>>> Cheers, Sergey
>>
>> I also think that the JAX-RS API should not be too Servlet API related. If a
>> container is not using Servlet at all (what might become more and more
>> essential in future, when platforms turn from Web Hosting Cluster to
>> Application Clouds), there should be no need for the implementor to provide
>> a Servlet API class. This has some kind of design smell ("We all base on
>> Servlet API, so let's assume this for all others").
>>
>
> I think you're misunderstanding things. There is no requirement on the Servlet API, just that Filter/Interceptor properties are backed by HttpServletRequest in a servlet environment. This makes JAX-RS more seemless integratable.
>
> Maybe a changing of the wording is:
>
> Properties should be backed by any underyling mechanism to associate properties with the http request. So, a JAX-RS container written on top of the Servlet API should have properties backed by HttpServletRequest attributes. This allows JAX-Rs filters and interceptors to seemlessly pass information between JAX-RS and their underlying http implementations.
>

While I don't see any problem with the current wording that merely says that in a Servlet container, the properties are backed by ServletRequest, I can make the change proposed by Bill, if people agree.

> That clear things up?
>
> FYI, similarly, I'm pushing for Configurable.properties to be backed by ServletContext init/context params so you can easily pass config from web.xml into your components.

Can you provide a suggestion for the exact wording change?

Marek

>
>
>
> --
> Bill Burke
> JBoss, a division of Red Hat
> http://bill.burkecentral.com