`

java判断服务器是那种,例如区分tomcat和weblogic

 
阅读更多
下面是服务器类型探测的类,原理就是用每个应用服务器自己独特的启动类来判断
package com.roger.query.util;
import org.apache.log4j.Logger;
/**
 * @  服务器类型探测
 * @Date  2011/04/13
 * **/
public class ServerUtil {
 public static final String GERONIMO_CLASS = "/org/apache/geronimo/system/main/Daemon.class";
 public static final String JBOSS_CLASS = "/org/jboss/Main.class";
 public static final String JETTY_CLASS = "/org/mortbay/jetty/Server.class";
 public static final String JONAS_CLASS = "/org/objectweb/jonas/server/Server.class";
 public static final String OC4J_CLASS = "/oracle/jsp/oc4jutil/Oc4jUtil.class";
 public static final String ORION_CLASS = "/com/evermind/server/ApplicationServer.class";
 public static final String PRAMATI_CLASS = "/com/pramati/Server.class";
 public static final String RESIN_CLASS = "/com/caucho/server/resin/Resin.class";
 public static final String REXIP_CLASS = "/com/tcc/Main.class";
 public static final String SUN7_CLASS = "/com/iplanet/ias/tools/cli/IasAdminMain.class";
 public static final String SUN8_CLASS = "/com/sun/enterprise/cli/framework/CLIMain.class";
 public static final String TOMCAT_CLASS = "/org/apache/catalina/startup/Bootstrap.class";
 public static final String WEBLOGIC_CLASS = "/weblogic/Server.class";
 public static final String WEBSPHERE_CLASS = "/com/ibm/websphere/product/VersionInfo.class";
 public static String getServerId() {
  ServerUtil sd = _instance;
  if (sd._serverId == null) {
   if (ServerUtil.isGeronimo()) {
    sd._serverId = "geronimo";
   } else if (ServerUtil.isJBoss()) {
    sd._serverId = "jboss";
   } else if (ServerUtil.isJOnAS()) {
    sd._serverId = "jonas";
   } else if (ServerUtil.isOC4J()) {
    sd._serverId = "oc4j";
   } else if (ServerUtil.isOrion()) {
    sd._serverId = "orion";
   } else if (ServerUtil.isResin()) {
    sd._serverId = "resin";
   } else if (ServerUtil.isWebLogic()) {
    sd._serverId = "weblogic";
   } else if (ServerUtil.isWebSphere()) {
    sd._serverId = "websphere";
   }
   if (ServerUtil.isJetty()) {
    if (sd._serverId == null) {
     sd._serverId = "jetty";
    } else {
     sd._serverId += "-jetty";
    }
   } else if (ServerUtil.isTomcat()) {
    if (sd._serverId == null) {
     sd._serverId = "tomcat";
    } else {
     sd._serverId += "-tomcat";
    }
   }
   if (_log.isInfoEnabled()) {
    _log.info("Detected server " + sd._serverId);
   }
   if (sd._serverId == null) {
    throw new RuntimeException("Server is not supported");
   }
  }
  return sd._serverId;
 }
 public static boolean isGeronimo() {
  ServerUtil sd = _instance;
  if (sd._geronimo == null) {
   Class c = sd.getClass();
   if (c.getResource(GERONIMO_CLASS) != null) {
    sd._geronimo = Boolean.TRUE;
   } else {
    sd._geronimo = Boolean.FALSE;
   }
  }
  return sd._geronimo.booleanValue();
 }
 public static boolean isJBoss() {
  ServerUtil sd = _instance;
  if (sd._jBoss == null) {
   Class c = sd.getClass();
   if (c.getResource(JBOSS_CLASS) != null) {
    sd._jBoss = Boolean.TRUE;
   } else {
    sd._jBoss = Boolean.FALSE;
   }
  }
  return sd._jBoss.booleanValue();
 }
 public static boolean isJetty() {
  ServerUtil sd = _instance;
  if (sd._jetty == null) {
   Class c = sd.getClass();
   if (c.getResource(JETTY_CLASS) != null) {
    sd._jetty = Boolean.TRUE;
   } else {
    sd._jetty = Boolean.FALSE;
   }
  }
  return sd._jetty.booleanValue();
 }
 public static boolean isJOnAS() {
  ServerUtil sd = _instance;
  if (sd._jonas == null) {
   Class c = sd.getClass();
   if (c.getResource(JONAS_CLASS) != null) {
    sd._jonas = Boolean.TRUE;
   } else {
    sd._jonas = Boolean.FALSE;
   }
  }
  return sd._jonas.booleanValue();
 }
 public static boolean isOC4J() {
  ServerUtil sd = _instance;
  if (sd._oc4j == null) {
   Class c = sd.getClass();
   if (c.getResource(OC4J_CLASS) != null) {
    sd._oc4j = Boolean.TRUE;
   } else {
    sd._oc4j = Boolean.FALSE;
   }
  }
  return sd._oc4j.booleanValue();
 }
 public static boolean isOrion() {
  ServerUtil sd = _instance;
  if (sd._orion == null) {
   Class c = sd.getClass();
   if (c.getResource(ORION_CLASS) != null) {
    sd._orion = Boolean.TRUE;
   } else {
    sd._orion = Boolean.FALSE;
   }
  }
  return sd._orion.booleanValue();
 }
 public static boolean isPramati() {
  ServerUtil sd = _instance;
  if (sd._pramati == null) {
   Class c = sd.getClass();
   if (c.getResource(PRAMATI_CLASS) != null) {
    sd._pramati = Boolean.TRUE;
   } else {
    sd._pramati = Boolean.FALSE;
   }
  }
  return sd._pramati.booleanValue();
 }
 public static boolean isResin() {
  ServerUtil sd = _instance;
  if (sd._resin == null) {
   Class c = sd.getClass();
   if (c.getResource(RESIN_CLASS) != null) {
    sd._resin = Boolean.TRUE;
   } else {
    sd._resin = Boolean.FALSE;
   }
  }
  return sd._resin.booleanValue();
 }
 public static boolean isRexIP() {
  ServerUtil sd = _instance;
  if (sd._rexIP == null) {
   Class c = sd.getClass();
   if (c.getResource(REXIP_CLASS) != null) {
    sd._rexIP = Boolean.TRUE;
   } else {
    sd._rexIP = Boolean.FALSE;
   }
  }
  return sd._rexIP.booleanValue();
 }
 public static boolean isSun() {
  if (isSun7() || isSun8()) {
   return true;
  } else {
   return false;
  }
 }
 public static boolean isSun7() {
  ServerUtil sd = _instance;
  if (sd._sun7 == null) {
   Class c = sd.getClass();
   if (c.getResource(SUN7_CLASS) != null) {
    sd._sun7 = Boolean.TRUE;
   } else {
    sd._sun7 = Boolean.FALSE;
   }
  }
  return sd._sun7.booleanValue();
 }
 public static boolean isSun8() {
  ServerUtil sd = _instance;
  if (sd._sun8 == null) {
   Class c = sd.getClass();
   if (c.getResource(SUN8_CLASS) != null) {
    sd._sun8 = Boolean.TRUE;
   } else {
    sd._sun8 = Boolean.FALSE;
   }
  }
  return sd._sun8.booleanValue();
 }
 public static boolean isTomcat() {
  ServerUtil sd = _instance;
  if (sd._tomcat == null) {
   Class c = sd.getClass();
   if (c.getResource(TOMCAT_CLASS) != null) {
    sd._tomcat = Boolean.TRUE;
   } else {
    sd._tomcat = Boolean.FALSE;
   }
  }
  return sd._tomcat.booleanValue();
 }
 public static boolean isWebLogic() {
  ServerUtil sd = _instance;
  if (sd._webLogic == null) {
   Class c = sd.getClass();
   if (c.getResource(WEBLOGIC_CLASS) != null) {
    sd._webLogic = Boolean.TRUE;
   } else {
    sd._webLogic = Boolean.FALSE;
   }
  }
  return sd._webLogic.booleanValue();
 }
 public static boolean isWebSphere() {
  ServerUtil sd = _instance;
  if (sd._webSphere == null) {
   Class c = sd.getClass();
   if (c.getResource(WEBSPHERE_CLASS) != null) {
    sd._webSphere = Boolean.TRUE;
   } else {
    sd._webSphere = Boolean.FALSE;
   }
  }
  return sd._webSphere.booleanValue();
 }
 private ServerUtil() {
 }
 private static Logger _log = Logger.getLogger(ServerUtil.class);
 private static ServerUtil _instance = new ServerUtil();
 private String _serverId;
 private Boolean _geronimo;
 private Boolean _jBoss;
 private Boolean _jetty;
 private Boolean _jonas;
 private Boolean _oc4j;
 private Boolean _orion;
 private Boolean _pramati;
 private Boolean _resin;
 private Boolean _rexIP;
 private Boolean _sun7;
 private Boolean _sun8;
 private Boolean _tomcat;
 private Boolean _webLogic;
 private Boolean _webSphere;   
 
}

分享到:
评论

相关推荐

    常用J2EE应用服务器简介.docx

    这几天接触到两种Java的web服务器,做项目用的Tomcat,看视频看的是WebLogic Server(WLS),都是web服务器,有什么区分和联系呢? (一)先简洁介绍一下这两种服务器。 WebLogic是美国bea公司出品的一个application ...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    java基础题 很全面

    38. Java的接口和C++的虚类的相同和不同处。 11 39. Java中的异常处理机制的简单原理和应用。 11 40. 垃圾回收的优点和原理。并考虑2种回收机制。 11 41. 你所知道的集合类都有哪些?主要方法? 12 42. 描述一下JVM...

    Java面试宝典-经典

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    Java面试宝典2010版

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    java面试题大全(2012版)

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    最新Java面试宝典pdf版

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    Java面试笔试资料大全

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    java面试宝典2012

    各种java面试题集,面试前必备哦, 1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套...

    JAVA面试宝典2010

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    Java面试宝典2012新版

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    Java面试宝典2012版

    54、简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34 55、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 36 56、子线程循环10次,接着主线程循环100,接着又回到...

    javapms门户网站源码

    在应用服务器平台兼容性方面,系统支持跨应用服务器,如Tomcat、Weblogic、Webspere、JBoss等应用服务器,很好的满足了各层次用户的需求。 在浏览器兼容性方面,目前多种浏览器并存,使用非IE浏览器的用户越来越多,...

    Oracle9i备课笔记——吕海东

    (8) 应用平台:IIS, Tomcat, Weblogic, WebShpere, Oracle AS. (9) 自然语言:英语,日语 1.2 学习Oracle数据库的重要性 (1) 数据库在当今世界的重要性。 (2) Oracle数据库的市场应用的广泛性。 (3) Oracle...

    智能调度平台系统技术要求.pdf

    2.3 Web应用服务器支持主流中间件产品,如IBM Websphere, BEA Weblogic, Oracle Application Server, Tomcat等; Web服务器支持MS IIS, NES, Apache等。 2.4数据库管理系统须具备良好的数据和索引的压缩技术,具有 ...

Global site tag (gtag.js) - Google Analytics