I'm having a design problem with my system, which is not really Struts 
specific, but since there are a lot of EJB users here, I thought I'd 
throw it on this list for comments --

My business logic is all implemented in a Stateful EJB Session bean. All 
Struts users get one instance of the session bean, whose reference is 
stored in the Servlet's Session scope.

All of my Struts actions are simple; they take data from the user 
(usually in ActionForms), pass them to some method in the EJB Session 
bean, and store the results in beans for the JSP page to render.

However, my design calls for a few places where there is a frameset, and 
in another place, where two browser windows open up showing two 
different views. The problem here, is that EJB requires that a Stateful 
Session bean have only one thread of execution within it (e.g. no 
concurrency). So, when two different Struts actions (or custom tags) try 
to invoke a method on the same EJB Session bean reference at the same 
time, one of them will fail with an exception thrown by the EJB 
container (in my case, jBoss).

Can anyone recommend an easy, general-purpose solution to this problem? 
(Please don't say, "switch to stateless session beans"). I suppose I 
need to syncronize access to the EJB bean from the client (and, in this 
case, the client is Struts), but I'm not sure how to do this quickly and 
elegantly.

Comments would be appreciated,

Bryan


Reply via email to