J2EE application servers are typically deployed in complex and highly sophisticated operating environments. The Sun Java System Application Server covers a broad range of technologies, including Java, Java servlets, XML, JSP, JDBC data sources, EJB technology, and more. Other products and tools associated with the Application Server are LDAP, Web Server, SunONE Message Queue, deployment and migration tools, and so on. Understanding and diagnosing complex issues involving so many disparate components requires thorough knowledge and a careful diagnostic process.
Gathering any or all of the following information will make it easier to classify a problem and search for solutions. Note that operating system utilities, such as pkginfo and showrev on Solaris and rpm on Linux, are helpful in gathering system information.
What are the exact version numbers of the operating system and products installed?
Have any patches been applied? If so, specify product and operating system patch numbers.
How is the system configured?
What system resources does the system have (memory, disk, swap space, and so on)?
How many application servers, web servers, and directory servers are installed?
How is the web server connected to Application Server? On the same machine or not?
How is the Application Server connected to the directory server?
Are application servers in a cluster or not?
Was any upgrade done? If so, what were source and target versions?
Was a migration done? If so, what were source and target versions?
Have any new applications been deployed?
Is SSL enabled or not?
What versions of the HADB and the backend database are being used?
What JDBC driver is being used to access the database?
What JDK version is being used?
What are the JVM heap, stack, and garbage collection-related parameters set to?
What are the JVM options?
What third-party technologies are being used in the installation?
Are the interoperating component versions in compliance with the compatibility matrix specified in the release notes?
After gathering this information:
Collect web server error and access log data (web server instance-specific).
Collect any Application Server stack traces. Note that a fresh set of logs associated with the specific problem should be run. This avoids scanning gigabytes of irrelevant log information.
Determine the sequence of events that occurred when the problem first appeared, including any steps that may already have been taken to resolve the problem.