Manual / WARの配備2026.10.14 · ユーザーマニュアル
CHAPTER 02 / KOHAKU

WARの配備

配備名とURL、ホットデプロイ、Kohaku固有の記述子を理解し、更新時の挙動を確認します。

アプリケーションを置く

以下は配布ディレクトリを作業場所とします。/path/to/hello.war を実際のWARへ置き換えます。ホットデプロイを有効にしない場合は、停止中に配置してから起動してください。

WARを配置
cp /path/to/hello.war webapps/hello.war
bin/kohaku.sh run
配備名から導かれるURL
配置コンテキストパス確認URL
webapps/hello.war/hellohttp://127.0.0.1:8080/hello/
webapps/hello//hellohttp://127.0.0.1:8080/hello/
webapps/ROOT.war または ROOT/空文字(ルート)http://127.0.0.1:8080/

大文字の ROOT が特別扱いされます。同名ディレクトリとWARがあればディレクトリが優先されます。# を使ったネストパス表記は対応しません。標準 web.xml の <default-context-path> があれば、ファイル名由来のパスより優先されます。

ホットデプロイを有効にする

conf/server.yaml に追加
hotdeploy:
  enabled: true
  intervalMillis: 3000

設定変更後にプロセスを再起動します。監視はポーリングです。新規アプリを追加すると配備され、配備元が消えると撤去されます。WARのmtimeまたはサイズが変わると、旧版を撤去してから新版を配備します。

起動中のWAR更新 — コピー完了後にrename
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-authoritywebapp個別の正規authority。server.yamlより優先。host[:port]形式
data-source name="jdbc/app"webapp専用の非XA JDBCプール。設定例
allow-raw-thread-transactionsfalse。アプリが作る生スレッドからのUserTransaction利用に対する移行用オプトイン
allow-raw-thread-transactions-during-server-stopfalse。停止中の互換オプトイン。前の要素もtrueが必要。hot undeployには効かず、停止がハングし得る

配備失敗と作業領域

一つのwebappの配備失敗は隔離され、他のwebappは起動できます。サーバが起動したことだけで全アプリが正常とは判断できません。WARは temp/<name>/g0000000001 のような世代ディレクトリへ展開されます。回収できない実行や接続がある場合はクラスローダと展開領域が検疫(quarantine)状態で残り得ます。稼働中に作業領域を手動削除しないでください。