RE: RE: Event Processing at servlet startup..

Jacob Kjome <[email protected]>
Newsgroups gmane.comp.java.enhydra.barracuda.general
Message-ID <[email protected]>
At 08:50 AM 6/17/2003 +0200, you wrote:

>Since each developer is responsible for 1 or more applications, we rely on
>the functionality I added
>to ApplicationAssembler which allow's multiple processing of the assembler
>xml files.
>This way... developers can work in the proverbial little black room and not
>have to worry about/have to wait
>for other developers. Once we deploy to test/production. The latest source
>is obtained from cvs and deployed
>to the correct context dir. Upon servlet startup, the application assembler
>processes everyone's assembler
>files.

Just wanted to note that Barracuda1.2.0 loads multiple application 
assembler files in a non-File IO way but only supports that under servlet 
2.3.  So, if you are using any modern Servlet environment, things should 
work for you in the same way as it did with your previous changes, except 
that it will work in a perfectly servlet-spec compatible way.

Applicable release notes are from...
http://www.barracudamvc.org/Barracuda/docs/changes.html
<quote>
DefaultApplicationAssembler no longer uses File IO to load configuration 
files. This makes Barracuda more inline with the servlet spec which 
provides no guarantee of access to the file system within a webapp. This 
means Barracuda should successfully deploy directly from a .war file. 
Additionally, DefaultApplicationAssembler will now load multiple assembler 
files (under servlet-2.3) given a pattern to match such as 
'/WEB-INF/event-' or '/WEB-INF/event*.xml'.
</quote>

You could also have these all in a directory such as 
/WEB-INF/assemberfiles/ .  Just don't forget to add the trailing slash if 
you do that.


>Now.. to get to your question.
>We have only one servlet for the entire system. It's generic and know's
>nothing about the system.

You mean besides ApplicationGateway?

>All it's know's is to load any config files it finds and does the setting
>up.
>Database pooling, and what ever it finds.
>Now.
>What I'd like to do... is to be able to set static variables based on
>database information.
>
>E.g.
><ACTUAL CODE SNIPPET HERE>
>public static int STATUS_NOT_OPEN;
>public static int STATUS_BUDGETING_ONLY;
>public static int STATUS_BUDGETING_AND_PAYMENTS;
>public static int STATUS_POSTING_ONLY;
>public static int STATUS_FROZEN;
>public static int STATUS_CLOSED;
>
>public static int ACTION_INITIAL;
>public static int ACTION_ADJUSTMENT;
>public static int ACTION_TRANSFER;
>
>
>Remember....
>These variables are set based on a few database tables and their key values.
>Each Application requires this sort of setup.
>
>However, since our servlet know's nothing about any of the applications....
>Up till now... I've had to hack it abit.
>When the very first user log's in. I check to see if the static variables
>are setup.
>If not.. I load them. Each application has a Login_listener which is mapped
>to the login event.
>
>It's not Ideal as far as I'm concerned.
>That's why I'd like to have some sort of startup event fired which notifies
>all applications that
>they can now start processing their own initialization.
>I hope that makes sense.

This is one-time setup, right?  Or is it set up per/user?  If the former, 
then why not use a servlet context listener?  Any setup done in 
contextInitialized() is *guaranteed* by the servlet spec to be available 
before any requests are taken by servlets.  That also separates the setup 
from the rest of your system so the rest of your app need not know anything 
about it except that they will just assume that some other process made the 
resources available.

The object respository assembler should actually be a servlet context 
listener IMO.

Jake
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.