WARの配備
配備名とURL、ホットデプロイ、Kohaku固有の記述子を理解し、更新時の挙動を確認します。
アプリケーションを置く
以下は配布ディレクトリを作業場所とします。/path/to/hello.war を実際のWARへ置き換えます。ホットデプロイを有効にしない場合は、停止中に配置してから起動してください。
cp /path/to/hello.war webapps/hello.war
bin/kohaku.sh run| 配置 | コンテキストパス | 確認URL |
|---|---|---|
| webapps/hello.war | /hello | http://127.0.0.1:8080/hello/ |
| webapps/hello/ | /hello | http://127.0.0.1:8080/hello/ |
| webapps/ROOT.war または ROOT/ | 空文字(ルート) | http://127.0.0.1:8080/ |
大文字の ROOT が特別扱いされます。同名ディレクトリとWARがあればディレクトリが優先されます。# を使ったネストパス表記は対応しません。標準 web.xml の <default-context-path> があれば、ファイル名由来のパスより優先されます。
ホットデプロイを有効にする
hotdeploy:
enabled: true
intervalMillis: 3000設定変更後にプロセスを再起動します。監視はポーリングです。新規アプリを追加すると配備され、配備元が消えると撤去されます。WARのmtimeまたはサイズが変わると、旧版を撤去してから新版を配備します。
cp /path/to/new-hello.war temp/hello.war.upload
mv temp/hello.war.upload webapps/hello.war
curl -i http://127.0.0.1:8080/hello/同一ファイルシステム上でコピー完了後にrenameすれば、監視が書込み途中のWARを読むことを避けられます。更新版のmtimeかサイズが変わることを確認します。mtime・サイズが同じ内容変更は検出されません。ログと実際のアプリ応答で完了を確認してください。
WEB-INF/kohaku-web.xml
任意のKohaku固有記述子です。サーバ全体の設定ではありません。配布物の conf/examples/kohaku-web.xml を参考に、WAR内の WEB-INF/kohaku-web.xml に置きます。
<?xml version="1.0" encoding="UTF-8"?>
<kohaku-web xmlns="urn:kohaku:web" version="1.0">
<canonical-authority>app.example.invalid</canonical-authority>
</kohaku-web>app.example.invalid は公開名へ置き換えるか、要素ごと削除してください。正規authorityは生成URLとFORMログインOrigin検査に使います。
| 要素 | 既定・用途 |
|---|---|
| canonical-authority | webapp個別の正規authority。server.yamlより優先。host[:port]形式 |
| data-source name="jdbc/app" | webapp専用の非XA JDBCプール。設定例 |
| allow-raw-thread-transactions | false。アプリが作る生スレッドからのUserTransaction利用に対する移行用オプトイン |
| allow-raw-thread-transactions-during-server-stop | false。停止中の互換オプトイン。前の要素もtrueが必要。hot undeployには効かず、停止がハングし得る |
配備失敗と作業領域
一つのwebappの配備失敗は隔離され、他のwebappは起動できます。サーバが起動したことだけで全アプリが正常とは判断できません。WARは temp/<name>/g0000000001 のような世代ディレクトリへ展開されます。回収できない実行や接続がある場合はクラスローダと展開領域が検疫(quarantine)状態で残り得ます。稼働中に作業領域を手動削除しないでください。