0

異なる戻り文字列で Jetty サーバーを起動および停止するための GUI インターフェイスを作成しようとしています。現在、開始ボタンと停止ボタンをプログラムしており、「Hello World」を localhost:8080 に返します。私のコードは以下に掲載されています。はい、インポートがあり、単純化するために削除されています。

public class JettyGUI extends AbstractHandler{

private static Server server = new Server(8080);
private static boolean running = false;

private static void gui() {

    JFrame frame = new JFrame("Jetty");
    JButton start_button = new JButton("Start");
    JButton stop_button = new JButton("Stop");
    JPanel panel = new JPanel();

    panel.setBackground(Color.BLACK);

    panel.add(start_button);
    panel.add(stop_button);

    frame.add(panel);

    frame.setSize(300, 150);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

    start_button.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            System.out.println("Start pressed.");
            startServer();
        }
    });
    stop_button.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            System.out.println("Stop pressed.");
            JettyGUI.stopServer();
        }
    });

}


private static void stopServer() {
    if(running == false){
        System.err.println("Server is already running!");
    }
    else{
        try {
            server.stop();
        } 
        catch (Exception ex) {
            System.out.println(ex);
        }
    }
    System.out.println("Server stopped!");
}

private static void startServer() {
    if(running == true){
        System.err.println("Server is already running!");
    }
    else{
        try{
            server.setHandler(new JettyGUI());
            server.start();
            server.join();
        }
        catch(Exception ex){
            System.out.println(ex);
        }
      System.out.println("Server started!");  
    }
}

    public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

    response.setContentType("text;charset=utf-8");
    response.setStatus(HttpServletResponse.SC_OK);
    baseRequest.setHandled(true);
    response.getWriter().println("Hello World!"); //print this text

}

public static void main(String[] args) {

    gui();

}

}

「開始」ボタンを押すと、Jetty API がアプリケーションを引き継ぐようで、「停止」ボタンを押すことができなくなりました。これをナビゲートする方法や、これを別の方法でプログラムする方法を教えてもらえますか?

ありがとう!:) -ヘンリー・ハリス

4

1 に答える 1

0

server.join();サーバーが停止するまで現在のスレッドを待機させます。

必要のない GUI プログラムとしてコメントアウトします。

于 2013-02-04T21:18:56.067 に答える