[jboss-user] [JBoss Seam] - best way of using application scope constants?
enzhao
do-not-reply at jboss.com
Wed Jun 27 11:39:30 EDT 2007
In my application there are a lot of application scope values (read most, very seldom update/insert/delete), things like all Zip Codes in a country, names of all agents, etc. They resides in various different tables in the database. I want to _always_ cache them in the memory, once and for all, so that other stateful beans can use these values without creating new instances of these data wrapper class. For example,
| @Stateful
| @Name("fooAction")
| @Scope(CONVERSATION)
| public class FooAction implements Serializable, Foo{
|
| //here i want to load the in-memory data like all zipcodes....
| private SomeBean applicationScopeValues;
| .....
|
| }
|
|
What is the best way?
If I use bijection, I would need to create a stateful bean (or stateless, if the data is 100% read-only), annotate the application scope, and then in this bean, do things like:
|
| @Stateful
| @Scope(APPLICATION)
| @Name("dataStore")
| public class DataStoreImpl implements Serializable, DataStore{
|
| //how do I get reference of this list from other action beans if I use
| // use the @Out here?
| private List<Zipcode> allZipcodes;
|
| @Create
| public void findAllZipcodes(){
| String query ="select z from Zipcode z";
| this.allZipcodes = entityManager.createQuery(query).getResultList();
| }
|
| //getters and setters
| }
|
|
Then in the FooAction class, I would need to do:
| @In(create=true) private DataStore dataStore;
|
Am I doing right this way? Can I avoid creating multiple instances of the DataStore this way?
Any better options? Thanks very much in advance!!
Regards,
Ellen
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4058257#4058257
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4058257
More information about the jboss-user
mailing list