`
yumyy
  • 浏览: 872 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
文章分类
社区版块
存档分类
最新评论

程序中判断应用服务器类型

阅读更多
在不同的应用服务器中,所用的相对路径有所不同,只有区分开所用的应用服务器,才能正确地应用的你路径。
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class ServerDetector {

	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() {
		ServerDetector sd = _instance;

		if (sd._serverId == null) {
			if (ServerDetector.isGeronimo()) {
				sd._serverId = "geronimo";
			}
			else if (ServerDetector.isJBoss()) {
				sd._serverId = "jboss";
			}
			else if (ServerDetector.isJOnAS()) {
				sd._serverId = "jonas";
			}
			else if (ServerDetector.isOC4J()) {
				sd._serverId = "oc4j";
			}
			else if (ServerDetector.isOrion()) {
				sd._serverId = "orion";
			}
			else if (ServerDetector.isResin()) {
				sd._serverId = "resin";
			}
			else if (ServerDetector.isWebLogic()) {
				sd._serverId = "weblogic";
			}
			else if (ServerDetector.isWebSphere()) {
				sd._serverId = "websphere";
			}

			if (ServerDetector.isJetty()) {
				if (sd._serverId == null) {
					sd._serverId = "jetty";
				}
				else {
					sd._serverId += "-jetty";
				}
			}
			else if (ServerDetector.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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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() {
		ServerDetector 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 ServerDetector() {
	}

	private static Log _log = LogFactory.getLog(ServerDetector.class);

	private static ServerDetector _instance = new ServerDetector();

	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;

}

Tomcat 与 weblogic 的区别
if(ServerDetector.isTomcat()){//tomcat server
 path = this.getServletContext().getRealPath("/")+"data\\"+userId+".xls";
}else if(ServerDetector.isWebLogic()){//weblogic server
 path = this.getServletContext().getRealPath("/")  +"\\data\\"+userId+".xls";
}
分享到:
评论

相关推荐

    VB中判断本地服务器上的文件夹是否存在

    以下是对如何在VB中判断本地服务器上的文件夹是否存在这一主题的详细解释。 首先,我们需要引入`Scripting.FileSystemObject`库,这允许我们创建、修改和删除文件及目录。在VB中,可以使用`CreateObject`函数来实例...

    jsp应用的小型服务器程序

    【标题】:“jsp应用的小型服务器程序” 【描述】:“小型的jsp服务器应用程序 对于初学者比较实用” 这个描述指的是一个特别设计用于教学或初学者实践的轻量级JSP(JavaServer Pages)服务器程序。JSP是Java平台...

    基于COM_DCOM的分布式多层系统中应用程序服务器的设计与实现实例.pdf

    客户端应用程序通常只需与应用程序服务器中的特定协调对象通信,这使得应用程序服务器的架构更加清晰,易于管理。 通过本文的介绍和实例演示,可以看出基于COM组件对象的应用程序服务器设计方法是非常有效的。这种...

    winform 判断文件服务器是否存在

    当你需要在WinForm应用程序中实现判断文件服务器是否存在这一功能时,通常会涉及到网络编程、文件I/O操作以及异常处理等多个方面。以下将详细介绍如何实现这一功能。 首先,你需要连接到文件服务器。在.NET ...

    c# IM从客户端程序登录服务器程序示例

    在本文中,我们将深入探讨如何使用C#编程语言创建一个即时消息(IM)客户端程序,以便连接到服务器并实现登录功能。C#是一种强大的、面向对象的编程语言,非常适合开发网络应用程序,包括IM系统。 首先,我们需要...

    应用程序自动更新程序

    自动更新程序通过对比本地应用程序文件与服务器上的更新文件的时间戳来判断是否需要更新。文件修改时间是检查更新的关键指标,如果服务器上的文件时间戳晚于本地文件,那么就表明有新的更新可用。这种机制使得程序...

    tomcat应用服务器部署项目

    根据给定的信息,我们将深入探讨如何在Tomcat应用服务器上部署Java项目,包括配置与调试的基本步骤、关键组件的理解及常见问题的解决方法。 ### Tomcat应用服务器部署项目 #### Tomcat简介 Apache Tomcat是一款...

    Android手机访问服务器登陆程序(客户端、服务器端、Mysql数据库)

    该程序是一个完整的解决方案,用于实现Android手机访问服务器进行登录操作,涵盖了客户端应用、服务器端接口以及Mysql数据库的集成。以下是对每个组成部分的详细说明: **Android客户端**:Android客户端是用户与...

    c#判断上传文件的类型和大小

    在C#中,判断上传文件的类型和大小是网络应用开发中的常见需求,尤其是在处理用户上传文件的功能时。为了确保安全性和性能,开发者通常需要验证文件的类型和大小,防止恶意大文件耗尽服务器资源,或者非法文件类型...

    TCPIP服务器客户端测试VS2010含源码

    简单的VS2010使用winsocket...其次,运行客户端程序,界面中输入服务器IP与端口号,建立客户端;如连接成功,两者状态提示框中都有提示。之后,点击各自的接收数据与发送数据,可实现收据的定时收发,设定时间是1S。

    服务器程序流程图.doc

    在实际应用中,服务器程序流程图可以用于描述各种服务器端程序的处理流程,如Web服务器、数据库服务器、游戏服务器等。通过使用服务器程序流程图,我们可以更好地理解服务器端程序的处理流程,并确保服务器端的安全...

    IOS 程序使用urlconnection连接服务器方法

    在iOS开发中,应用程序往往需要与后端服务器进行通信来获取数据或提交用户操作的结果。`NSURLConnection`(现已被`URLSession`替代)是一种常用的网络通信方式,用于发送HTTP请求并接收响应。本文将详细介绍如何使用...

    asp.net 判断控件类型源码

    总结来说,理解和掌握在ASP.NET中使用VB.NET判断控件类型的方法对于编写高效、灵活的网页应用程序至关重要。通过`GetType()`或`TypeOf...Is`,我们可以针对不同类型的控件实现特定功能,从而提升用户体验和代码的可...

    C++服务器程序demo

    在本文中,我们将深入探讨"C++服务器程序demo"的相关知识点,包括程序参数判断、进程检查、信号处理、后台运行机制以及日志系统的选择与使用。此外,还将提及跨平台开发工具Visual Studio 2015在Linux程序开发中的...

    Socket服务器端与客户端程序.txt

    从给定的文件信息来看,该文件主要涉及的是Socket编程中的服务器端与客户端程序的实现。Socket编程是网络通信的基础,允许不同计算机上的进程通过网络进行数据交换。下面将详细解析该代码片段所涵盖的关键知识点。 ...

    关于.NET的程序应用

    解决方案是一个容器,用于组织一个或多个相关项目的开发工作,而项目则是实际的代码和资源的集合,如Web应用程序、库或者其他类型的应用。解决方案管理器用于查看和管理解决方案中的所有项目,而服务器资源管理器则...

    构建一个简单的HTTP服务器的C#程序实例Ky_HttpServer.rar

    每次客户端发出请求后,我们根据请问报文来判断客户端的请求类型,然后根据不同的请求类型进行相应的处理,这样我们就设计了一个基本的HTTP服务器。每一次监听程序都会创建一个新的TcpClien,HttpServer类又会创建一...

    Go语言构建独立exe实现桌面应用更新程序 全量更新 增量更新

    首先,我们要理解Go语言的特性,它是一种静态类型、编译型的语言,生成的可执行文件不需要依赖额外的运行时环境,这使得Go编译的程序非常适合用于创建独立的桌面应用。 **nw.js介绍** nw.js(前身是Node-Webkit)是...

    HeartBeat心跳检测应用服务器 v3.0.0.zip

    在IT行业中,心跳检测通常用于确保网络服务的可用性和稳定性,它通过定期发送请求并等待响应来判断一个服务是否在线。HeartBeat v3.0.0可能包含了优化的算法和更强大的功能,以满足开发者和管理员对服务器监控的需求...

    Java web应用程序开发

    在IT行业中,Java Web应用程序开发是一项至关重要的技能,它涵盖了从服务器端编程到客户端交互的全方位技术栈。在这个“Java Web应用程序开发”的课程中,我们主要关注的是如何使用Java技术来构建动态、交互式的Web...

Global site tag (gtag.js) - Google Analytics