axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thilina Gunarathne (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-1224) setOperationContext() not thread-safe
Date Thu, 05 Oct 2006 10:00:21 GMT
    [ http://issues.apache.org/jira/browse/AXIS2-1224?page=comments#action_12440096 ] 
            
Thilina Gunarathne commented on AXIS2-1224:
-------------------------------------------

Any reasons why do we need to have one instance of the service impl class throughout the service
life...  

IMO anybody can store whatever the state data needed through out the life of the service,
in the ServiceContext...
Are there any special cases where we can't do that..  If there aren't any reasons let's create
the service object per invocation , as we are doing in other cases....



> setOperationContext() not thread-safe
> -------------------------------------
>
>                 Key: AXIS2-1224
>                 URL: http://issues.apache.org/jira/browse/AXIS2-1224
>             Project: Apache Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: core, deployment
>    Affects Versions: 1.1
>            Reporter: Christopher Sahnwaldt
>         Assigned To: Deepal Jayasinghe
>            Priority: Blocker
>
> If a service has application scope, one service object is created per application.
> When a request comes in, Axis calls the setOperationContext method, and the 
> service object may store the OperationContext or the MessageContext. Then Axis 
> calls the actual service method, in which the service code can access the stored
> OperationContext or MessageContext. But what if two requests come
> in almost simultaneously? The following sequence of method calls may occur:
> - Axis calls setOperationContext with context for request A, the service object 
>   stores the context in an instance field.
> - Axis calls setOperationContext with context for request B, the same service object

>   stores the context in the same instance field and  thus *overwrites* the context for
call A.
> - Axis calls the service method with the input parameters for request A.
> - The service method processes the call, using data from the stored
>   context, and thus *mixes the input parameters for call A with the
>   context data for call B*. Anything can happen...
> - Finally, Axis calls the service method with the input parameters  for call B, the service

>   method processes the call, using data from the stored context, and thus correctly uses

>   the input parameters  for call B with the context data for call B. Probably ok, unless

>   the service method updated the context in some way during the call for request A.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message