axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Deepal jayasinghe <deep...@gmail.com>
Subject Re: Please help, pojo "global variable"
Date Wed, 13 May 2009 14:13:35 GMT
Nope, that is not going to work. The reason is MessageContext has very
limited lifetime, and that is only for single execution. So if you want
to share something in one invocation then messageContext is fine, but if
you want to have the "static nature" then you need to store the value in
the ConfigurationContext.

Deepal
> I think i found a way.
> See below.
> Please comment on it.
>
>
> J. Hondius schreef:
>> Hi,
>>
>> Please help.
>> I have a need for a variable that is globally accessible from my
>> service implementation.
>> The normal way to do this in java is using statics AFAIK.
>>
>> I am however painfully aware that i cannot use static variables in
>> axis2.
>> They will be shared across all service instances, and persist after
>> the service call is done.
>> I believe this has to do with the axis2 classloader.
>>
>> I really need to use some globally accessible variable in my service
>> implementation though! How do i go about?
>>
>> My service implementation is a pojo BTW.
>>
>> Greetings from Holland, Joek
>
> Im registring the "global variable" as a property in the messagecontext.
> Access to this "global variable/messagecontect property" is via a
> getter and setter in a obeject that is a static itself.
> Because its a static its acessible from anywhere in the code.
> Testing reveils that the values do not get messed up.
>
> PS a am aware that using globals is not a nice thing.
>
> Example code:
>
> the wrapper class for the get/set access
> ---------------------------------------
> public class GlobalHolder{
>    // staticly instantiate itself
>    public static GlobalHolder globalholder = new GlobalHolder();
>
>    public int getGlobalVar() {
>        MessageContext messageContext =
> MessageContext.getCurrentMessageContext();
>         return (Integer) messageContext.getProperty("globalvar");
>    }
>
>    public int setGlobalVar(int pValue) {
>        MessageContext messageContext =
> MessageContext.getCurrentMessageContext();
>         messageContext.setProperty("globalvar", pValue);
>    }
>   }
>
>
> in the Main class
> -----------------
> public class Mainclass {
>    public Mainclass(){
>         //constructor: make sure the property exists to avoid null
> pointers
>         GlobalHolder.globalholder.setGlobalVar(0);
>    }
>
>    public int myMethod(){
>        // go about getting and setting it everywhere in the code.
>        GlobalHolder.globalholder.setGlobalVar(700);
>        return GlobalHolder.globalholder.getGlobalVar();
>    }
>
> }
>
>
>
>
>
>
>


-- 
Thank you!


http://blogs.deepal.org
http://deepal.org


Mime
View raw message