java如何监听一个端口

我想用java监听weblogic服务的7001端口,如果发现weblogic的这个端口停止了,就启动它,怎么做!

要求: 一是用java代码怎么判断一个weblogic程序是否在运行
二是怎么用java代码启动一个固定端口weblogic服务
三是这个小程序在服务器上一直处于运行状态
高分求教!

我的想法是把weblogic安装为window的服务,然后通过“net”命令来启动或停止,而判断weblogic启动或停止的方法就是采用一个Socket连接过去,如果连接异常就表示没有启动。下面是我针对Mysql做类似的工作:
[code="java"]
public class RunCommand {

public static void main(String[] args) throws Exception {
    boolean run = false;
    try {
        Socket socket = new Socket("localhost" , 3306);
        run = socket.isConnected();
    } catch (ConnectException e) {
        System.out.println("Mysql has stop");
    }

    if (run) {
        System.out.println("Mysql is running");
    } else {
        System.out.println("Start to MySQL");

        Runtime runtime = Runtime.getRuntime();
        Process p = runtime.exec("net start MySQL"); 
//      p.waitFor(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
        String line = reader.readLine(); 
        while(line!=null) { 
            System.out.println(line); 
            line=reader.readLine(); 
        } 
    }
}

}
[/code]

public class SocketDemo {

public static void main(String[] args) {

    /**服务重启开关 */
    final  RestartSwitch restartSwitch = new RestartSwitch();

    /**服务程序进程*/
    new ServerDemo(restartSwitch).start();

    /**重启执行进程*/
    new RstartExcuter(restartSwitch).start();
}

}

/**

  • 服务重启开关
    */
    class RestartSwitch {
    boolean isRestart;

    /** 打开重新启动 */
    public void onRestart() {
    isRestart = true;
    }

    /** 关闭重新启动 */
    public void offRestart() {
    isRestart = false;
    }

    /** 是否要重启起服务 true 重启 false 不重启 */
    public boolean isRestart() {
    return isRestart;
    }
    }

/**

  • 模拟服务程序
  • 根据服务运行状态,设置开关的开关状态
    /
    class ServerDemo extends Thread {
    /
    * 重启开关 */
    final RestartSwitch restart;

    private ServerSocket server= null;
    private Socket client = null;
    private int port = 7001;

    /**@param restart服务开关*/
    public ServerDemo(RestartSwitch restart) {
    this.restart = restart;
    }

    public void run() {

    try {
        restart.offRestart();//服务启动,关闭开关
    
        server = new ServerSocket(port);
        client = server.accept();
        // TODO 处理连接进来的client
    
    } catch (IOException e) {
        e.printStackTrace();
    }finally{//关闭资源
        if(null != server){
            try {
                server.close();
            } catch (IOException e) {
            }
        }
        if(null!=client){
            try {
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        restart.onRestart();//服务关闭,关闭开关
    }
    

    }
    }

/**

  • 服务守护进程
  • 根据开关来判断是否要重启服务
    /
    class RstartExcuter extends Thread {
    /
    * 重启开关 */
    final RestartSwitch restart;

    /**@param restart服务开关*/
    public RstartExcuter(RestartSwitch restart) {
    this.restart = restart;
    }

    @Override
    public void run() {
    while (true) {
    if (restart.isRestart()) {
    new ServerDemo(restart).start();
    }
    }
    }
    }

有问题,发邮件zkf53064@163.com

这个还有些问题,不好意思中我再研究下给你

直接编写一个shell脚本来监视好了。

给出来看看么?

问题是,可以重启,但服务重启次数据不对
还有这个程序是在服务器端临听的确良
不知道lz能不能改那个服务程序的代码,