You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by "Y.H." <yh...@gmail.com> on 2008/09/19 11:44:23 UTC

SOS! static variable not work under 2.0.2 !!

Dear sir,
  Whatever using singleton pattern or static variable, Geronimo could not
access correctly like static variable or singleton behavior!

  1. I just used a Class which declaired a public static String STATICDATA.
public class TestClass{
  public static String STATICDATA;
}

 2. a AServlet in AWeb application: TestClass.STATICDATA="abc"; the in
BServlet in AWeb application can get "abc" from TestClass.STATICDATA.

 3. BUT, a CServlet in BWeb application tried to get value from
TestClass.STATICDATA. the result is null

GOD! everything will be ok in WebSphere/Tomcat/WebLog, but just Geronimo
not.

Any help will be appreciated.

-- 
View this message in context: http://www.nabble.com/SOS%21-static-variable-not-work-under-2.0.2-%21%21-tp19569324s134p19569324.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.


Re: SOS! static variable not work under 2.0.2 !!

Posted by David Jencks <da...@yahoo.com>.
On Sep 19, 2008, at 2:44 AM, Y.H. wrote:

>
> Dear sir,
>  Whatever using singleton pattern or static variable, Geronimo could  
> not
> access correctly like static variable or singleton behavior!
>
>  1. I just used a Class which declaired a public static String  
> STATICDATA.
> public class TestClass{
>  public static String STATICDATA;
> }
>
> 2. a AServlet in AWeb application: TestClass.STATICDATA="abc"; the in
> BServlet in AWeb application can get "abc" from TestClass.STATICDATA.
>
> 3. BUT, a CServlet in BWeb application tried to get value from
> TestClass.STATICDATA. the result is null
>
> GOD! everything will be ok in WebSphere/Tomcat/WebLog, but just  
> Geronimo
> not.
>
> Any help will be appreciated.

I'm extremely surprised that this works in any app server other than  
jboss unless you deploy your singleton class to a shared classloader  
such as a "lib" directory of the server.  Use of singletons in javaee  
apps is strongly frowned upon because they are not supposed to work  
between applications -- separate applications are supposed to have  
separate classloaders, resulting in separate copies of the singleton  
class, and the behavior you are seeing.

In geronimo there are a lot of options for getting only one copy of  
the singleton class, if that is what you want:

-- easiest is to make one web application depend on the other one.   
When you deploy AWeb, geronimo will tell you the configID of the  
resulting plugin/module/classloader.  List this as a dependency in the  
geronimo plan for BWeb.
Otherwise you will need to package the singleton class separately from  
the web apps and either:

-- put the jar in shared/lib and include a dependency on the shared  
classloader in each web app (the existence of the shared classloader  
is a nasty hack IMO)
-- put the jar in an appropriate place in the geronimo repository,  
construct a service module depending on this jar, and have each web  
app depend on this service module.  We do this in geronimo in a few  
places for e.g. the javaee specs.

Having one app depend on the other will probably work fine for you.   
BTW, I think you need to make the variable volatile or synchronize  
access to it to avoid problems with thread safety.

thanks
david jencks

>
>
> -- 
> View this message in context: http://www.nabble.com/SOS%21-static-variable-not-work-under-2.0.2-%21%21-tp19569324s134p19569324.html
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>


Re: SOS! static variable not work under 2.0.2 & 2.1.1 !!

Posted by "Y.H." <yh...@gmail.com>.


Y.H. wrote:
> 
> Dear sir,
>   Whatever using singleton pattern or static variable, Geronimo could not
> access correctly like static variable or singleton behavior!
> 
>   1. I just used a Class which declaired a public static String
> STATICDATA.
> public class TestClass{
>   public static String STATICDATA;
> }
> 
>  2. a AServlet in AWeb application: TestClass.STATICDATA="abc"; the in
> BServlet in AWeb application can get "abc" from TestClass.STATICDATA.
> 
>  3. BUT, a CServlet in BWeb application tried to get value from
> TestClass.STATICDATA. the result is null
> 
> GOD! everything will be ok in WebSphere/Tomcat/WebLog, but just Geronimo
> not.
> 
> Any help will be appreciated.
> 
> 

-- 
View this message in context: http://www.nabble.com/SOS%21-static-variable-not-work-under-2.0.2-%21%21-tp19569324s134p19569335.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.