wrapper.startup.timeout プロパティ

対応バージョン :1.0.0
対応エディション :プロフェッショナル版スタンダード版コミュニティー版
対応プラットフォーム :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

警告

このプロパティの説明を読まずに、パラメータを変更することは絶対にしないで下さい。 設定を間違えると、期待どおりに動作せず、Wrapperの動作不良や不具合の原因となります。

このプロパティには、WrapperがJVMプロセスを起動してから、 WrapperのJVM側が「アプリケーションのスタートアップが確立した」と応答を返すまでのWrapperの待機時間(秒数)を設定します。 プロパティ値を「0 (ゼロ)」に設定すると、タイムアウト(時間切れ)は発生しません。

デフォルト値は「30秒」です。

設定例:(デフォルト値30秒)
wrapper.startup.timeout=30

問題?

もし、アプリケーションのスタートアップ時に、タイムアウト問題に遭遇した場合には、 ほとんどのよくあるケースでは、コンフィギュレーションの設定ミスです。 どうぞ、WrapperManagerが本当に起動しているか、確かめてください。 Wrapperを起動したときに、コンソールに、下記の出力が見えるはずですので、確認してください。

Wrapper  | --> Wrapperがコンソールとして開始しました
wrapper  | Java Service Wrapper Professional Edition 64-bit 3.x.x
wrapper  |   Copyright (C) 1999-2010 Tanuki Software, Ltd.  All Rights Reserved.
wrapper  |     http://wrapper.tanukisoftware.org
wrapper  |   Acme, Inc. へライセンスを割り当て
wrapper  |
wrapper  | JVM起動中...
jvm 1    | WrapperManager: 初期化中...

もし、Wrapperバージョン表示が見えていない場合、 WrapperManagerが起動していません。 『インテグレーション方法の概要』を熟読して、 正しいコンフィギュレーションの設定を確認してください。 もし、コンフィギュレーションが正しいならば、デバッグのログ出力を有効にして、問題を追究してください。

Wrapperバージョン表示が見える場合で、 Wrapperがまだスタートアップ時にタイムアウトを起こす場合には、1つか2つの理由が考えられます。

1つ目の可能性は、スタートメソッドの呼び出しが返されていない、ということ。 これは、もし、アプリケーションの起動に、 WrapperSimpleAppWrapperStartStopAppWrapperJarAppクラス を使っているならば、問題が起きるはずがありません。 もし、WrapperListenerを実装しているならば、 [start]メソッドが本当に応答を返しているのか確かめてください。 デバッグ出力が有効な状態で、これが見えるはずです。

2つ目の可能性は、アプリケーションのスタートアップメソッドが確立するまでに単に時間を要している、ということ。 この場合、デフォルトのスタートアップのタイムアウト時間を延長することが必要かもしれません。 タイムアウトを300秒(5分)で試してみてください。

アプリケーションの起動に高い信用性を確保するために、十分に長い時間の値を選ぶのが一番ですが、 実際のJVMハングアップのイベント時に、Wrapperができるだけ素早く反応するくらいの短い長さで十分です。

WrapperManager.signalStarting(n) :

もしスタートアップの手順に、時々、長い時間を要する場合、 長めのタイムアウトを設定する手法ではなく、1つの代替え案として、 [WrapperManager.signalStarting(n)] メソッドを定期的に呼び出します。 この手法により、Wrapperへ「JVMが生きている」 「アプリケーションのスタートアップがうまく進んでいる」ことを報告しながら、 アプリケーションの正常な動作を確信することができます。 ただし、そのレポート回数分だけ、たくさん呼び出すことになるため、 アプリケーションのスタートアップに要する時間数がさらに長くなると思われます。

警告

この機能が有効中の場合、 このプロパティ値を「0 (ゼロ)」(=タイムアウト無効)か、あるいは「ある程度の大きい値」に設定すると、 スタートアップ段階で、JVMハングアップを検知するWrapperの機能が無効になる、 という意味になるので注意してください。

スタートアップ失敗 :

もし[wrapper.java.mainclass]プロパティ で設定されたメインクラスがWrapperの[WrapperManager]クラスを正しく初期化できない場合、 たとえアプリケーションが開始したように見えても、次のメッセージが表示され、スタートアップに失敗します。

------------------------------------------------------------------------
アドバイス:
Wrapperは、起動するJVM内部で動作するクラスのセット同様に、
ネイティブコンポーネントを構成しています。
JVMが起動したり、Wrapperがタイムアウトになる後に、実際のところ
WrapperのJavaコンポーネントは、即に初期化されなければなりません。
Wrapperのコンフィギュレーションファイルで指定されたメインクラスは、
ほとんどの場合、Wrapperクラスを正しく初期化していません:
        com.myapp.Main
手動で操作が可能なところでは、Wrapperはヘルパークラスを同梱しており、
それでこの初期化プロセスを自動的に行っています。
Wrapperの説明でインテグレーションセクションをご覧ください、
Wrapper内部で、アプリケーションを起動するために採用される
様々な方法を紹介しています:
        http://wrapper.tanukisoftware.org/doc/english/integrate.html
------------------------------------------------------------------------

メッセージで示されているとおり、これはコンフィギュレーション問題によるものであり、 「インテグレーション方法」の指示に従えば解決することができます。

警告

wrapper.java.detect_debug_jvm] プロパティを「TRUE」に設定して「デバッガー検知」が有効中、このタイムアウトプロパティは無視されます。

参照: タイムアウト(時間切れ)

参照: 再起動/スタートアップ