⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitor.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
// ========================================================================// Copyright 2003-2005 Mort Bay Consulting Pty. Ltd.// ------------------------------------------------------------------------// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.// ========================================================================package org.mortbay.start;import java.io.InputStreamReader;import java.io.LineNumberReader;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;/*-------------------------------------------*//** Monitor thread. * This thread listens on the port specified by the STOP.PORT system parameter * (defaults to -1 for not listening) for request authenticated with the key given by the STOP.KEY * system parameter (defaults to "mortbay") for admin requests.  * <p> * If the stop port is set to zero, then a random port is assigned and the port number * is printed to stdout. * <p> * Commands "stop" and * "status" are currently supported. * */public class Monitor extends Thread{    private int _port = Integer.getInteger("STOP.PORT", -1).intValue();    private String _key = System.getProperty("STOP.KEY", null);    ServerSocket _socket;        Monitor()    {        try        {            if(_port<0)                return;            setDaemon(true);	    setName("StopMonitor");            _socket=new ServerSocket(_port,1,InetAddress.getByName("127.0.0.1"));            if (_port==0)            {                _port=_socket.getLocalPort();                System.out.println(_port);            }                        if (_key==null)            {                _key=Long.toString((long)(Long.MAX_VALUE*Math.random()+this.hashCode()+System.currentTimeMillis()),36);                System.out.println("-DSTOP.KEY="+_key);            }        }        catch(Exception e)        {            if (Main._debug)                e.printStackTrace();            else                System.err.println(e.toString());        }        if (_socket!=null)            this.start();        else            System.err.println("WARN: Not listening on monitor port: "+_port);    }        public void run()    {        while (true)        {            Socket socket=null;            try{                socket=_socket.accept();                                LineNumberReader lin=                    new LineNumberReader(new InputStreamReader(socket.getInputStream()));                String key=lin.readLine();                if (!_key.equals(key))                    continue;                                String cmd=lin.readLine();                if (Main._debug) System.err.println("command="+cmd);                if ("stop".equals(cmd))                {                    try {socket.close();}catch(Exception e){e.printStackTrace();}                    try {_socket.close();}catch(Exception e){e.printStackTrace();}                    System.exit(0);                }                else if ("status".equals(cmd))                {                    socket.getOutputStream().write("OK\r\n".getBytes());                    socket.getOutputStream().flush();                }            }            catch(Exception e)            {                if (Main._debug)                    e.printStackTrace();                else                    System.err.println(e.toString());            }            finally            {                if (socket!=null)                {                    try{socket.close();}catch(Exception e){}                }                socket=null;            }        }    }    /** Start a Monitor.     * This static method starts a monitor that listens for admin requests.     */    public static void monitor()    {        new Monitor();    } }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -