A matter of memory 2003-10-28 - By Kalra, Ashwani
Back >conversition states. There is a statemachine in the >EJBController,
from your code , it looks otherway ?
/Ashwani
>-- --Original Message-- -- >From: peng wang [mailto:wp0@(protected)] >Sent: Monday, October 27, 2003 8:04 PM >To: J2EEPATTERNS-INTEREST@(protected) >Subject: A matter of memory > > >Hi All, > >I'v adopted the Petstore EJBController pattern for our >application. >I make a little modification that I change >EJBController from >stateful session bean to stateless due to no need for >us to maintain
>the statemachine has a hashmap used to cache Actions >which are >event handlers. Because EJBController is now >stateless, it instances >will be pooled and in primary memory. Since each >statemachine caches >a different set of Actions, I'm concerning if the >Actions objects will >cause the memory problem.(We have about 40 Actions. >And the user number >of EJBController online will be very large.) > >public class StateMachine implements >java.io.Serializable { > > private EJBControllerLocalEJB ccejb; > private HashMap attributeMap; > private HashMap actionMap; > private SessionContext sc; > > public StateMachine(EJBControllerLocalEJB ccejb, >SessionContext sc) { > this.ccejb = ccejb; > this.sc = sc; > attributeMap = new HashMap(); > actionMap = new HashMap(); > } > > public EventResponse processEvent(Event ev) throws >EventException { > String actionName = >ev.getEJBActionClassName(); > EventResponse response = null; > if (actionName != null) { > EJBAction action = null; > try { > if (actionMap.get(actionName) != >null) { > action = >(EJBAction)actionMap.get(actionName); > } else { > action = >(EJBAction)Class.forName(actionName).newInstance(); > // ********** caching here >************ > actionMap.put(actionName, >action); > } > } catch (Exception ex) { > System.err.println("StateMachine: >error loading " + actionName + " :" + ex); > } > if (action != null) { > action.init(this); > // do the magic > action.doStart(); > response = action.perform(ev); > action.doEnd(); > } > } > return response; > } >... >} > >I have thought of making the Actions class as light as >possible that the Actions call other >stateless EJBs to do services. Does an alternative >strategy needed here, such as implementing >all Actions as Singleton? > >Thanks a lot, > >wp > > >__ ____ ____ ____ ____ ____ ______ >Do you Yahoo!? >Exclusive Video Premiere - Britney Spears >http://launch.yahoo.com/promos/britneyspears/ > >==================================================================== >Companion Site: http://www.corej2eepatterns.com >J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns >List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
__ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ This message contains information that may be privileged or confidential and is the property of the Cap Gemini Ernst & Young Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorised to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.
==================================================================== Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
|
|