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; }