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.