Jetty Tips

最小構成

  1. jetty-[jetty version].jar
  2. jetty-util-[jetty version].jar
  3. servlet-api-[servlet api version]-[jetty version].jar

コマンドラインからの起動

起動方法

  1. Jettyにあらかじめ用意されている、start.jarを使用すると簡単に起動できます。
    java -jar start.jar 設定ファイル名
    
    

    設定ファイル例

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
    <Configure id="Server" class="org.mortbay.jetty.Server">
    
        <Set name="ThreadPool">
          <New class="org.mortbay.thread.BoundedThreadPool">
            <Set name="minThreads">10</Set>
            <Set name="maxThreads">250</Set>
            <Set name="lowThreads">25</Set>
          </New>
        </Set>
    
        <Call name="addConnector">
          <Arg>
              <New class="org.mortbay.jetty.nio.SelectChannelConnector">
                <Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
                <Set name="maxIdleTime">30000</Set>
                <Set name="Acceptors">2</Set>
                <Set name="statsOn">false</Set>
                <Set name="confidentialPort">8443</Set>
                <Set name="lowResourcesConnections">5000</Set>
                <Set name="lowResourcesMaxIdleTime">5000</Set>
              </New>
          </Arg>
        </Call>
    
        <Set name="handler">
          <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
            <Set name="handlers">
             <Array type="org.mortbay.jetty.Handler">
               <Item>
                 <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
               </Item>
               <Item>
                 <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
               </Item>
               <Item>
                 <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
               </Item>
             </Array>
            </Set>
          </New>
        </Set>
        
        <Call name="addLifeCycle">
          <Arg>
            <New class="org.mortbay.jetty.deployer.ContextDeployer">
              <Set name="contexts"><Ref id="Contexts"/></Set>
              <Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
              <Set name="scanInterval">1</Set>
            </New>
          </Arg>
        </Call>
    
        <Set name="UserRealms">
          <Array type="org.mortbay.jetty.security.UserRealm">
            <!--
            <Item>
              <New class="org.mortbay.jetty.security.HashUserRealm">
                <Set name="name">Test Realm</Set>
                <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
              </New>
            </Item>
            -->
          </Array>
        </Set>
    
        <Ref id="RequestLog">
          <Set name="requestLog">
            <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
              <Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
              <Set name="filenameDateFormat">yyyy_MM_dd</Set>
              <Set name="retainDays">90</Set>
              <Set name="append">true</Set>
              <Set name="extended">true</Set>
              <Set name="logCookies">false</Set>
              <Set name="LogTimeZone">GMT</Set>
            </New>
          </Set>
        </Ref>
    
        <Set name="stopAtShutdown">true</Set>
        <Set name="sendServerVersion">true</Set>
        <Set name="sendDateHeader">true</Set>
        <Set name="gracefulShutdown">1000</Set>
    
    </Configure>
    
    

停止方法

  1. コマンドライン上で、CTRL+Cを押下します。
  2. 起動時に停止用パラメータを指定しておけば、停止用コマンドを実行することで停止できます。

    停止用パラメータを指定した起動コマンド

    java -DSTOP.PORT=8079 -DSTOP.KEY=停止パスワード -jar start.jar 設定ファイル名
    
    

    上記コマンドで起動した場合の停止コマンド

    java -DSTOP.PORT=8079 -DSTOP.KEY=停止パスワード -jar start.jar --stop
    
    

Javaからの起動

  1. org.mortbay.jetty.Server クラスのstartメソッドを実行することで、Jettyを起動できます。

    サンプルソース

    import org.mortbay.jetty.Connector;
    import org.mortbay.jetty.Server;
    import org.mortbay.jetty.nio.SelectChannelConnector;
    import org.mortbay.jetty.servlet.ServletHandler;
    
    public class SampleServer extends HttpServlet {
    
            static Server server = null;
            static boolean isStop = false;
    
            public static void main(String[] args) throws Exception {
                    
                    server = new Server();
                    Connector connector = new SelectChannelConnector();
                    connector.setPort(8085);
                    server.addConnector(connector);
                    
                    ServletHandler handler = new ServletHandler();
                    
                    // サーブレットクラスのマッピング
                    handler.addServletWithMapping(sample.test.servlet.SampleTestServlet.class, "/sampleservlet/*");
                    
                    server.addHandler(handler);
                    
                    server.start();
                    server.join();
            }
            
            public static void stop() {
                    if (server != null) {
                            try {
                                    server.stop();
                            } catch (Exception e) {
                                    e.printStackTrace();
                            }
                    }
            }
    
    }