jetty で静的コンテンツを有効にして起動するまで
index.html とかホストしたいだけなんですけど、意外に苦労したのでメモ。
Jetty Ecripse Downloads から stable-8 をダウンロード。(9 がまだ RC だったおので、念のため)
~/dev/sdks/jetty-8.1.9
にしてみました。
$ cd ~/dev/sdks/jetty-8.1.9
$ java -jar start.jar
http://localhost:8080 にアクセス。
動いた、ふむふむ。
'htdocs' にしました。
$ cd ~/dev/sdks/jetty-8.1.9
$ mkdir htdocs
適当な HTML を htdocs に入れる。
//~/dev/sdks/jetty-8.1.9/htdocs/index.html
<!DOCTYPE html>
<html lang="ja">
<body>
<H1>Hello World!</H1>
</body>
</html>
etc/jetty.xml
をコピーして、etc/jetty_static.xml
とか適当な名前にする。
handler の設定のところに ResourceHandler のブロックを入れる
//jetty_static.xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<!-- =============================================================== -->
<!-- Configure the Jetty Server -->
<!-- -->
<!-- Documentation of this file format can be found at: -->
<!-- http://wiki.eclipse.org/Jetty/Reference/jetty.xml_syntax -->
<!-- -->
<!-- Additional configuration files are available in $JETTY_HOME/etc -->
<!-- and can be mixed in. For example: -->
<!-- java -jar start.jar etc/jetty-ssl.xml -->
<!-- -->
<!-- See start.ini file for the default configuraton files -->
<!-- =============================================================== -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- =========================================================== -->
<!-- Server Thread Pool -->
<!-- =========================================================== -->
<Set name="ThreadPool">
<!-- Default queued blocking threadpool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
<Set name="maxThreads">200</Set>
<Set name="detailedDump">false</Set>
</New>
</Set>
<!-- =========================================================== -->
<!-- Set connectors -->
<!-- =========================================================== -->
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8080"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">20000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<!-- =========================================================== -->
<!-- Set handler Collection Structure -->
<!-- =========================================================== -->
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<!-- ここから -->
<Item>
<New class="org.eclipse.jetty.server.handler.ResourceHandler">
<Set name="resourceBase"><Property name="files.base" default="./htdocs"/></Set>
</New>
</Item>
<!-- ここまで -->
<!-- よくわからないのでコメントアウトしてみた
<Item>
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item> -->
</Array>
</Set>
</New>
</Set>
<!-- =========================================================== -->
<!-- extra options -->
<!-- =========================================================== -->
<Set name="stopAtShutdown">true</Set>
<Set name="sendServerVersion">true</Set>
<Set name="sendDateHeader">true</Set>
<Set name="gracefulShutdown">1000</Set>
<Set name="dumpAfterStart">false</Set>
<Set name="dumpBeforeStop">false</Set>
</Configure>
$ cd ~/dev/sdks/jetty-8.1.9
$ java -jar start.jar --ini etc/jetty_static.xml
--ini は不要な気もするのだけど、付けないとエラーになっちゃった。
これで、 http://localhost:8080 にアクセスすると、さっきつくった Hello World が表示されるはず。