You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "J.W.F. Thirion" <de...@molo.co.za> on 2005/08/04 08:55:37 UTC

Application scope objects that retain data

Hi everyone,

I appologise if this has been asked already, but I would like to know the
following: Is it possible to have a Java class, e.g. Test in my Test.java,
to keep the value of its static variables between calls to the service. E.g.
I have a static variable temp, to which I just add string data and on each
call to getValue the value returned should be the value I passed to the
function concatenated to previous String values. So on the first call, if I
pass "Hello", I would get back "Initial, Hello" and on the second call, if I
pass "there", I would get back "Initial, Hello there", and so on. The object
must thus never go out of scope. I assumed that I needed to set the scope to
application, but that didn't work (I just got back the string "Initial, XXX"
where XXX is what I passed to getValue - thus the constructor was called on
each call). Here is my deploy.wsdd file:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="Test" provider="java:RPC">
        <parameter name="scope"          value="application" />
        <parameter name="className"      value="Test" />
        <parameter name="allowedMethods" value="*" />
    </service>
</deployment>

and here is my class:

public class Test {
    static boolean bInitialised;
    static String  temp;

    public Test() {
	bInitialised = false;
	temp = "";
    }

    public static synchronized boolean isInitialised() {
        return bInitialised;
    }

    public static synchronized void initialise() {
		temp = "Initial, ";
		bInitialised = true;
    }

    public String getValue(String input) {
        if (!Test.isInitialised()) {
		Test.initialise();
        }

	  temp = temp + input;
        return temp;
    }
}

and I have deployed the service with the following:

java org.apache.axis.client.AdminClient deploy.wsdd

Any help would be greatly appreciated.

Kind regards,
J.W.F. Thirion (Dérik)
E-mail: derik@molo.co.za