たぶん GlassFish も同じ。
普通に再デプロイしたらセッションは破棄されるので、 @SessionScoped
なインスタンスも破棄される。
開発中は頻繁に再デプロイするので、毎回破棄されると色々面倒。
Eclispe や NetBeans のプラグイン経由でデプロイしている場合は、この辺は勝手にやってくれてるっぽい。
Payara
4.1.1.163
コマンドラインで再デプロイ
> asadmin redeploy --name <アプリ名> --keepstate=true <デプロイするwarのパス>
--keepstate
オプションに true
を指定する
ヘルプ(asadmin redeploy --help
)によると、利用できる条件がいくつかあるっぽい。
This option is supported only on the default server instance, named server. It is not supported and ignored for any other target.
(訳)
このオプションは、デフォルトのserver
と名付けられたサーバーインスタンスでのみサポートされます。他のターゲットでは、無視されサポートされません
あくまで開発時用の便利機能的な感じか。
管理コンソールから再デプロイ
- メニューの [Applications] を選択
- 再デプロイしたいアプリの [Action] -> [Redeploy] を選択(一番右の方)
- [Keep State] のチェックを ON にして再デプロイする
Gradle から再デプロイ
自分は次のようなタスクを定義して、 Gradle 経由で再デプロイしてる。
build.gradle
task deploy(type: Exec, dependsOn: war) {
def payaraHome = System.env.PAYARA_HOME
def asadmin = /$payaraHome\bin\asadmin.bat/
commandLine('cmd', '/C', asadmin, 'redeploy', '--name', war.baseName, '--keepstate=true', war.archivePath)
}
※環境変数 PAYARA_HOME
に開発中の Payara のインストールディレクトリを設定している。
※Windows の場合です