Hi all,
We have an transaction error that has recently appeared consistently: a
stateful session bean (SFSB) has an application error and throws an
exception. The next time the application tries to use the stateful session
bean it gets an error:
tried to enter Stateful bean with different tx context,
contextTx: TransactionImple
< ac, BasicAction: a640128:983:4af49b0f:299 status:
ActionStatus.RUNNING >,
methodTx: TransactionImple
< ac, BasicAction: a640128:983:4af49b0f:348 status:
ActionStatus.RUNNING >
Revewing the ejb literature, I see that if the SFSB throws a SystemException
(eg. EJBException) w, cause the app server will discard the SFSB instance.
Currently the SFSB throws an application exception. This seems like a
straightforward fix.
This code has been in place for a few years, and we've been running jboss
4.2. for a few years. So we're a bit puzzled "why now?"
One change: we have recently upgraded the jdbc drivers (mssql) from to
microsoft's version 1.1 to 2.0. The 1.2-and-later-driver handles
transaction-id's-in-the-jdbc-connection differently than the earlier 1.1
drivers. (The jdbc connection implementation actually keeps a reference to
the current transaction id in the database. After we upgraded the driver, we
saw another problem where bad exception handling kept a stale 'mssql
transaction id' around in the jdbc connection. Properly closing the result
set/stmt/connection upon error solved this jdbc
transaction-id-hanging-around problem).
After reviewing the jboss 4.2.3 code, however, I suspect that the 'jdbc
driver version' change may in not in fact pertain at all to our stateful
session bean problem, i.e. it's a 'red herring',. The
arjuna/user-transaction/statefulsession code does not even touch the jdbc
driver. Unless I missed something
So a few follow-in questions. Can anyone comment/weigh-in/opine/pontificate:
* whether they've seen this issue?
* throwing EJBException's will solve this problem
* comment
* any tips for debugging solving these types of problems?
thanks,
bill
Show replies by date