Application Server fails to initialize with CORBA COMM_FAILURE on WebSphere Application Server V3.5 and V4.0

Technote (FAQ)
Problem
The application server starts and a process ID is created. However, after a given amount of time, the following error is thrown: "Failed to initialize a server: "DCAF" java.rmi.MarshalException: CORBA COMM_FAILURE 1 Maybe".
Solution
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.












Document Information

Product categories: Software, Application Servers, Distributed Application & Web Servers, WebSphere Application Server, Servlet Engine/Web Container
Operating system(s): Multi-Platform
Software version: 3.5, 4.0
Software edition: Advanced, Standard
Reference #: 1052603
IBM Group: Software Group
Modified date: 2004-05-15