watchdogconfig.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 664 行
JAVA
664 行
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * * Free Software Foundation, Inc. * 59 Temple Place, Suite 330 * Boston, MA 02111-1307 USA * * @author Scott Ferguson */package com.caucho.boot;import com.caucho.config.program.ConfigProgram;import com.caucho.config.ConfigException;import com.caucho.config.types.Bytes;import com.caucho.config.types.Period;import com.caucho.log.AbstractRolloverLog;import com.caucho.log.RotateStream;import com.caucho.server.port.Port;import com.caucho.server.port.ProtocolPort;import com.caucho.util.*;import com.caucho.vfs.Path;import com.caucho.vfs.Vfs;import java.io.File;import java.util.ArrayList;import java.util.logging.Logger;/** * Thread responsible for watching a backend server. */class WatchdogConfig{ private static final L10N L = new L10N(WatchdogConfig.class); private static final Logger log = Logger.getLogger(WatchdogConfig.class.getName()); private static final int WATCHDOG_PORT_DEFAULT = 6600; private String _id = ""; private WatchdogArgs _args; private Path _rootDirectory; private Path _javaHome; private Path _javaExe; private ArrayList<String> _jvmArgs = new ArrayList<String>(); private ArrayList<String> _jvmClasspath = new ArrayList<String>(); private ArrayList<String> _watchdogJvmArgs = new ArrayList<String>(); private Path _resinHome; private Path _resinRoot; private Path _resinConf; private boolean _is64bit; private boolean _hasXss; private boolean _hasXmx; private Path _chroot; private Path _pwd; private boolean _isDynamic; private String _address; private int _port; private String _watchdogAddress = "127.0.0.1"; private int _watchdogPort; private WatchdogLog _watchdogLog; private Path _logPath; private String _userName; private String _groupName; private ArrayList<Port> _ports = new ArrayList<Port>(); private long _shutdownWaitTime = 60000L; private boolean _isVerbose; private boolean _isWatchdog64bit; private boolean _hasWatchdogXss; private boolean _hasWatchdogXmx; WatchdogConfig(WatchdogArgs args, Path rootDirectory) { _args = args; _rootDirectory = rootDirectory; _pwd = Vfs.lookup(); _is64bit = "64".equals(System.getProperty("sun.arch.data.model")); } public void setId(String id) { _id = id; } public String getId() { return _id; } String []getArgv() { return _args.getArgv(); } public void setDynamic(boolean isDynamic) { _isDynamic = isDynamic; } public void setVerbose(boolean isVerbose) { _isVerbose = isVerbose; } public void setJavaExe(Path javaExe) { _javaExe = javaExe; } public void setJavaHome(Path javaHome) { _javaHome = javaHome; } public Path getJavaHome() { if (_javaHome != null) return _javaHome; else return _args.getJavaHome(); } public void addJvmArg(String arg) { _jvmArgs.add(arg); if (arg.equals("-d64")) _is64bit = true; else if (arg.startsWith("-Xss")) _hasXss = true; else if (arg.startsWith("-Xmx")) _hasXmx = true; } public ArrayList<String> getJvmArgs() { return _jvmArgs; } public void addJvmClasspath(String item) { if (item == null) return; for (String cp : item.split("[" + File.pathSeparatorChar + "]")) { if (! _jvmClasspath.contains(cp)) _jvmClasspath.add(cp); } } public ArrayList<String> getJvmClasspath() { return _jvmClasspath; } /** * Adds a http. */ public void addHttp(Port port) throws ConfigException { _ports.add(port); } /** * Adds a custom-protocol port. */ public Port createProtocol() throws ConfigException { OpenPort port = new OpenPort(); _ports.add(port); return port; } /** * Adds a watchdog managed port */ public void addOpenPort(Port port) { _ports.add(port); } public void setUserName(String user) { _userName = user; } public String getUserName() { return _userName; } public void setGroupName(String group) { _groupName = group; } public String getGroupName() { return _groupName; } public Path getLogPath() { if (_logPath != null) return _logPath; String name; if ("".equals(_id)) name = "jvm-default.log"; else name = "jvm-" + _id + ".log"; return getLogDirectory().lookup(name); } public Path getRootDirectory() { return _rootDirectory; } public Path getLogDirectory() { Path logDirectory = _args.getLogDirectory(); if (logDirectory != null) return logDirectory; if (_watchdogLog != null && _watchdogLog.getDir() != null) return _watchdogLog.getDir(); else return getRootDirectory().lookup("log"); } void logInit(RotateStream log) { if (_watchdogLog != null) _watchdogLog.logInit(log); } public long getShutdownWaitTime() { return _shutdownWaitTime; } public int getWatchdogPort() { if (_args.getWatchdogPort() > 0) return _args.getWatchdogPort(); else if (_watchdogPort > 0) return _watchdogPort; else return WATCHDOG_PORT_DEFAULT; } public void setWatchdogPort(int port) { _watchdogPort = port; } public String getWatchdogAddress() { if (_watchdogAddress != null) return _watchdogAddress; else return "127.0.0.1"; } public void setWatchdogAddress(String addr) { _watchdogAddress = addr; } public void addWatchdogJvmArg(String arg) { _watchdogJvmArgs.add(arg); if (arg.equals("-d64")) _isWatchdog64bit = true; else if (arg.startsWith("-Xss")) _hasWatchdogXss = true; else if (arg.startsWith("-Xmx")) _hasWatchdogXmx = true; } public ArrayList<String> getWatchdogJvmArgs() { return _watchdogJvmArgs; } public WatchdogLog createWatchdogLog() { if (_watchdogLog == null) _watchdogLog = new WatchdogLog(); return _watchdogLog; } public void setAcceptListenBacklog(ConfigProgram program) { } public void setAcceptThreadMin(ConfigProgram program) { } public void setAcceptThreadMax(ConfigProgram program) { } public void setBindPortsAfterStart(ConfigProgram program) { } public void setConnectionMax(ConfigProgram program) { } public void setKeepaliveMax(ConfigProgram program) { } public void setKeepaliveConnectionTimeMax(ConfigProgram program) { } public void setKeepaliveSelectEnable(ConfigProgram program) { } public void setKeepaliveSelectMax(ConfigProgram program) { } public void setKeepaliveSelectThreadTimeout(ConfigProgram program) { } public void setKeepaliveThreadTimeout(ConfigProgram program) { } public void setKeepaliveTimeout(ConfigProgram program) { } public void setAddress(String address) { _address = address; } public void setBackup(ConfigProgram program) { } public void setLoadBalanceConnectTimeout(ConfigProgram program) { } public void setLoadBalanceSocketTimeout(ConfigProgram program) { } public void setLoadBalanceIdleTime(ConfigProgram program) { } public void setLoadBalanceRecoverTime(ConfigProgram program) { } public void setLoadBalanceWarmupTime(ConfigProgram program) { } public void setLoadBalanceWeight(ConfigProgram program) { } public void setManagement(ConfigProgram program) { } public void setMemoryFreeMin(ConfigProgram program) { } public void setPort(int port) { _port = port; } public void addClusterPort(ConfigProgram program) { } public void setRedeployMode(ConfigProgram program) { } public void setShutdownWaitMax(ConfigProgram program) { } public void setSocketTimeout(ConfigProgram program) { } public void setSuspendTimeMax(ConfigProgram program) { } public void setThreadMax(ConfigProgram program) { } public void setThreadExecutorTaskMax(ConfigProgram program) { } public void setThreadIdleMin(ConfigProgram program) { } public void setThreadIdleMax(ConfigProgram program) { } public void setWatchdogArg(ConfigProgram program) { } /** * Ignore items we can't understand. */ /* public void addBuilderProgram(ConfigProgram program) { } */ WatchdogArgs getArgs() { return _args; } Iterable<Port> getPorts() { return _ports; } Path getChroot() { return _chroot; } public void setChroot(Path chroot) { _chroot = chroot; } Path getPwd() { return _pwd; } Path getResinHome() { if (_resinHome != null) return _resinHome; else return _args.getResinHome(); } public void setResinRoot(Path root) { _resinRoot = root; } Path getResinRoot() { if (_resinRoot != null) return _resinRoot; else return _rootDirectory; } /** * Sets the resin.conf */ public void setResinConf(Path resinConf) { _resinConf = resinConf; } /** * Returns the resin.conf */ public Path getResinConf() { if (_resinConf != null) return _resinConf; else return _args.getResinConf(); } boolean hasWatchdogXmx() { return _hasWatchdogXmx; } boolean hasWatchdogXss() { return _hasWatchdogXss; } boolean hasXmx() { return _hasXmx; } boolean hasXss() { return _hasXss; } boolean is64bit() { return _is64bit; } boolean isVerbose() { if (_isVerbose) return _isVerbose; else return _args.isVerbose(); } String getJavaExe() { if (_javaExe != null) return _javaExe.getNativePath(); Path javaHome = Vfs.lookup(System.getProperty("java.home")); if (javaHome.getTail().equals("jre")) javaHome = javaHome.getParent(); if (javaHome.lookup("bin/javaw.exe").canRead()) return javaHome.lookup("bin/javaw").getNativePath(); else if (javaHome.lookup("bin/java.exe").canRead()) return javaHome.lookup("bin/java").getNativePath(); else if (javaHome.lookup("bin/java").canRead()) return javaHome.lookup("bin/java").getNativePath(); javaHome = Vfs.lookup(System.getProperty("java.home")); if (javaHome.lookup("bin/javaw.exe").canRead()) return javaHome.lookup("bin/javaw").getNativePath(); else if (javaHome.lookup("bin/java.exe").canRead()) return javaHome.lookup("bin/java").getNativePath(); else if (javaHome.lookup("bin/java").canRead()) return javaHome.lookup("bin/java").getNativePath(); return "java"; } @Override public String toString() { return getClass().getSimpleName() + "[" + getId() + "]"; } public class WatchdogLog { private Path _dir; private Integer _rolloverCount; private Period _rolloverPeriod; private Bytes _rolloverSize; public void setDir(Path dir) { _dir = dir; } Path getDir() { return _dir; } public void setRolloverCount(int count) { _rolloverCount = count; } public void setRolloverPeriod(Period period) { _rolloverPeriod = period; } public void setRolloverSize(Bytes size) { _rolloverSize = size; } /** * Initialize a log with the watchdog-log parameters * * @param log the log to initialize */ void logInit(RotateStream stream) { AbstractRolloverLog log = stream.getRolloverLog(); if (_rolloverCount != null) log.setRolloverCount(_rolloverCount); if (_rolloverPeriod != null) log.setRolloverPeriod(_rolloverPeriod); if (_rolloverSize != null) log.setRolloverSize(_rolloverSize); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?