In some situations, the application server can fail to
initialize and throws a CORBA COMM_FAILURE. One scenario that causes this
is that the application server did not fully initialize before the "ping
initial timeout" elapsed. "Ping initial timeout" defines, in seconds, how
long the AdminServer will give an AppServer from startup to "ready to take
requests". If the "ping initial timeout" alarm in the AdminServer times
out before the AppServer is fully ready, you will see something like the
following in tracefile:
[02.05.16 19:00:21:129 EDT] d7758fd6 ActiveServerP A
ADMS0032I: Started server:
"Matt" (pid "103228")
[02.05.16 19:05:21:154 EDT] d7758fd6 ActiveEJBServ W Failed to
initialize a server: "Matt" java.rmi.MarshalException: CORBA COMM_FAILURE
1 Maybe; nested exception is: org.omg.CORBA.COMM_FAILURE: minor
code: 1 completed: Maybe
org.omg.CORBA.COMM_FAILURE: minor code: 1 completed:
Maybe
at com.ibm.CORBA.iiop.IIOPConnection.purge_calls
at com.ibm.CORBA.iiop.StandardReaderThread.run
----- Begin backtrace for detail
org.omg.CORBA.COMM_FAILURE: minor code: 1 completed:
Maybe
at com.ibm.CORBA.iiop.IIOPConnection.purge_calls
at com.ibm.CORBA.iiop.StandardReaderThread.run
The ping initial timeout for this customer was set to 300 seconds. Take
notice that from the time that the appserver started until the time that
the "failed to initialize" error was thrown is exactly 300 seconds.
This problem can happen for the following reasons (not an all-inclusive
list):
1. A servlet set to "load at startup" hangs in its init() method and
does not complete. This keeps the appserver from initializing. To resolve
the problem, disable "load at startup" for this servlet. You will then
need to debug why the init() method for this servlet is failing to
complete.
2. There are many servlets set to "load at startup" and the loading
(and init) of the servlets takes longer to complete than the time given in
"ping initial timeout". To resolve, increase the ping initial timeout.
3. Customer has code in the init method of a servlet (set to load at
startup) that takes longer to complete than the "ping initial timeout." To
resolve, increase the ping initial timeout or reduce the amount of time
that servlets take to initialize.
4. In 3.5.X, customer implements the ServiceInitializer interface (used
to load custom classes at Application Server startup) and there is a loop
in the class that is initialized. To resolve, do not put a loop into the
class that is initialized. Instead, spawn a new thread and place the loop
in there.
|