Handling multiple resource connections in Websphere Application Server

 I have been working on migrating a EJB2 application from Websphere 6.1 to Websphere 7 and upon application startup, I got some strange looking error messages:

WTRN0063E: An illegal attempt to enlist a one phase capable resource with existing two phase capable resources
has occurred.

Right after getting this message, the application fails with a “CSITransactionRolledbackException” causing all my commited transactions to be rolled back (JMS&DB). This article by IBM, suggests the problem might be multiple resources failing to reuse a connection according to the get/use/close pattern. The exception is thown in a MDB that serially receives a JMS message, creates a connection to database and finally trying to send a response message. Oddly as it is, it’s only the last operation that fails. The MDB receives a message, opens and handles a connection to the DB and it even returns an object. Opening a new JMS connection returnes the beautiful WTRN0063E message, having to JMS connections and a database connection. What exactly happend here anyway?

A quick solution I found is by activating “Last participant support extension” and turning on “Accept heuristic hazard” on the application experiencing the problem. By doing this, I found that my application managed to handle tree connections, including getting a JMS message, gather objects from some database and finally returning the objects in a new JMS message.

This entry was posted in Java and tagged . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>