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