Java 获取系统信息和服务器信息

Java 获取系统信息

可以获取一些基本的电脑信息和服务器信息,还有更多的信息没有写进下面的方法:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Date;
import java.util.Formatter;
import java.util.Locale;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;

public class SystemInfo {
	/**系统名*/
	private String os_name;
	/**系统架构*/
	private String os_arch ;
	/**系统版本号*/
	private String os_version ;
	/**系统IP*/
	private String os_ip ;
	/**系统MAC地址*/
	private String os_mac;
	/**系统时间*/
	private Date os_date;
	/**系统CPU个数*/
	private Integer os_cpus ;
	/**系统用户名*/
	private String os_user_name;
	/**用户的当前工作目录*/
	private String os_user_dir;
	/**用户的主目录*/
	private String os_user_home;
	
	/**Java的运行环境版本*/
	private String java_version ;
	/**java默认的临时文件路径*/
	private String java_io_tmpdir;
	
	/**java 平台*/
	private String sun_desktop ;
	
	/**文件分隔符  在 unix 系统中是"/"*/
	private String file_separator;
	/**路径分隔符  在 unix 系统中是":"*/
	private String path_separator;
	/**行分隔符   在 unix 系统中是"/n"*/
	private String line_separator;
	
	/**服务context**/
	private String server_context ;
	/**服务器名*/
	private String server_name;
	/**服务器端口*/
	private Integer server_port;
	/**服务器地址*/
	private String server_addr;
	/**获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址*/
	private String server_host;
	/**服务协议*/
	private String server_protocol;
	
	public static SystemInfo SYSTEMINFO;
	
	public static SystemInfo getInstance(){
		if(SYSTEMINFO == null){
			SYSTEMINFO = new SystemInfo();
		}
		return SYSTEMINFO;
	}
	
	
	public static SystemInfo getInstance(HttpServletRequest request){
		if(SYSTEMINFO == null){
			SYSTEMINFO = new SystemInfo(request);
		}
		else {
			SYSTEMINFO.ServerInfo(request);
		}
		return SYSTEMINFO;
	}
	
	private SystemInfo() {
		super();
		init();
	}
	
	private SystemInfo(HttpServletRequest request) {
		super();
		init();
		/**
		 * 额外信息
		 */
		ServerInfo(request);
	}
	
	/**
	 * 输出信息
	 */
	public void PrintInfo(){
		Properties props=System.getProperties();
		System.out.println("Java的运行环境版本:"+props.getProperty("java.version")); 
		System.out.println("默认的临时文件路径:"+props.getProperty("java.io.tmpdir")); 
		System.out.println("操作系统的名称:"+props.getProperty("os.name")); 
		System.out.println("操作系统的构架:"+props.getProperty("os.arch")); 
		System.out.println("操作系统的版本:"+props.getProperty("os.version")); 
		System.out.println("文件分隔符:"+props.getProperty("file.separator"));   //在 unix 系统中是"/" 
		System.out.println("路径分隔符:"+props.getProperty("path.separator"));   //在 unix 系统中是":" 
		System.out.println("行分隔符:"+props.getProperty("line.separator"));   //在 unix 系统中是"/n"
		System.out.println("用户的账户名称:"+props.getProperty("user.name")); 
		System.out.println("用户的主目录:"+props.getProperty("user.home")); 
		System.out.println("用户的当前工作目录:"+props.getProperty("user.dir"));
	}
	
	/**
	 * 初始化基本属性
	 */
	private void init(){
		Properties props=System.getProperties();
		
		this.java_version = props.getProperty("java.version");
		this.java_io_tmpdir = props.getProperty("java.io.tmpdir");
		this.os_name = props.getProperty("os.name");
		this.os_arch = props.getProperty("os.arch");
		this.os_version = props.getProperty("os.version");
		this.file_separator = props.getProperty("file.separator");
		this.path_separator = props.getProperty("path.separator");
		this.line_separator = props.getProperty("line.separator");
		
		this.os_user_name = props.getProperty("user.name");
		this.os_user_home = props.getProperty("user.home");
		this.os_user_dir = props.getProperty("user.dir");
		
		this.sun_desktop = props.getProperty("sun.desktop");
		
		this.os_date = new Date();
		this.os_cpus = Runtime.getRuntime().availableProcessors();
		
		try {
			ipMac();
		} catch (Exception e) {
			this.os_ip = "";
			this.os_mac = "";
		}
	}
	
	/**
	 * 获取ip和mac地址
	 * @throws Exception
	 */
	@SuppressWarnings("resource")
	private void ipMac() throws Exception{
		InetAddress address = InetAddress.getLocalHost();
		NetworkInterface ni = NetworkInterface.getByInetAddress(address);
		ni.getInetAddresses().nextElement().getAddress();
		byte[] mac = ni.getHardwareAddress();
		String sIP = address.getHostAddress();
		String sMAC = "";
		Formatter formatter = new Formatter();
		for (int i = 0; i < mac.length; i++) {
			sMAC = formatter.format(Locale.getDefault(), "%02X%s", mac[i],
					(i < mac.length - 1) ? "-" : "").toString();

		}
		SystemInfo.this.os_ip = sIP;
		SystemInfo.this.os_mac = sMAC;
	}
	
	/**
	 * 获取服务器信息
	 * @param request
	 */
	public void ServerInfo(HttpServletRequest request){
		this.server_name = request.getServerName();
		this.server_port = request.getServerPort();
		this.server_addr = request.getRemoteAddr();
		this.server_host = request.getRemoteHost();
		this.server_protocol = request.getProtocol();
		this.server_context = request.getContextPath();
	}

	public String getOs_name() {
		return os_name;
	}

	public String getOs_arch() {
		return os_arch;
	}

	public String gOss_version() {
		return os_version;
	}

	public String getOs_ip() {
		return os_ip;
	}

	public String getOs_mac() {
		return os_mac;
	}

	public Date getOs_date() {
		return os_date;
	}

	public Integer getOs_cpus() {
		return os_cpus;
	}

	public String getOs_user_name() {
		return os_user_name;
	}

	public String getOs_user_dir() {
		return os_user_dir;
	}

	public String getOs_user_home() {
		return os_user_home;
	}

	public String getJava_version() {
		return java_version;
	}

	public String getJava_io_tmpdir() {
		return java_io_tmpdir;
	}

	public String getSun_desktop() {
		return sun_desktop;
	}

	public String getFile_separator() {
		return file_separator;
	}

	public String getPath_separator() {
		return path_separator;
	}

	public String getLine_separator() {
		return line_separator;
	}

	public String getServer_context() {
		return server_context;
	}

	public String getServer_name() {
		return server_name;
	}

	public Integer getServer_port() {
		return server_port;
	}

	public String getServer_addr() {
		return server_addr;
	}

	public String getServer_host() {
		return server_host;
	}

	public String getServer_protocol() {
		return server_protocol;
	}
	
	
}


参考:

Properties p = System.getProperties();// 获取当前的系统属性
		p.list(System.out);// 将属性列表输出
		
		System.out.println("操作系统:"+p.getProperty("sun.desktop"));
		System.out.print("CPU个数:");// Runtime.getRuntime()获取当前运行时的实例
		System.out.println(Runtime.getRuntime().availableProcessors());// availableProcessors()获取当前电脑CPU数量
		System.out.print("虚拟机内存总量:");
		System.out.println(Runtime.getRuntime().totalMemory());// totalMemory()获取java虚拟机中的内存总量
		System.out.print("虚拟机空闲内存量:");
		System.out.println(Runtime.getRuntime().freeMemory());// freeMemory()获取java虚拟机中的空闲内存量
		System.out.print("虚拟机使用最大内存量:");
		System.out.println(Runtime.getRuntime().maxMemory());// maxMemory()获取java虚拟机试图使用的最大内存量


Java判断服务器类型(来源:http://blog.csdn.net/luo_yifan/article/details/6335284):

import org.apache.log4j.Logger;

@SuppressWarnings("rawtypes")
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;

}




  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isea533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值