OK Scott, this is much better than the previous answer :).
So I understand the response to my questions is that with an instance
only I have to handle the synchronization by my own and thus the
solution would be:

public class FooService{
        private int counter = 0;        //or declared as AtomicInteger, for 
example


        // maybe more instance variable here

        private synchronized hit() {
                counter++;
        }

        private OMElement fooMethod(OMElement argument) {
                hit();
                
                // business logic here
                return something;
        }
}

Is this what you mean?

Thanks,
Michele (with one 'l' only ;))

Luc, Scott (ISD, IT) wrote:
> Hi Michelle...
> 
> I didn't read all the way through your Q before replying on the intent of 
> your instance variables.
> 
> If you wanted a simple counter.... lock on "this". For more complex state 
> handling... you may look at the Memento pattern which you can lock and update.
> 
> public class FooService {
>       private int counter = 0;
> 
>       private void count() {
>               synchronized(this){
>                       counter++;
>               //...
>               }
>       }
> }
> 
> -----Original Message-----
> From: Michele Mazzucco [mailto:[EMAIL PROTECTED]
> Sent: Monday, June 05, 2006 11:06 AM
> To: [email protected]
> Subject: Re: [Axis2] Stateful services question
> 
> 
> Hi Scott,
> 
> please see my comments inline.
> 
> Luc, Scott (ISD, IT) wrote:
>> Hi Michelle,
>>
>> Unless I'm not right, I think you might be wrong : )
>>
>> Application Scope will create 1 instance...similar to using a singleton 
>> class. 
> 
> Yes, that's right and this is my goal. By creating one instance only,
> together with global (non static) variables, I can maintain the state
> across different client invocations.
> 
> In this case, you should avoid using any stateful instance variables
> outside the method itself.
> 
> This is not clear. Could you be more direct, please? What does it mean
> "outside the method itself"? If you declare variables inside a method
> (i.e. non global) they are destroyed once the method finishes.
> 
>> You might be thinking of "request" level scope in which case a new instance 
>> of the class is created for each request to the web service. 
> 
> Sorry, but I don't understand. Suppose you just want to count the number
> of invocations for a certain method. By using my way it's straightforward:
> 
> 
> public class FooService {
>       private int counter = 0;
> 
>       private void count() {
>               counter++;
>               //...
>       }
> }
> 
> 
> and it works (if the scope is 'application').
> 
> Could you explain me how to get the same result with your proposed solution?
> 
> Thanks,
> Michele
>> Hope this helps..
>> -- Scott
>>
>> -----Original Message-----
>> From: Michele Mazzucco [mailto:[EMAIL PROTECTED]
>> Sent: Monday, June 05, 2006 10:28 AM
>> To: [email protected]
>> Subject: Re: [Axis2] Stateful services question
>>
>>
>> Hi all,
>>
>> If I'm right the application scope allows me to build steteful web
>> services since there is only one service instance. What happens if
>> several invocations happen concurrently? Only one passes through (and
>> all others wait) or several threads run concurrently, possibly changing
>> the service state altogether? If the last option applies, what happens
>> if the state is saved into the service context? Is it synchronized in
>> any way?
>>
>> Thanks in advance,
>> Michele
>>
>> Deepal Jayasinghe wrote:
>>> You have to add a attribute called "scope" into your service element ,
>>> as an example if you want to deploy your service in application scope ,
>>> then you can do that by just changing your service element as follows
>>>   <service name="foo" scope="application">
>>>      .......
>>>    </service>
>>>
>>> Michele Mazzucco wrote:
>>>
>>>> Hi Deepal,
>>>>
>>>> what do you mean as "scope" and how can I configure my service scope?
>>>>
>>>> Thanks,
>>>> Michele
>>>>
>>>> Deepal Jayasinghe wrote:
>>>>  
>>>>
>>>>> Hi Michele;
>>>>> First that depend on the scope that your service going to deploy , lets
>>>>> say your session scope is application then you can store state in
>>>>> service context coz there will be only one service context for that 
>>>>> service.
>>>>>
>>>>> If the scope is SOAPSession then you can get into the same session by
>>>>> sending serviceGroupID , so as loan as clients  send the service group
>>>>> id they can stay in one session, and you can keep state in either
>>>>> service group context or service context.
>>>>>
>>>>> Or else you can store your service state in configuration context , that
>>>>> is not the recommended way but you can still do that.
>>>>>
>>>>> Michele Mazzucco wrote:
>>>>>
>>>>>    
>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> how can I maintain the service state across different client invocations
>>>>>> (other than through  static fields)?
>>>>>>
>>>>>>
>>>>>> Thanks in advance,
>>>>>> Michele
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>      
>>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>>  
>>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>> *************************************************************************
>> This communication, including attachments, is
>> for the exclusive use of addressee and may contain proprietary,
>> confidential and/or privileged information.  If you are not the intended
>> recipient, any use, copying, disclosure, dissemination or distribution is
>> strictly prohibited.  If you are not the intended recipient, please notify
>> the sender immediately by return e-mail, delete this communication and
>> destroy all copies.
>> *************************************************************************
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to