|
Problem |
Using WebSphere® Application Server V4, JNDI lookup failed
with the following exception (excerpt of the stack trace):
[1/13/03 17:09:47:238 GMT] 6e41b5 Helpers W NMSV0610I: A NamingException
is being thrown from a javax.naming.Context implementation. Details
follow:
Context implementation: com.ibm.ejs.ns.jndi.CNContextImpl
Context method: lookup
Context name: domainRoots/UnspecifiedDomainName/legacyRoot
Target name: jdbc/WCO DataSource e_wcs
Other data:
Exception stack trace: javax.naming.NamingException: Error during resolve.
Root exception is org.omg.CORBA.TRANSACTION_ROLLEDBACK: minor code: 0
completed: No
at
com.ibm.ejs.jts.jts.JBrokerSupport$RI.client_unmarshalled_request(JBrokerSupport.java:405)
at com.ibm.CORBA.iiop.RIs.iterateClientRequestPreRIs(RIs.java:168)
at
com.ibm.CORBA.iiop.ClientRequestImpl.reInvoke(ClientRequestImpl.java:851)
at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:894)
at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:409)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:454)
at
com.ibm.WsnOptimizedNaming._NamingContextStub.resolve_complete_info(_NamingContextStub.java:260)
at com.ibm.ejs.ns.jndi.CNContextImpl.cosResolve(CNContextImpl.java:2983)
at com.ibm.ejs.ns.jndi.CNContextImpl.doLookup(CNContextImpl.java:1435)
at com.ibm.ejs.ns.jndi.CNContextImpl.lookup(CNContextImpl.java:1121)
at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:128)
at javax.naming.InitialContext.lookup(InitialContext.java:345)
|
|
Solution |
Explanation:
With WebSphere's current naming implementation, a JNDI call to the
Administration Server (AdminServer) is done within the context of a
current transaction unintentionally. This could cause problems in some
situations, for example:
- Application defines a 1 phase commit resource. After the transaction
begins, the application may get the following warning message on the
administration console: "warning: Illegal use of 1 phase resource in
transaction, 2 phase commit was attempted with 1 phase resource" if a JNDI
call to Administration Server was made within the current transaction. The
reason for this is that the involvement of the AdminServer, which is
treated as a second server, forces the current transaction to be a 2 phase
commit transaction.
- After a TRANSACTION_ROLLEDBACK exception was thrown, a JNDI call to
AdminServer will cause another TRANSACTION_ROLLEDBACK exception because
the JNDI call was unintentionally performed in a rolled back
transaction.
Solution:
To fix the problem, WebSphere's naming implementation will suspend the
current transaction before a JNDI call to the AdminServer and resume the
transaction after the JNDI call is made. This fix is implemented in
WebSphere Application Server version 3.5.7 and 4.0.5.
For WebSphere Application Server versions 3.5.6 (or prior to 3.5.6) and
WebSphere Application Server Release 4.0.4 (or prior to 4.0.4), obtain the
eFix PQ65485
from the WebSphere support website and apply it. |
|
|
|
|
|
|