27

I am writing a Web application with Java, and this WAR application may be deployed to different application servers, such as Tomcat/JBoss/Jetty/Weblogic.

For diagnostic purpose, I'd like to implement a dynamic web page to collect various environment/system information so that customer can provide these information to support engineers for diagnostics.

One piece of information that is useful is the application server name and version that this application gets deployed to, such as Tomcat 7.0, JBoss 5.1.0, Glassfish 3.0, etc.

I just wonder if there is any standard way to retrieve application server's name and version from different JEE application servers.

1
  • 1
    Not really an answer, but it would seem you would be able to check the physical file path of some configuration file and it would tell you it's in /etc/tomcat7.0 or wherever it's installed. I'm sure there's a more programmatic way, but this seems reasonable to me. Commented Sep 16, 2011 at 6:07

3 Answers 3

31

I have find some code for getting server information of where you deploy your application.
This code is written in Servlet to get server info in which it is running..

String str1 = getServletContext().getServerInfo();

By this you will get the server name and the server's version info.

I think it will some what help you..

Sign up to request clarification or add additional context in comments.

1 Comment

It returns a string like: Apache Tomcat/7.0.42. Thanks.
1

I don't think there is an easy way to do this, but I know you can identify tomcat from checking the System environment properties

 -- listing properties --
 java.util.logging.config.file=/home/willie/.netbeans/7.0/apache-tom...
 user.dir=/home/willie/apache-tomcat-7.0.14/bin
 java.runtime.version=1.6.0_26-b03
 java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
 java.endorsed.dirs=/home/willie/apache-tomcat-7.0.14/end...
 os.arch=amd64
 java.io.tmpdir=/home/willie/.netbeans/7.0/apache-tom...
 java.naming.factory.url.pkgs=org.apache.naming
 os.name=Linux
 sun.jnu.encoding=UTF-8
 java.library.path=/usr/lib/jvm/java-6-sun-1.6.0.26/jre/...
 tomcat.util.scan.DefaultJarScanner.jarsToSkip=bootstrap.jar,commons-daemon.jar,tomc...
 java.specification.name=Java Platform API Specification
 java.class.version=50.0
 sun.management.compiler=HotSpot 64-Bit Tiered Compilers
 os.version=2.6.38-8-generic
 user.home=/home/willie
 user.timezone=Africa/Johannesburg
 catalina.useNaming=true
 java.awt.printerjob=sun.print.PSPrinterJob
 java.specification.version=1.6
 file.encoding=UTF-8
 catalina.home=/home/willie/apache-tomcat-7.0.14
 user.name=willie
 java.class.path=/home/willie/apache-tomcat-7.0.14/bin...
 java.naming.factory.initial=org.apache.naming.java.javaURLContext...
 sun.security.krb5.debug=false
 package.definition=sun.,java.,org.apache.catalina.,org.a...
 java.vm.specification.version=1.0
 sun.arch.data.model=64
 java.home=/usr/lib/jvm/java-6-sun-1.6.0.26/jre
 sun.java.command=org.apache.catalina.startup.Bootstrap...
 catalina.base=/home/willie/.netbeans/7.0/apache-tom...
 file.separator=/
 java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
 common.loader=${catalina.base}/lib,${catalina.base}..

you can check for tomcat/jetty/jboss... specific entries and determine the version and server by that means

Comments

1

These type of information are always put in some MBean. Please check out the respect ive App Server's documentation about the MBeans the provide. You can programmatically access the MBean using JMX APIs.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.