cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: Thread Safety
Date Tue, 25 Aug 2009 13:28:41 GMT
Yes, that is safe.

The injected WebServiceContext is a wrapper around a ThreadLocal so any 
modifications and stuff to it are affecting the current thread/request only.

Dan


On Tue August 25 2009 8:38:27 am Nicola D'Elia wrote:
> Hi,
> i have a similar question.
>
> I have a spring bean exposed as web service: it is a singleton and gets the
> context injected to work with the http session:
>
> ...
>     @Resource
>     private WebServiceContext context;
>
>     public String login(String username) {
>         String challenge = auth.login(username);
>         if (challenge != null) {
>              ((HttpServletRequest)
> context.getMessageContext().get(HTTP_REQUEST)).getSession().setAttribute(US
>ERNAME, username);
> ...
>
>
> Is it safe or i should turn the bean into a prototype ?
>
>
>
> Thanks,
> Nicola
>
> On Fri, Aug 21, 2009 at 3:00 PM, Sergey Beryozkin 
<sberyozk@progress.com>wrote:
> > Hi
> >
> > I thought you were asking about fileds like
> >
> > @Context
> > private HttpHeaders headers;
> >
> > such fields are indeed thred-safe even with singleton resource classes,
> > it is thread-safe proxies which are injected in such cases.
> >
> > Now, as far as supporting Spring prototypes is concerned I haven't got to
> > fixing this JIRA yet :
> >
> > http://issues.apache.org/jira/browse/CXF-2197
> >
> > You might want to try using CXFNonSpringJaxrsServlet and set a
> > jaxrs.scope parameter to 'prototype' or register a JAXRS Application impl
> > - that is the only way at the moment to work with prototypes
> > (programmatic config is supported too)
> >
> > cheers, Sergey
> >
> > ----- Original Message ----- From: "Nathaniel Auvil" <
> > nathaniel.auvil@gmail.com>
> > To: <users@cxf.apache.org>
> > Sent: Friday, August 21, 2009 1:15 PM
> > Subject: Re: Thread Safety
> >
> >
> >
> >  I thought a singleton was not threadsafe by default, such as a Java
> >
> >> Servlet?  I did a more thorough reading of the CXF docs and saw the
> >> Spring configured Resource classes are Singletons and not Prototype
> >> Beans.  So in other words, each request will share the same instance of
> >> my
> >> AccountService
> >> Resource class.  If i have a member variable: private Account account,
> >> this
> >> will be shared by all requests and get overwritten by each request.
> >>  Right?
> >>
> >>
> >>
> >>
> >> On Fri, Aug 21, 2009 at 6:19 AM, Sergey Beryozkin <sberyozk@progress.com
> >>
> >> >wrote:
> >>
> >>  Hi
> >>
> >>> ----- Original Message ----- From: "Nathaniel Auvil" <
> >>> nathaniel.auvil@gmail.com>
> >>> To: <users@cxf.apache.org>
> >>> Sent: Thursday, August 20, 2009 6:18 PM
> >>> Subject: Thread Safety
> >>>
> >>>
> >>>
> >>>  I am implementing JAX-RS web service with CXF and i want to confirm my
> >>>
> >>>> Resource classes are thread safe.  i am thinking they are as the
> >>>> examples
> >>>> show member variables holding various contexts and the like and no
> >>>> where down the chain does the "AbstractService" extend java servlet.

> >>>> Can someone
> >>>> in the know please confirm?
> >>>>
> >>>>
> >>>>  All the fields containing injected contexts are thread safe, when
> >>>
> >>> resource
> >>> classes are singletons, so yes resource classes are thread safe.
> >>>
> >>>  and no where down the chain does the "AbstractService" extend java
> >>>
> >>>> servlet.
> >>>
> >>> Can you clarify please what you meant to say ?
> >>>
> >>> thanks, Sergey

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

Mime
View raw message