I am having a bit of a strange problem using JBoss 3.2.3 where the server will hang for a considerable amount of time with the CPU usage sitting at 100% before continuing as normal.
Before I explain the problem, here is an outline of the general control flow of the (web) application:
Struts Form -> Struts Action Class -> Delegate Class -> EJB -> Worker Class -> DAO
The problem is occuring when the Worker Class throws a user defined exception which is caught by the EJB which in turn generates an EJBException to force transaction rollback. The Delegate Class catches this as a RemoteException and rethrows as a (user defined) UnexpectedException. This is caught in the Struts Action Class which then sets the Error field on the Struts Form for display to the end user.
When this happens for the first time, everything seems to work fine as it should and an appropriate error is displayed on the client browser. However, if you repeat the operation, JBoss will hang with the CPU usage sitting at 100% for about 7 minutes.
I have included some DEBUG output displayed on the JBoss console to illustrate this:
10:04:13,880 DEBUG [RequestProcessor] Populating bean properties from this request
10:11:48,974 DEBUG [RequestProcessor] Validating input form properties
10:13:59,193 DEBUG [RequestProcessor] Populating bean properties from this request
10:20:23,083 DEBUG [RequestProcessor] Validating input form properties
I have tried this on Solaris 9, Windows 2000 and Windows XP machines and have had the same problem with all. I have also tried a later version of JBoss (3.2.7) but the problem is still there so I am assuming that it is a problem with the code or configuration.
Any help would be much appreciated.
Managed to get to the bottom of this - it was a bit of a bug in the Struts Form code causing the problem. Ooooooops!