You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hivemind.apache.org by Klaas Waslander <K....@nl.tiscali.com> on 2004/05/03 11:54:38 UTC
Having one Registry instance in J2EE apps
Hi,
I want to start using Hivemind for our reusable Java services across multiple projects. It abstracts nicely from specific J2EE mechanisms, and forces an abstract java-interface-only spec of each service.
Question is the following: RegistryBuilder.constructDefaultRegistry rebuilds the registry every time. That is not good if POJO's, servlets and JSPs use that to get service instances all the time.
For JSP/servlet environments there is the HiveMindFilter that provides one registry through a request attribute. That is not good enough, because I want to be able to get the same instance from POJO's as well, that have no knowledge of the servlet request.
My idea is the following:
- have a "HiveRegistry" class of myself, with a static getService method
- this method gets the registry and returns the service from it
- the way it gets the registry can be:
a) static singleton in the same class
b) registry instance from JNDI context, with a startup class registering the instance in JNDI
Option (a) works okay with webapps I think, as each webapp would generally get its own classloader, and as such its own instance in the static variable. Hot (re-)deployment could work then, have to test. Ideas?
Option (b) would mean a servlet context listener that would create the registry, put it in the webapp JNDI context, and the HiveRegistry class simply returning it from JNDI.
I am aiming for option a (naturally), however am not sure if it's the best one. Also am wondering if this can be incorporated in the Hivemind framework itself, instead of having to deal with this myself.
Looking forward to your input!
Regards,
Klaas Waslander
--
Klaas Waslander
Systems Architect
Tiscali NL
website: www.tiscali.nl
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org
Re: Having one Registry instance in J2EE apps
Posted by ac...@streber24.de.
I would suggest to use a combination of a) and b).
Hold the single instance of the registry in a singleton class, but
don't initialize it statically. It's better to provide a static method
'setRegistry' which must be called on system initialization.
In a web application you can initialize the registry from a servlet
(that is loaded on startup) or a context listener and store the registry
instance by calling this method. Look at Case Study #1 for an example
how to do this.
Redeployment (Tomcat) ist working without problems in my case.
Regards
Achim Huegen
Klaas Waslander wrote:
> Hi,
>
> I want to start using Hivemind for our reusable Java services across multiple projects. It abstracts nicely from specific J2EE mechanisms, and forces an abstract java-interface-only spec of each service.
>
> Question is the following: RegistryBuilder.constructDefaultRegistry rebuilds the registry every time. That is not good if POJO's, servlets and JSPs use that to get service instances all the time.
>
> For JSP/servlet environments there is the HiveMindFilter that provides one registry through a request attribute. That is not good enough, because I want to be able to get the same instance from POJO's as well, that have no knowledge of the servlet request.
>
> My idea is the following:
> - have a "HiveRegistry" class of myself, with a static getService method
> - this method gets the registry and returns the service from it
> - the way it gets the registry can be:
> a) static singleton in the same class
> b) registry instance from JNDI context, with a startup class registering the instance in JNDI
>
> Option (a) works okay with webapps I think, as each webapp would generally get its own classloader, and as such its own instance in the static variable. Hot (re-)deployment could work then, have to test. Ideas?
>
> Option (b) would mean a servlet context listener that would create the registry, put it in the webapp JNDI context, and the HiveRegistry class simply returning it from JNDI.
>
> I am aiming for option a (naturally), however am not sure if it's the best one. Also am wondering if this can be incorporated in the Hivemind framework itself, instead of having to deal with this myself.
>
> Looking forward to your input!
>
> Regards,
> Klaas Waslander
>
>
> --
> Klaas Waslander
> Systems Architect
> Tiscali NL
> website: www.tiscali.nl
---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-user-help@jakarta.apache.org