hmmm, if there was no 'temp=""' in the constructor then it makes me think you
either stoped Tomcat or did a deploy between tests.  I just ran a quick test
with one of the service methods I'm working on.  I also use scope="Application"
and I couldn't get more than one instance of my service implementation created.

>From the Axis users guide, I found ""Application" scope will create a singleton
shared object to service all requests".  This backs up what I just saw in my
test.

Do you think you might have performed a deploy between your previous test steps?

-james

Quoting "J.W.F. Thirion" <[EMAIL PROTECTED]>:

> Thanks for your advice. I did try moving the temp="" part to the top (static
> initializer) and the same thing happens.
>
> PS: What do you mean by "following the Singleton pattern". I am more from a
> C/C++ background so the terminology is a bit strange to me.
>
> Thanks for the help!
> Derik
>
> -----Original Message-----
> From: James Wilson [mailto:[EMAIL PROTECTED]
> Sent: 04 August 2005 15:15
> To: [email protected]
> Subject: Re: Application scope objects that retain data
>
>
> This is interesting.  I can't speak to the Axis internals.  But what this
> shows
> me is that Axis is creating more than one service implementation class.
> Thus
> there is more than one instance of your Test class instanciated even though
> they will live to service many requests.  This is what I would expect for
> Axis
> to support multiple user-request-threads coming in from the Servlet
> container.
>
> If you move the 'temp=""' line out of the constructor and into a static
> initializer (static String  temp="";) you will get the effect you are
> looking
> for.  But to scale the example, you might want to implement a class
> following
> the Singleton pattern to maintain the application state.
>
> hope it helps,
> james
>
> Quoting "J.W.F. Thirion" <[EMAIL PROTECTED]>:
>
> > 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: [EMAIL PROTECTED]
> >
> >
> >
>
>
>

Reply via email to