Jetty のパラメータをコマンド引数で受け取れるようにした。
CLIのインタフェースが以前使ったときに比べて少し変わっていた。
以前は、OptionBuilder? というオブジェクトで、コマンド引数を定義していたが、新しい CLI では次のとおり

https://github.com/kagyuu/JettyExam/blob/master/src/main/java/com/example/jetty/Main.java

package com.example.jetty;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;

/**
 * Startup class for Jetty Web Server.
 *
 * @author atsushihondoh
 */
@Slf4j
public class Main {

    private static final String ARG_PORT = "p";
    private static final String ARG_HELP = "h";
    private static final String ARG_SHUTDOWN_TOKEN = "t";
    
    private static final String DEFAULT_PORT = "8080";
    private static final String DEFAULT_SHUTDOWN_TOKEN = "admin";
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // ---------- 1. Definitions of command arguments ----------
        Options options = new Options();

        // Command Option "p" (port number)
        Option srcOption = Option.builder(ARG_PORT)
                .longOpt("port")
                .hasArg()
                .required(false)
                .argName("PORT")
                .desc(String.format("default : %s", DEFAULT_PORT))
                .build();

        options.addOption(srcOption);

        // Command Option "t" (shutport token)
        Option tokenOption = Option.builder(ARG_SHUTDOWN_TOKEN)
                .longOpt("token")
                .hasArg()
                .required(false)
                .argName("SHUTDOWN TOKEN")
                .desc(String.format("default : %s", DEFAULT_SHUTDOWN_TOKEN))
                .build();

        options.addOption(tokenOption);

        
        // Command Option "h" (help)
        Option helpOption = Option.builder(ARG_HELP)
                .longOpt("help")
                .argName("help")
                .desc("Show this help")
                .build();

        options.addOption(helpOption);

        // ---------- 2. Check Command Argument ----------
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd;
        try {
            cmd = parser.parse(options, args);
        } catch (org.apache.commons.cli.ParseException ex) {
            // If there are some errors in the argument, show help and end.
            HelpFormatter help = new HelpFormatter();
            help.printHelp(Main.class.getName(), options, true);
            return;
        }

        if (cmd.hasOption(ARG_HELP)) {
            // show help and end.
            HelpFormatter help = new HelpFormatter();
            help.printHelp(Main.class.getName(), options, true);
            return;
        }

        // ---------- 3.Read the command argument ----------        
        MyServer myserver = new MyServer();
        myserver.setPort(Integer.parseInt(cmd.getOptionValue(ARG_PORT, DEFAULT_PORT)));
        myserver.setShutdownToken(cmd.getOptionValue(ARG_SHUTDOWN_TOKEN, DEFAULT_SHUTDOWN_TOKEN));
        
        Thread th = new Thread(myserver);
        th.start();
        
        Thread sh = new Thread(()->{
            myserver.stop();
        });
            
        Runtime.getRuntime().addShutdownHook(sh);
    }
}


Java#Jetty


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2020-02-10 (月) 01:10:50 (1762d)
Short-URL: http://at-sushi.com/pukiwiki/index.php?cmd=s&k=49289f45e8
ISBN10
ISBN13
9784061426061