Mantis - Resin
Viewing Issue Advanced Details
5766 block always 07-03-14 02:52 11-07-14 15:58
ssrikanth  
ferg  
normal  
closed 4.0.33  
no change required  
none    
none  
0005766: Resin 4.0.33 and Web Logic 10.3.0 Compatibility issue
Resin 4.0.33 and Weblogic compatibility issue:
License number 1015606
License to – NMSWorks Software Pvt. Ltd
Resin Version – Resin 4.0.33
Operating System – AIX 6.3

We are facing compatibility issue with Resin 4.0.33 and Weblogic 10.3.0 in the user transaction commit context. The exception we get at Weblogic side is as below.

" javax.transaction.SystemException: Could not contact coordinator at mslv02+10.5.177.159:8004+m62domain+t3+" from the weblogicfullclient generated from the server and given to us.
 
Please support in understanding any Enterprise Bean compatibility issue between Resin 4.0.33 and Web Logic version: 10.3.0, specific to TRANSACTION. The details are explained below.

Requirement:
In transaction mode, save the set of db operation and commit.
Note: The exercise was done both cluster mode Web Logic server and standalone mode and got the same exception.

What does the code do:
 
1. The Local application CygNet deployed in Resin 4.0.33 with IBM JDK.
 
2. The functional module will take a set of data to be dated/added/deleted in the database via EJB call provided by application Oracle Metasolv deployed on Weblogic server and the version details are mentioned below.
 
3. To make the DB operation javax implementation of User transaction is used and the flow is as below.
 
 
- Get the InitialContext() for the weblogic server security credentials and URI(use t3 protocol).
- Get the connection using jndiTemplate.
- Start the Transaction.
- Do the Update operation using the provided API.
- Commit the transaction.
- Close the connection.
- In case Exception, Rollback the transaction.

The code snippet to understand the implementation is mentioned in additional information.
 
Context: <bean id="m6JndiTemplate"
class="org.springframework.jndi.JndiTemplate"> <property
name="environment"> <props> <prop
key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</pro p>
<prop key="java.naming.provider.url">#{'t3://' [^] +
                 m6Config.getProperty('IP_ADDRESS') + ':' +
       m6Config.getProperty('PORT')}</prop> <prop
key="WLContext.ENABLE_SERVER_AFFINITY"></prop>
</props> </property> </bean>

<bean id="userTransaction"
class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFaco
ryBean"> <property name="jndiName"
value="javax.transaction.UserTransaction" /> <property
name="jndiTemplate" ref="m6JndiTemplate" />
<property name="businessInterface"
value="javax.transaction.UserTransaction" /> </bean>


Note: We used "weblogic.transaction.UserTransaction” which is same as javax implementation.

Code:
userTransaction.setTransactionTimeout(3600);
userTransaction.begin();

try{
  for(UpdateElement e:listOfElement){
    write(e);
  } userTransaction.commit();
}catch (Exception e) {
userTransaction.rollback();
}
 
4. The above worked perfectly without any problem while we deployed in the
"deployment scenario:1" but not in deployment scenario:2 mentioned below.
 
"deploymentscenario:1":Compatible and working
 
1. Resin 4.0.33 ( Local server)
 
2. Weblogic version: 8.1.5 (Local Client and remote server)
 
3. IBM jdk 1.6.0 (SR5),J2RE.
 
4. Oracle database 10.2.0.5.0 g 5. Spring 3.1.4
 
"deployment scenario:2": Not working Later some point of time,the weblogic server was upgraded to newer version and application to have
Security principal details.
 
1. Resin 4.0.33 ( Local server)
 
2. Weblogic version: 10.3.0
 
3. IBM jdk 1.6.0 (SR5),J2RE.
 
4. Oracle database 11.2.0.3.0 db11g
 
5. Spring 3.1.4 Now the application is throwing the exception while we "Commit the transaction" "
javax.transaction.SystemException: Could not contact coordinator at
mslv02+10.5.177.159:8004+m62domain+t3+" from the weblogicfullclient
generated from the server and given to us.

Notes
(0006563)
ferg   
11-07-14 15:58   
This does not look like a Resin issue at all.

In this configuration, spring is configuring a weblogic client, and the application is using the weblogic client and UserTransaction. Resin is only acting as a servlet engine. It is not involved in the transaction at all.

You may want to double check that neither the application nor spring is using Resin's own UserTransaction, although that doesn't appear to be the issue from the config here.