users@jersey.java.net

Re: [Jersey] Accessing HttpSession from a ContainerRequestFilter

From: Erdinc Yilmazel <erdinc_at_yilmazel.com>
Date: Mon, 25 Jan 2010 11:18:17 +0000

Paul I think I got something wrong,

I have a ResourceFilterFactory which returns a list of ResourceFilter
instances on its create method. In this method I am returning only one
instance of ResourceFilter.

The following method is called by Jersey, only once during the application
startup.

   public List<ResourceFilter> create(AbstractMethod am) {
      LoginRequired lr = am.getAnnotation(LoginRequired.class);
      if (lr == null) {
         lr = am.getResource().getAnnotation(LoginRequired.class);
         if (lr == null) {
            return null;
         }
      }

      final LoginResourceFilter filter = new LoginResourceFilter();

      return new ArrayList<ResourceFilter>() {{
         add(filter);
      }};
   }

The actual resource filter is something like this:

public class LoginResourceFilter implements ResourceFilter,
ContainerRequestFilter {
   public ContainerRequestFilter getRequestFilter() {
      return this;
   }

   public ContainerResponseFilter getResponseFilter() {
      // Not Supported
      return null;
   }

   public ContainerRequest filter(ContainerRequest req) {
        return req;
   }
}

Where in this class can I inject HttpServletRequest? Since this is a single
instance, injecting it as a class property will not work. I need it injected
in the filter method, or I need to find a way to use a new instance of my
ResourceFilter in every request.


Erdinc

On Mon, Jan 25, 2010 at 11:00 AM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:

>
> On Jan 25, 2010, at 2:09 AM, Erdinc Yilmazel wrote:
>
> How can I access the HttpSession from a ContainerRequestFilter
>> implementation? Or at least properties within the session?
>>
>>
> Inject HttpServletRequest:
>
> @Context HttpServletRequest hsr;
>
> and get the session from that.
>
> Paul.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
>