PQ85054: REMOTE LOOKUP FROM EJB ON SERVER A (PLEX A) TO EJB ON SERVER B (PLEX B) FAILS WITH LDAP 32 UNLESS CACHE IS CLEARED ON SERVER A. | |||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||
![]() APAR status Closed as program error. Error description The remote lookup of an EJB deployed on server B on sysplex B from EJB deployed on local server A on sysplex A fails with the following ldap 32 error unless the jndi cache is set to cleared on server A. In this case the jndi name of the EJB deployed to the remote server (the same jndi name does not exist on the local server) is /company/sample/test/SampleEJBHome . The ldap 32 error seen is . javax.naming.NameNotFoundException: [LDAP: error code 32 - R004026 Entry ibm-wsnName=SampleEJBHome,ibm-wsnName=test,ibm-wsn Name=sample,ibm-wsnName=company,ibm-wsnName=legacyRoot,ibm-wsnNa me=PLEXA,ibm-wsnName=domainRoots,ibm-wsnTree=t1,o=WASNaming,c=US not found in the database. (tdbm_search.c|1.74.3.2|841)]; remaining name 'ibm-wsnName=SampleEJBHome,ibm-wsnName=test,ibm- wsnName=sample,ibm-wsnName=company' . However when the jndi cache is cleared the EJB is looked up successfully on server B. The problem is occurring because the incorrect jndi cache is being returned in this case. The jndi cache returns the initial context for the local system (plexA) and searches for the jndi name in this local tree and gives an ldap 32 since the jndi name does not exist here. When the cache is cleared, there is no initial context returned and the correct remote system (plex B) initial context is found resulting in the EJB being looked up.Local fix Problem summary **************************************************************** * USERS AFFECTED: All users of WebSphere Application Server * * version 4.0.1 for z/OS and OS/390. * **************************************************************** * PROBLEM DESCRIPTION: JNDI lookups with may fail when * * javax.naming.Context.PROVIDER_URL * * property is set. * **************************************************************** * RECOMMENDATION: * **************************************************************** When JNDI caching is enabled, objects are cached in memory but with no relation to the provider URL. Therefore, when obtaining an InitialContext to a remote name server via setting javax.naming.Context.PROVIDER_URL, the cache associated with the Context is for the local name server. Subsequent lookups on this context may fail. For instance if the name is not found the error message issued is: javax.naming.NameNotFoundException: |LDAP: error code 32 at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:2775) at com.sun.jndi.ldap.LdapCtx.processReturnCode (LdapCtx.java:2696) at com.sun.jndi.ldap.LdapCtx.processReturnCode (LdapCtx.java:2502) at com.sun.jndi.ldap.LdapCtx.c_getAttributes(LdapCtx.java:1157)Problem conclusion The default JNDI cache name now contains the provider URL such that requesting a new Context will yield a new cache if none already exist for that provider URL. APAR PQ85054 is associated with SERVICE LEVEL W401610 of WebSphere Application Server version 4.0.1 for z/OS and OS/390.Temporary fix Comments
APAR is sysrouted FROM one or more of the following: APAR is sysrouted TO one or more of the following: Modules/Macros
|
Document Information |
Product categories: Software > Application Servers >
Distributed Application & Web Servers > WebSphere Application
Server for z/OS
Operating system(s):
Software version: 401
Software edition:
Reference #: PQ85054
IBM Group: Software Group
Modified date: Apr 3, 2004
(C) Copyright IBM Corporation 2000, 2006. All Rights Reserved.