PQ47681: THIS APAR ADDRESSES DEFECTS IN WEBSPHERE APPLICATION SERVER V4.0 FOR Z/OS AND OS/390.

 A fix may be available

Obtain the fix for this APAR



APAR status
Closed as program error.

Error description
This APAR addresses defects in WebSphere Application Server
V4.0 for z/OS and OS/390.
Local fix Problem summary
****************************************************************
* USERS AFFECTED: All users of WebSphere Application Server    *
*                 V4.0 for z/OS and OS/390.                    *
****************************************************************
* PROBLEM DESCRIPTION: APAR PQ47681 addresses various          *
*                      problems in WebSphere Application       *
*                      Server V4.0 for z/OS and OS/390.        *
****************************************************************
* RECOMMENDATION:                                              *
****************************************************************
APAR PQ47681 addresses the following
problems in WebSphere Application Server
V4.0 for z/OS and OS/390:

A serviceabiltiy improvement is needed for minor code
C9C2579F. This should be accomplished by creating minor code
C9C25790 for cases where the CORBA::UNKNOWN is used to carry
a java.rmi.RemoteException or subclass back to a client.  Also
the serviceability of errors relating to minor code C9C257C7
should be improved by printing the Java stack trace of the
original exception to the server's SYSOUT.

Stateful session beans that hold references to home or remote
interfaces can not be passivated. Clients will receive a
java.rmi.NoSuchObject exception when this error occurs. In
addition the server log will show a java.io.Serialization
exception.

Bind failures in the form of javax.naming.NameNotFoundException
exceptions can occur during the installation processing of
a bean which had env values defined on it. These values are
name/value pairs and need to be placed into the java: ns
(namespace) of the bean in question. If the name portion
contained multiple contexts (ie: 'myenvs/env1') the add to
java: ns can fail due to the fact that 'myenvs' did not exist
in the ns. Support is needed to dynamically create any portion
of a name which doesn't already exist in the ns, thus allowing
the install of the bean in question to succeed.

Exception Message:
RemoteException occurred in server thread;
nested exception  java.rmi.RemoteException: CORBA OBJ_ADAPTER
1229123630 No; nested exception is  org.omg.CORBA.OBJ_ADAPTER:
minor code: 4942F02E  completed: No

can occur because context.close method nulls static variable
which contains value required by other contexts.

ABENDS306 ABEND306 received when trying to load BBORSMCT from
a WebSphere V4.0 servlet. The requirement for adding BBORSMCT
to LPA or linklist for WebServer V4.0 servlets and other client
environments should be removed since it is not required.

PortableRemoteObject.narrow() called with the wrong target
class, when driven on a local-mode Stub, results in a
NullPointerException instead of ClassCastException as per CORBA
specification.

An ABEND0C4 ABENDS0C4 in the EncapIIOP constructor in
bboceiop.cpp in BBOBOA when running
resolve_initial_references on a thread which has not done
ORB_init. The resolve_initial_references service can try to
use comm to go outbound.  Comm requires a thread level buffer
to use for its message.  The anchor for this buffer is created
by ORB_init. Therefore, ORB_init must be run on each thread.
When using resolve_initial_references from the Java client,
the Pseudo Orb may do the ORB_init for you, but would not do
it if it had already been done in this process.  This would
cause the ORB_init to be skipped on a new thread resulting in
the ABEND0C4.

The size of the CSA resident BBODBGVT changed from WebSphere
Application Server Enterprise Edition OS/390 Component Broker
Version 3.02 to WebSphere Application Server V4.0 for z/OS and
OS/390. During Daemon startup WebSphere V4.0 will recognize
the bgvt found in CSA from a previous WebSphere Application
Server Enterprise Edition OS/390 Component Broker Version 3.02
Daemon instance is not valid for WebSphere V4.0 and tries to
release the old bgvt before obtaining a new one. The length
used to do the release is the length associated with a
WebSphere V4.0 length rather than the length appropriate to
the version of the control block. Since the bgvt got bigger,
more storage is released than was obtained for the old version
and the Daemon abends with ABENDU4087 RC=0.

Home Handles can receive exception:
java.rmi.NoSuchObjectException: Could not find home in JNDI
when being used to re-create a home reference. This is due to
an error during the creation of a Home Handle instance. The
jndi name that is used to look up the actual home reference
when the handle is utilized was formed incorrectly, hence the
'NameNotFound' exception.

During bootstrap phase 1, the import conversation
step fails with SQLCODE -302. This is because a host variable
hServerIOR has not been initialized in bbomid10.prepcpp.

When a thread is attached to the JVM, a ClassLoader may not be
set on the thread.  If there is no ClassLoader, during the
initialization of the new Context, a
"java.lang.NoClassDefFoundError"
Exception may be thrown.
This occurs because the JVM does not automatically set up a
ContextClassLoader on a "Parent Thread".  Any Parent Thread
created in native code that gets a ContextClassLoader and
spawns a Child Thread that also gets attached to the JVM is
NOT considered a Child thread, but is considered to be a
Parent Thread and therefore no ContextClassLoader is
assigned to that thread.

When defining a server instance through the SM Scripting
without explicitly setting parameter configportnumber a wrong
default of 9000 is taken. If this is done for more than one
server instance, the server instances will fail during startup
with error message  "BBOU0606E Socket bind() for Server=XXXXX
to Port=9000 failed with RV=-1, RC=1115, RSN=744C7247,
EDC8115I Address already in use..."

An EJB application server can hang because of a storage leak.
A storage leak exists in an application server because the
Java OutputStream object containing the marshalled result
is leaked, by never releasing the local (native) reference
that bbooejsb.cpp holds. The size of the storage leak is the
size of returned marshalled result. The storage leak prevents
Java garbage collection from reclaiming the storage causing an
out of memory condition to occur.

ORB support for the OTS Path Sensitive Branch Repository (PSBR)
is not setting the WLM Temporal Affinity Token into the
Repository. For RAS reasons, branches of the same transactions
should be isolated to the same SR within each Server. This aids
in diagnosis as well as isolating the disruption involved in
recovering from a transaction failure (for example a time out).
If the transaction is allowed to be spread across
multiple SRs (within the same Server), then work from other
transactions will most likely be adversely impacted by the
cleanup to the failing transaction.

A hang in an application control region can result from a
deadlock between threads performing transaction cleanup.
On thread 1 a "rollback" request from another Server involved
in a distributed transaction was under dispatch.  In OTS code,
it was determined that ORB needed to be called to cleanup any
outstanding Requests
(BBO_BOA::TransactionTimedOut(MVS::GTID_ptr)).  Still under
thread 1, we enter the ORBR Registry code (bbooorrg.cpp) to find
and respond to client requests that have timed out.  In this
ORBR Registry code ORB gets locks on the ORBR Registry table
prior to driving comm_outbound_response (bboocomm.cpp) with a
SystemException (bboosyse.cpp) to indicate the transaction
timeout.

Before the comm_outbound_response code could run, on thread 1,
over on thread 2, a SnoozerAlarm (bbootmsa.cpp) on this Server
pops for transaction timed out (the same transaction).  The
dispatched Snoozer exit, an OTS exit, obtains OTS transaction
locks and drives the same ORB method to cleanup any outstanding
Requests for the transaction.  This thread, thread 2, attempts
to obtain ORBR Registry locks to find any Requests to cleanup.
Thread 2 is blocked by thread 1, which is currently holding the
ORBR Registry locks.

Thread 1 now enters the comm_outbound_response.  This code
invokes the OTS interceptor sending_reply.  The code under
sending_reply attempts to get the OTS Transaction locks and is
blocked by thread 2.

Thus, the deadlock.  Thread 1 is holding ORBR Registry locks and
is waiting for the OTS Transaction locks held by thread 2 and
thread 2 is holding the OTS Transaction locks is waiting for the
ORBR Registry locks held by thread 1.

In module bbomsbo3.cpp method DefineSystem raises segmentation
violation because new server instance properties (configured
port number, SSL Fire wall port number, HTTP Listener port
number, and HTTPS listener port number)have not been added to
the properties array.
Problem conclusion
CORBA::UNKNOWN C9C25790 has been added for carrying
java.rmi.RemoteException and subclasses back to a client.
Java stack trace is now printed for original exception when
C9C2579F and C9C257C7 is returned to client.

Container code has been changed to allow stateful session beans
that hold references to home or remote interfaces to be
passivated.

Support has been added to dynamically create any portion of a
name which doesn't already exist in the namespace (ns), thus
allowing the install of the bean in question to succeed.

context.close has been modifed to no longer clear static field.

Support has been added to not load BBORSMCT when running under a
client environment.

PortableRemoteObject.narrow()has been modified to return with
ClassCastException when incorrect class passed as parameter.

The code prevents the ORB_init from being done if it had already
been done on a process that has been removed. ORB_init has been
changed to determine determine if any processing needs to be
done for a new thread even if the ORB has already been
initialized in the process.

Module bbodbgvt.plx has been changed to specify a length
appropriate to the indicated version of the control block when
releasing the bgvt.

Home Handle support has been modified to correctly
derive the jndi name needed to look up the home reference out
of jndi.

Module bbomid10.prepcpp has been modified to correctly
initialize host variable hServerIOR.

Code has been added in product parts bbolrt.cpp, bbolss.cpp and
StubServices.java, to ensure that a ClassLoader is currently set
when the thread is attached to the JVM (Child or Parent).
The check will see if there is already a ClassLoader set on the
thread, and if not, it will set one, and continue processing.

The default for parameter configportnumber has been changed to
0, this will disable this feature unless set explicitly by a
customer rexx script to a unique value.

ORBEJSBridge::invoke has been modified to delete its local
reference to the marshalled result stream before returning to
the server region ORB thus eliminating the reported storage
leak.

The ORB code has been modified to set the WLM Temporal Affinity
Token into the OTS PSBR.

ORBR Registry code was modified to release the ORBR Registry
locks prior to driving the an outbound response thus fixing
the deadlock in an application control region between threads
performing transaction cleanup.

Module bbomsbo3.cpp method DefineSystem has been modified to
define new server instance properties:
        configured port number
        SSL Fire wall port number
        HTTP Listener port number
        HTTPS listener port number
--------------------------------------------------------------
A change is required to documentation.

NOTE:  Periodically, we refresh the documentation on our
Web site, so the changes might have been made before you
read this text.  To access the latest on-line
documentation, go to the product library page at:

www.ibm.com/software/webservers/appserv/

The following document must change:

Document Name: WebSphere Application Server V4.0 for z/OS
               and OS/390 Installation and Customization
Document Number: GA22-7834-00

For Table 15 on page 63:

Remove the following row from the table:

BBO.SBBOLD2(BBORSMCT)   If you plan to use WebServer servlets
                        with WebSphere for z/OS, you must place
                        SBBOLD2(BBORSMCT) in either LPA or in
                        the link list.

Change the next row to read:

BBO.SBBOLD2            Do not put members from SBBOLD2 in the
                       LPA. Place these members in the link
                       list.

Make the same changes to Table 37 on page 273.
--------------------------------------------------------------

APAR PQ47681 is associated with SERVICE LEVEL W400009 of
WebSphere Application Server V4.0 for z/OS and OS/390.
Temporary fix Comments
APAR information
APAR number PQ47681
Reported component name WASKBASE
Reported component ID 5655A9801
Reported release 400
Status CLOSED PER
PE NoPE
HIPER NoHIPER
Submitted date 2001-04-05
Closed date 2001-04-19
Last modified date 2001-05-03

APAR is sysrouted FROM one or more of the following:

APAR is sysrouted TO one or more of the following:
UQ53519

Modules/Macros
BBODBGVT BBOLPOI BBOLRT BBOLSHCP BBOLSS BBOMID10
BBOMSBO3 BBOOBOAT BBOOEJSB BBOOORRG BBOREXIT BBOUBINF
BBOZ0229 BBOZ0710 BBOZ0812 BBOZ0813    

Fix information
Fixed component name WASKBASE
Fixed component ID 5655A9801

Applicable component levels
R400 PSY UQ53519    UP01/04/27 P F104

  Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.


Document Information


Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server for z/OS
Operating system(s):
Software version: 400
Software edition:
Reference #: PQ47681
IBM Group: Software Group
Modified date: May 3, 2001