World Map
Java Service Wrapperは、御社Javaアプリケーション製品の安定した信頼性を高める最短最善の方法です。
  • Free Trial
  • Buy Now
リリースノート

インデックス

バージョン3.5.24: 改訂内容

バージョン3.5.23: 改訂内容

バージョン3.5.22: 改訂内容

バージョン3.5.21: 改訂内容

バージョン3.5.20: 改訂内容

バージョン3.5.19: 改訂内容

バージョン3.5.18: 改訂内容

バージョン3.5.17: 改訂内容

バージョン3.5.16: 改訂内容

バージョン3.5.15: 改訂内容

  • Windows上のWrapper専用コマンド・バッチファイルを利用できる設定 _WRAPPER_CONF_OVERRIDE を新しく追加しました。 これで、最初のパラメータがコンフィギュレーション・ファイル名であるかどうか、 コントロール指定が可能になりました。 JVMへ他のパラメータを引き渡したいユーザーを混乱させないように、 現在のデフォルトでは、代替えコンフィギュレーション・ファイルを指定する設定は無効になっています。

  • WrapperManager クラスのコンソール・ログ・メッセージを訂正しました。 正しい識別プリフィックスが不足していました。

  • Java 1.2.xサポート用に必要だったコードをいくつか削除しました。 3.4.0からは、Java 1.4が必要要件です。

  • Javaからバックエンド・ソケット再接続を試みるコードをいくつか削除しました。 JVMを再起動せずに、そうすることが可能になることはありませんが、 関連のメッセージで誤解を招くことがありました。

  • wrapper.disable_forced_shutdown プロパティを新しく追加しました。これで、[CTRL]+[C]キー操作が2回押されたとき、 シャットダウン時にJVMを強制的に落とす機能を無効にすることが可能です。

  • スタートアップやシャットダウン・プロセスを簡素化するために、 WrapperManager クラス内で、スレッド優先順位を変更する回数を減らしました。

  • 中ぶらりんのポインター(解放済みのメモリー領域を指している中途半端なポインタ)の問題を修正。 プロパティに未定義の環境変数を含まれるときに、未定義の動作を起こすことがありました。

  • タイマー・スレッドで競合状態を修正。 タイマー・スレッドではなく、プロセス・グループ全体に、 「sigkill」シグナルが伝わってしまうことがありました。 これが発生することがあるのは、Wrapperシャットダウン中のときだけです。

  • WrapperManager.exec()によって起動されたチャイルド・プロセスが、 ランタイム・エラー(特権の不足など)によりスタートに失敗したとき、 forkされたヒープが存続して、JVMシャットダウン/再起動されるまで、チャイルド・プロセスが終了しませんでした。 このエラーは、UNIXプラットフォーム上で スタートタイプ「FORK_EXEC」を利用したときだけに発生します。

  • 認証チェックが問題を返してきた場合のログレベルとメッセージを変更。 その問題とは、Wrapperの署名が原因で直接的な原因ではなく、署名チェーンの問題です。

  • 問題を修正。 コマンドが非昇格コンソールから動作されたとき、Windows Vista (それより後続版)上で、 サイレント・クエリー・コマンドが正しい終了コードを返してきませんでした。 ご指摘くださいましたDarren氏へ感謝いたします。

  • タイムアウトを無制限に設定されないように、値が「0(ゼロ)」に設定された場合に、 Javaシステム・プロパティ「wrapper.backend.so_timeout」が 無視されていました。

  • wrapper.jvm.additional.auto_bits.<platform> プロパティを追加しました。 サポートされているプラットフォームごとに機能のON/OFFをできるようになりました。

  • スクリプトの問題を修正。 CPUが32ビット構造であっても、Mac OSX上で64ビット・バイナリの利用を試みていました。 この影響があるのは、Mac OSXバージョン10.5.0以上ですが、 ほとんどのマシンは既に64ビットCPUになっています。 ご指摘くださいましたRobin氏とIrina氏へ感謝いたします。

  • サービスとして動作中にコンソールを表示しようとすると、 そのコンソール出力が表示されず、黒い画面のままでした。 この問題を修正し、現在は全て出力されます。

  • Wrapperがコンフィギュレーション・ファイルをリロード(読み込み)する際に、 実際はスタックのメモリ外である機能のコール・スタックからのデータへアクセスを試みていました。 このアクセス違反が原因でセグメンテーションの失敗になる可能性がありました。 この問題は3.5.5に導入されましたものです。 この問題を報告してくださいましたLincolnへ感謝いたします。

バージョン3.5.14: 改訂内容

  • 「AppCommand.bat.in」ファイルの問題を修正しました。 Wrapperバイナリのファイル名の括弧が「PATH was unexpected at this time(パスが予想外です)」エラーを引き起こしていました。

  • (Standard / Professional Edition)

    Windows64ビット・プラットフォーム上でのWrapperローカライズ版を利用する際の問題を修正しました。 wrapper.langで異なる言語が指定されていても、 デフォルトのシステム言語が利用されることがありました。 これは3.5.12で導入されました。

  • Windowsの「AppCommand.bat.in」コマンドベースのバッチファイルの問題を修正しました。 使い方ヘルプの出力で「status」コマンドが「query」として表示され、正しく報告がされていませんでしたが、 この「status」コマンドを利用した際には常に正しく動作していました。

  • UNIXプラットフォーム上での問題を修正しました。 一部の非同期メッセージで、本来の意図とされたメッセージの代わりに、 警告メッセージ「Coding Error...」と表示されログに記録されていました。 この問題は、設定されたログファイルに 書き込みパーミッション(権限)がない場合に、見受けられるものでした。 不正なログメッセージ以外に問題はなく、Wrapperは正常に動作していました。 これは3.5.2で導入されました。

  • UNIXスクリプトの問題を修正しました。 RUN_AS_USERが設定されている場合、UPSTARTでの動作が正しく動作していませんでした。

  • UNIXシェルスクリプトに対して「status」コマンドを動作しているときの セキュリティ・チェックを緩和しました。 現在では、スクリプトを動かしているユーザーなら誰でも、 PIDファイルの読み専用チェックを実行することができます。

  • UNIXスクリプトの問題を修正しました。 アプリケーションがインストールされていなかった場合でも、 「remove」コマンドが動作しているアプリケーションの停止を試みていました。

  • wrapper.ntservice.accountプロパティが設定されていた際に、 Windows Serviceインストール中に、 潜在的にクラッシュを引き起こす可能性があるバッファ・オーバーフローを修正しました。 これは3.5.12で導入されました。

  • スタートアップ時に発生して潜在的にクラッシュを引き起こす可能性があるヒープ改変を修正しました。 システムイベントログを利用するWindowsシステムだけに影響がありました。 これはコードの見直しにより発見され、ユーザーから何も問題レポートはありませんでした。 wrapper.logに書き込まないように設定されていた場合でも、 Wrapperが常にイベントログへ書き出そうとするので、この問題が発生しました。 これは3.5.12で導入されました。

  • UNIXシェルスクリプトとWrapper間のバージョン比較チェックを新しく追加し、 バージョンに相違がある場合に警告を表示します。 このチェック機能は、シェルスクリプトとWrapperの両者のバージョン3.5.14以上のときだけに動作します。

  • 新しくwrapper.pidfile.strictプロパティを追加しました。 これで、既にPIDファイルが存在する場合に他のWrapperプロセスを開始しません。 デフォルトでは、逆互換性の都合のためFALSEになっています。

  • 読み書きのタイムアウトの場合に、バックエンド・ソケットのJava側にもっと柔軟性をつけました。 デフォルトで、バックエンド・ソケットにはタイムアウトのセットがないため、 これは問題になることはないはずですが、数名のユーザーからレポートをいただき、 特定のシステム上での問題を報告いただきましたので解決しました。

  • バックエンド・ソケット・タイムアウトのテスト支援用に、新しく wrapper.backend.so_timeoutシステム・プロパティを追加しました。 タイムアウトを利用するバックエンド・ソケットの設定が可能です。 詳しくは、Javadocsの WrapperManager.exec() クラスをご覧ください。

バージョン3.5.13: 改訂内容

  • スクリプトのスペルミスを修正。 環境変数「TR_BIN」は実際には「TREXE」となるべきでした。 これによりUNIX上で「install」コマンドで失敗を引き起こしていました。 これは3.5.12で導入されました。

  • クラッシュへ導く可能性がるヒープ破損を修正。 最初のログで2048字長を超える場合、バッファが拡大し、 次のログで1024字超を超えた場合、さらにバッファが拡大し、 結果としてヒープ問題が発生しました。 これは3.5.11で導入されました。 Bug #3423108.

バージョン3.5.12: 改訂内容

バージョン3.5.11: 改訂内容

  • バッファ・オーバーフローによるWindows上の内部クラッシュを修正。 これは3.5.0からの問題であり、 [wrapper.ntservice.dependency.<n>] プロパティで複数を定義しているコンフィギュレーションに影響があります。 メモリに何が残っているか次第ですが、これは常にクラッシュにつながるわけではありませんでした。 コンフィギュレーション・ファイルの設定で、再現可能な現象です。

  • Windows上での問題を修正。 WinVerifyTrust システム・コールでCRLをアップデートする問題があったため、 一部のシステムにおいてWrapper再起動に15秒以上の時間を要していました。 Wrapperバイナリが3.5.7で署名されるようになった以降の問題でした。 もし、WinVerifyTrustコールが[wrapper.startup_thread.timeout]プロパティで設定した時間よりも長くかかった場合、 Wrapperはその後遅延せずにスタートアップを継続します。

  • (Standard / Professional Edition)

    カスタマイズ中に、カスタマイズされたバイナリの証明書を確実に削除。 バイナリを他の証明書で再署名する問題があったため。

  • もし何かの理由で、Wrapperが設定されたログファイルに書き込めない場合、 常にデフォルトのログファイルへ戻し、その書き込み失敗メッセージをログに記録します。 もしデフォルトのログファイルへも失敗した場合には、それもログ記録に残しますが、 ほとんどの場合、メッセージはコンソールへのログ記録だけになるでしょう。 Wrapperを設定変更しましたので、 [wrapper.syslog.loglevel]プロパティの設定値に関わらず、 現在では、syslogやイベントログへメッセージを常に送信します。 これはログファイルへのアクセス問題の原因を追究するのに、とても役立つため重要なことです。

  • 3.5.0から、内部的に複数行のログメッセージ印字出力が可能になりました。 ログファイルの中で、全ての行が常にグループ化されます。 このバージョンでは、ログ処理コードを若干変更しましたので、 現在、UNIXのsyslogやWindowsイベントログで、複数行のログ出力が一つのメッセージとしてログ化されます。

  • 問題を修正。 JVMからのとても長い出力行でWrapperがハングアップしているように見えることがありました。 十数万文字を含む一行の出力が最初にログ化されると、 内部バッファが1サイクルごとに100文字単位で徐々に増加していきました。 現在、Wrapperでは、新しいバッファ・サイズを選ぶ必要があるサイクル数を大幅に減少させるために、 最後に確認したサイズをベースにサイズを増やします。

  • コマンドラインの [PAUSE_THREAD]オプションを変更。 現在、時間無制限で待機することが可能になりました。 これはWrapperをテストするのに便利に使えるでしょう。

  • コマンドラインに 新しく[PAUSE_LOGGER]オプションを追加。 これで、次のログ記録を一時停止することが可能になります。 これはWrapperをテストするのに便利に使えるでしょう。

  • UNIX上で、JVMとWrapper間のstdout/stderrパイプが 正しくキレイになっていませんでした。 これは結果として、小さなリークを引き起こしてましたが、大きな実害はありません。 現在では、パイプはキレイに、各JVMインスタンスごとに初期化されます。

  • 問題を修正。 システムが、ディスクへのI/O待ちが長く、負荷の高いI/O状態になっている場合に、 再起動リクエストがJVMから発信されたとき、WrapperがJVMの再起動に失敗することがありました。 これは、再起動リクエストを見逃して書き込みをブロックする、Wrapperのメインループを引き起こしていました。 これは、全てのプラットフォームに影響を及ぼすと思われます。 Windows上では、コンソールで出力フリーズを選択して、JVM内部から再起動リクエストを生成することで、 この問題を再現することができるはずです。

  • 新しく[WrapperPropertyUtil] ヘルパークラスを追加。これでJVM内部からWrapperプロパティ値へのアクセスが容易になります。

  • 一部のプラットフォーム上でのバグを修正。 strncpyシステム機能の誤用のため、Javaログ出力が壊れました。 この機能から、一部の実装がメモリコピーの上書きをサポートしていないという警告が出されます。 この問題は、出力の空ラインに続く行で、単一のLinuxテストマシン上だけで、再現することができました。 この問題は、3.4.0以降に存在しています。

バージョン3.5.10: 改訂内容

  • wrapper.jvm.port]プロパティに「0 (ゼロ)」を 設定すると、自身のバックエンド・ソケット用に、JVMに有効なポートを割り当てます。

  • コンフィギュレーション・プロパティ値のインテージャ値(整数値)に、数字以外の値が設定された場合、 ログファイルに警告メッセージを追加。 これまでのバージョンでは、数字以外の無効な値が入った場合でも、 Wrapperは警告を出さずに静かに無視をして、ゼロ値として取り扱っていました。 現在は、プロパティ値が無効な値の場合、デフォルト値を返します。 もしプロパティ値が有効な数字値として解釈できる場合、そのまま数字として解釈して利用され、 無効な文字が含まれている場合、トリム(切り落とし)して利用されます。 古いコンフィギュレーション値を利用しているユーザーに動作影響を出さないために、 後のバージョンで、この手法をそのまま採用しています。

  • もしコンフィギュレーション・プロパティのブール(boolean)値に、 TRUEFALSE以外の値が設定された場合、 ログファイルに警告メッセージを追加。 古いコンフィギュレーション値を利用しているユーザーに動作影響を出さないために、 ブール(boolean)値以外の無効な値が入った場合でも停止はせず、 FALSE値を返します。

  • もし[wrapper.on_exit.<n>]プロパティに 無効な値が指定された場合、警告メッセージを追加。

  • 新しく[wrapper.log.lf_delay.threshold]プロパティを追加。 これで、ラインフィード(改行)で完成するまでの、Javaログ出力の部分線のバッファ長をコントロールすることが可能になります もし、しきい値を超えた場合、部分線を完全な一行としてラインフィード(改行)が入り、ログ記録されます。 これまでの以前の全バージョンでは、この処理は1、2秒以内でしたが、現在このデフォルトでは500秒です。

  • (Standard / Professional Edition)

    カスタマイズ・オプション機能を利用して、 製造者のカスタマイズを可能にしました。

  • (Professional Edition)

    問題を修正。 WrapperManager.exec()で 起動されたチャイルド・プロセスをWindows上で停止させる際、 Wrapperが[CTRL]+[C]ではなく、 [CTRL]+[BREAK]シグナルをそのチャイルド・プロセスへ送信していました。 ほとんどのチャイルド・プロセスにとって、これは問題にはなりませんでしたが、 もし直接のチャイルド・プロセスがJVMであった場合、[CTRL]+[BREAK]シグナルにより、 終了するかJVMへ尋ねることなく、スレッドダンプを引き起こすトリガーになりました。 それにより、Wrapperはタイムアウトとなり、JVMチャイルド・プロセスを強制的に終了させることになりました。

  • (Standard / Professional Edition)

    wrapper.timezone]プロパティで設定された タイムゾーンICTがISTとして誤解釈していたバグを修正しました。

  • (Standard / Professional Edition)

    UNIXプラットフォームでの問題を修正。 [wrapper.timezone]プロパティのUTCオフセット値が 正しく解釈されていませんでした。これによりWrapperがオフセット値「UTC0000」を利用していました。

  • LinuxやAIXシステム上で、LANG環境変数の未設定についての警告メッセージを取り外しました。 システムのスタートアップ時、一部のシステムではLANG環境変数の設定に失敗します。 これは、Wrapperにとってそれほど問題ではありませんが、警告メッセージがユーザーを混乱させることになるので、 取り外すことにしました。

バージョン3.5.9: 改訂内容

  • (Standard / Professional Edition)

    Windows上での問題を修正。 ネットワーク・アダプタの名前に「PRO/1000」が含まれている場合、 「wrapper.exe -h」を実行した際に表示されるホストIDリストから、そのネットワーク・アダプタが除外されていました。 これは、3.5.7あるいは、それ以前のバージョン、または開発ライセンスキーによって報告された ホストID用に生成された既存サーバー・ライセンスキー・ファイルに影響はありませんでしたが、 ライセンス・ファイルがない状態でWrapperが開始されたとき、 「有効なホストIDが見つからない」とWrappreが報告していました。 これは、3.5.8で追加されたテスト・コードによって引き起こされており、そのコードを取り外し忘れていました。

  • 問題を修正。 JVMから継続的な出力が大量にログ化処理しているとき、 Wrapperが正しくメインループへコントロール調節を返していませんでした。 これは3.4.0で導入されました。3.5.8以前のバージョンでは、 この問題のためタイムアウトを引き起こして再起動する可能性がありました。 この特定の問題が解決されましたが、その同じ現象が発生している場合、 3.5.8でのWrapperプロセスは依然として応答を返さないものと思われます。 現在では、250ミリ秒の継続的なログ化処理後、Wrapperは常にメインループへ コントロール調節を返します。

  • 問題を修正。現在のユーザー・アプリケーションがコンソールへ大量の出力を書き出している場合、 WrapperManagerがデバッグ出力の書き出しの試みをブロックすることがありました。 極限の状況で言えば、このために「JVMがフリーズしている」とWrapperが判断してしまうことがありました。 これはデバッグ出力が有効になっている場合に発生する問題でした。

  • シェルスクリプトを再編成。 現在は再び、全てのエディションで同じスクリプトを利用するようになっています。

  • LinuxやAIXシステム上で、LANG環境変数を 設定していないという警告メッセージを取り外しました。 LANG環境変数の未設定はめったにありませんが、実際、問題はなく、警告がミスリードしていました。

バージョン3.5.8: 改訂内容

  • (Standard / Professional Edition)

    ユーザーのシステムにJuniper Network Connectネットワーク・アダプターが装備されているとき、 ホストID変更の問題を避けるために、3.5.5から、 Windows上で全てのホストID「00ff*」の利用を無効にしましたが、 Parallels環境で動作しているゲストOSも、このホストID範囲を利用しているため、 そのホストID無効では制限し過ぎてしまうことになりました。 現在、Wrapperではもっと注意深く、実際のJuniper Network ConnectホストIDだけを無効にしています。

  • (Standard / Professional Edition)

    WrapperがシステムのホストID(hostID)をロケールできないとき、ユーザーへ表示されるメッセージを改善。

  • SolarisでのWrapperスクリプトの問題を修正。 オプション「-F」がグレップで有効でありませんでした。

  • Wrapperデバッグ出力にWindows版の情報を追加しました。

  • wrapper.log.warning.threshold] プロパティを追加。これで、 Wrapperがログ・メッセージを記録するのに時間を要したことを検知すると、Wrapperが警告を表示します。 これは、負荷のかかったシステム上でI/Oの低速によって引き起こされた、 報告された問題をテストするために追加されました。

  • フィルター機能の問題を修正。 JVMが自ら即座に終了した場合、フィルター機能の「JVMへの再起動リクエスト」が無視されることがありました。 現在では、Wrapperはずっと一慣性を持ち、再起動がJVM内部からリクエストしたり、あるいは それらの終了リクエストよりもフィルター機能が常に優先されるようにしました。 外部からのシャットダウン・リクエストやその他のアクションからのリクエストは、 過去に実施したので、そのまま動作し、Wrapperシャットダウンを継続します。 また、もし未完了の再起動リクエストが温存されていた場合や、あるいは無視された場合、 Wrapperはデバッグ出力でメッセージをログ化します。

  • [AppCommand.bat]バッチ・ファイルでの問題を修正。 あるマルチバイト・システム・エンコードを持つ一部のWindowsプラットフォームで問題に遭遇する可能性がありました。 スクリプトが書き換え、疑わしい部分を簡素化しました。 このスクリプトの機能は温存されています。

  • コンフィギュレーション・プロパティで利用できる環境変数 [WRAPPER_CONF_DIR] を追加しました。 (機能リクエスト:#3160644)

  • RUN_AS_USERで指定された異なるユーザーとしてスクリプトを実行中に受信した正しい終了コードでスクリプトを終了させます。 (バグ・レポート:#3185281)

  • コード署名の認証に失敗した場合に、起こる可能性があるアクセス違反を修正。

  • バックエンド・ソケットが外部から強制的に閉じられている場合、エラーをログ化。 従来は、ログレベル・デバッグで、ログ化を実施していました。 そのメッセージは「既存の接続がリモートホストによって強制的に閉じられました。(0x2746)」 このメッセージがデバッグ出力が有効になっている場合だけログ化が実施されていましたので、 何も明確な説明もなく、JVMが再起動されることになりました。 ソケット閉鎖のソースは開発中です。

  • (Professional Edition)

    WrapperManager APIへJavaコール [fireUserEvent] を追加。 これで、フィルター機能のトリガーを利用せずにアクションや、 ユーザー定義のイベント・メールを発生させることが可能です、 このコールのセキュリティ・モデルについて、さらに詳しくは 「セキュリティ・モデル」ページをご覧ください。

  • Mac版で、設定されたJavaコマンドがユニバーサル・バイナリでなかった場合の警告を修正。 スクリプトが動作中に予想外の動作を避けるために、 [wrapper.java.command]が 直接、実行ファイルへ指しているか確認するチェック機能は3.4.0で追加されました。 メッセージは警告だけで、Wrapperはそのまま継続します。 現在では、ユニバーサル・バイナリ同様に、標準ppc, ppc_64, x86_64, i386, は全て、 警告なしに正常に動作します。

  • wrapper.*.umask]プロパティのデフォルト値は そのプロセスが持つ現在のumaskを利用するようになりました。 以前は、デフォルト値は常に「0022」でした。

  • 新しく[wrapper.backend.type]プロパティを追加。 これは、従来どおりソケットで、あるいは新しく外部パイプを利用するJVMと、 Wrapperが通信するコントロールに利用されます。 これは、まれなケースですが、一部のWindowsマシンではOSレベルでソケットを閉じていてるため、 その回避策として追加されました。 これは唯一Windows2003で見受けられた事例ですが、その他のWindowsバージョンでも同様にあり得ることです。

  • 新しく外部プロパティ[wrapper.use_javaio_thread]を追加。 これで、Wrapperが専用スレッドのJavaコンソール出力を取り扱うことができます。

  • 新しく [WrapperManager.isNativeLibraryOk()] メソッドを追加。これで、ユーザー定義コードを簡単にテストでき、 ネイティブ・ライブラリーがロード(読み込み)されたか、スタートアップ時に初期化されたか、確認できます。

  • wrapper.commandfile]プロパティに 新しく[PAUSE_THREAD]コマンドを追加。 これで、様々なスレッドのブロックやフリーズが発生した時のWrapper動作をテストすることが可能になります。 これは負荷が高く重いI/Oバウンド・サーバー上でシミュレートしたり問題の再現に使われます。

  • 一定の期間にWrapperがJVMへのpingに失敗した時、 WrapperのJava側の動作方法を改良しました。 従来は、JVMは再同期を取るために終了および再起動をしていましたが、 これはシステムに大きなI/Oバウンドの問題を引き起こしていました。 Wrapperがログファイルへ書き出しを試みる間しばらくシステム動作をブロックして、 その後にJVMが退出するなど、大きなI/Oバウンドがありました。 現在では、そのような状況下でもJVMが終了することはありません。 もしWrapperとのパイプやバックエンド・ソケットが依然として閉じている場合、 ほとんど即座にJVMが終了するため、JVMは決して孤立することはないでしょう。

  • 失敗モードをシミュレートするために利用される [WrapperManager.appearOrphan()] メソッドですが、もはやWrapperで可能ではないため、このメソッドを廃止します。

  • コード署名やタイムスタンプ認証などの認証エラーの取り扱い手法を変更しました。 現在では、バイナリや署名が不正な形式であったりの理由で、バイナリ署名の承認に成功しなかった場合、 (副署名の関わる問題が見つかった場合は例外です) Wrapperは自らシャットダウンをするだけです。 3.5.7から、WrapperのWindows版に署名がされています。 封鎖されたWindows2008システムを利用している一部のユーザーには、 そのシステム上でComodo認証が無効になっているため、Wrapper開始が拒否されるという問題があります。

  • 新しく[wrapper.jvm_detach_started]プロパティを追加。 これで、Javaアプリケーションを起動するシンプルなランチャー・ツールとしてWrapperを利用することが可能になります。 このプロパティが有効なとき、Wrapperは即座に終了しますが、JVMはそのまま自力で動作を続けます。 さらに、新しく[wrapper.java.outfile]プロパティと [wrapper.java.errfile]プロパティを追加しましたので、 分離されたとき、JVMの「stdout」(データ標準出力)と「stderr」(標準エラー出力)を ファイルへリダイレクトすることが可能になりました。

  • wrapper.ntservice.account]プロパティ でユーザーアカウントを指定してWrapperを動作させているとき、 Wrapperはインストール時に自動的にサービスとしてログオンするアカウントに許可を追加します。 (機能リクエスト:#3286491

  • Windows上でバックエンド・ソケットをバインドする問題を修正。 もしSO_EXCLUSIVEADDRUSEオプションを使い、 [wrapper.port.min]プロパティと [wrapper.port.max]プロパティの範囲内のポート番号で、 他のプロセスがポートをバインドする場合、 アクセス権限の問題として、そのポートが報告され、Wrapperが停止するだろうと思われます。 そのため、その後のポート範囲内のバインドが省略されます。 この問題はWrapperがリリースされた当初から既存する問題でした。

バージョン3.5.7: 改訂内容

  • AIXシステムでデーモンをインストールするスクリプト手法を変更しました。 そのスクリプトは現在、inittab & SRCを利用しています。

  • シェルスクリプトでの問題を修正。 カレント作業ディレクトリーに1文字長のファイルかディレクトリーが存在していた場合、 スクリプトが正しくWrapperを開始することができませんでした。 これは、Wrapperのデルタ・パックのネーミングが利用されているときだけの問題でした。 デフォルトでルート・ティレクトリーに「u」ディレクトリーが存在しているため、 システム再起動時にAIXシステム上で再現するのは簡単でした。 これは、Solaris問題の修復として導入された3.4.0からの問題でした。 そのルートの原因は「tr」コマンドで引用の不足しているセットでした。

  • シェルスクリプトの問題を修正。 作業ディレクトリーがWrapperバイナリと同じディレクトリーで、スクリプトが開始されると、 動作しているWrapperプロセスを見つけられず、後に他の配置場所から問い合わせが出されていました。 また、他の場所から開始された場合、失敗することもありましたが、 Wrapperの配置場所から問い合わせが行われていました。 これは、スクリプトで作業ディレクトリーの変更を停止した3.5.6で導入されました。

  • 新しくGC(ガベージコレクション)アクションを追加。 これで、JVMで完全なガベージコレクション掃除を即座に実行します。 詳細は各プロパティをご覧ください: [wrapper.commandfile]、 [wrapper.filter.action.<n>]、 [wrapper.check.deadlock.action]、 [wrapper.timer.<n>.action

  • (Professional Edition)

    wrapper.event.<event_name>.command.block.action] プロパティを少し変更しました。不明なアクションに遭遇した場合、正しく警告されるようになりました。 静かに「CONTINUE(継続)」するようにデフォルトとして設定されています。

  • コンフィギュレーション・ファイルの上部に、 「#encoding」ディレクティブが不足していた場合、 表示されるメッセージのタイミングを変更。 デバッグ出力が有効になっている場合だけログ化されていました。 現在は、「#include.debug」ディレクティブが 指定されていた場合にもログ化されるようになりました。

  • コンフィギュレーション・ファイルにあるエンコードやインクルード問題についての警告メッセージの字下げを修正。

  • (Standard / Professional Edition)

    問題を修正。Wrapperから加工された個別の出力のために、 インクルード・ファイル問題がシェルスクリプトにエラーを引き起こさせることがありました。

  • インクルード層の深さが最大に達し、 include debuggingが有効になっている場合の 警告を追加。Wrapperでは常にインクルード・ファイルを静かにスキップしていました。

  • 問題を修正。インクルード・ファイルが見つからない状態で、 ネストされたインクルード・ファイルに「#include.required」が含まれていた場合に、 「#include.required」ディレクティブが スタートアップを正常に阻止できていませんでした。

  • 問題を修正。 一部の致命的なインクルード問題の原因が正しくログ化されていませんでした、結果として単に、 「コンフィギュレーション・ファイルのロード(読み込み)に失敗」というメッセージがログ化されていました。 これは3.5.5からの問題でした。

  • Windows問題を修正。定義された環境変数ExpandEnvironmentStringsシステム関数 で指定された制限32K長よりも長かった場合に、Wrapperがサービスとして開始に失敗することがありました。 これは3.5.5以前での全てのWindowsプラットフォーム上で問題でしたが、それ以降のWindows2000上だけは、 それより新しいバージョンのWindows用に レジストリから環境をロード(読み込む)で利用されるコードが無効にされていた時、問題となりました。 現在では、問題変数の拡大を単にスキップして、警告を出すことで継続しています。 バグ・レポート:#3103776.

  • 任意のシステム・プロパティの一連セットを追加。 [WrapperSimpleApp]、 [WrapperStartStopApp]、 [WrapperJarApp] ヘルパークラスが、ユーザーアプリケーションのメインメソッド内で投げられた捕捉されなかった例外を無視するように伝えます。 この例外はそのままログ化されますが、今は設定できるため、 エラー状態でWrapperがシャットダウンされることなく、メインメソッドが単に終了することができます。 その場合でも、捕捉されなかった例外が投げられる前に、最低でも1つ以上の非デーモンスレッドが起動されている限り、 Java自体はそのまま動作を続けます。これは、ほとんどのユーザーに影響を与えることはありませんが、 一部のアプリケーションにおいて、この動作の違いから問題があることを確認しました。 詳細はヘルパークラスのjavadocsをご覧ください。

  • (Professional Edition)

    wrapper.event.<event_name>.command.on_exit.<n>] プロパティ用に利用される正しい終了コードを検索する際の問題を修正。 現在、Wrapperは値を以下の順番で検索します: [wrapper.event.<event_name>.command.on_exit.<n>]、 [wrapper.event.<event_name>.command.on_exit.default]、 [wrapper.event.default.command.on_exit.<n>]、 [wrapper.event.default.command.on_exit.default] 3つめのパターンは、3.3.0で追加された以降、以前のバージョンでスキップされます。

  • (Professional Edition)

    wrapper.event.<event_name>.command.on_exit.<n>] プロパティに予想外の値が指定された場合、警告を報告するロジックを追加。

  • (Professional Edition)

    メッセージ・ログレベルを整えましたので、 [wrapper.event.<event_name>.command.loglevel] プロパティを利用している際、その出力は期待されたとおりです。

  • (Professional Edition)

    wrapper.event.<event_name>.command.on_exit.<n>] プロパティを改善しました。これで、「コマンド完了までの待機時間」を過ぎた後にコマンドが終了したとしても、 設定されたアクションが動作します。以前のバーションでは、Wrapperに「継続」以外の選択がありませんでした。

  • (Professional Edition)

    問題を修正。 イベント・コマンドが最初に発生した場合、 Wrapperが正常にJVM終了の検知することに失敗していました。 唯一の問題は、Wrapperが、実際のJVM終了コードではなく、常に終了コード「0(ゼロ)」を報告していたことです。

  • サービスとしてインストールしたり、既存サービスをアップデートした際に、 Windows上でバッファ・オーバーフロー問題を修正。この問題は、 プロパティにスペースが含まれている場合や、 コマンドライン上でスペースが含まれたJavaパススルー引数を指定した場合の時だけに発生していました。 動作中のサービスには何も問題はありませんでした。 これは3.5.0で導入されました。

  • (Standard / Professional Edition)

    非ライセンス版のWrapperネイティブ・ライブラリーが利用されたとき、 ログ化されるエラーメッセージを改善しました。

  • (Standard / Professional Edition)

    Windows上でバッファ・オーバーフロー問題を修正。 カスタマイズしたWrapperバイナリを作成する際に、 ターゲット・バイナリ名に「.exe」拡張子が含まれていなかった場合、 バッファ・オーバーフロー問題が発生していました。 この問題は、この機能が導入された3.3.7から既存していました。

  • 現在、Windows上で「wrapper.exe」、 「wrapperW.exe」、 「wrapper.dll」バイナリには署名がなされ、 正当なタヌキソフトウェア・バイナリが利用されていることを認証できるようになりました。

  • 非昇格 (UAC) コンソールからWindowsサービスとして、Wrapperを 「install(インストール)」、 「remove(取り外し)」、 「start(開始)」、 「stop(停止)」などする手法が実装されました。 Wrapperはチャイルド・プロセスを利用して透過的に昇格させられます。 これは、Windowsサービス・マネージャーでスムースな相互作用のため、 Windows Vista や 2008で開始される必要があります。

  • (Standard / Professional Edition)

    問題を修正。ローカライズされた[wrapperjni_*.mo]ファイルが 正しくロード(読み込み)されませんでした。 このメッセージはデバッグ出力が有効になっている時だけに表示されます。 アプリケーションやWrapperローカライゼーションは正常に動作していました。 これは3.5.5で導入されました。

  • (Standard / Professional Edition)

    Windows上のシステム言語以外のローカリゼーション動作能力を強化。 Wrapperプロセス・ロケールが正しく設定されていませんでした。 そのため、OSが英語やドイツ語の環境で、 [wrapper.lang]プロパティを設定しても、 時々、日本語が正しく表示されないことがありました。 Javaプロセスは今もなお問題を抱えており、 [file.encoding]システム・プロパティの システム・デフォルト値で常に開始してしまうことです。 このため、例えば[file.encoding]がドイツ語である場合、 日本語を書くと問題を引き起こすことがあります。

  • upstart」でシステム・ブート時に、 Wrapperを開始/インストールするシェルスクリプトに、サポートを追加。

  • シェルスクリプトでの問題を修正。 Wrapperコマンドラインやパスに角括弧が含まれる場合、 動作中のWrapperの認識に失敗する可能性がありました。

  • 「temp」ディレクトリーの既存チェックのテスト手法を変更。 今後、[File.createTempFile]を利用するのではなく、 独自のファイル名で生成します。Javaが内部エントロピーを初期化する必要があるため、 一部のシステム上で、[createTempFile]に長い時間を要しました。 「java.tmpdir」ディレクトリーに 多数のファイルがあり、Javaのエントロピー初期化コードを低速にさせている事実を確認しました。 これは3.5.0からの内部問題です。

  • Windows上の問題を修正。スペースを含む「--」後のパススルー引数が、 スペース部で複数の引数へ分割されてしまい、JVM intactへ引き渡されませんでした。

  • Windows上の問題を修正。 複数のスレッドが同時にクリーンアップ・コードを開始した場合、 シャットダウン時にWrapperが時々クラッシュすることがありました。 これは、動作中のアプリケーションには影響はなく、シャットダウン時だけの問題でした。 言語パックがロード(読み込み)された場合に発生するようでした。Introduced in 3.5.3.

バージョン3.5.6: 改訂内容

  • UNIXプラットフォーム上で問題を修正。 もし[wrapper.logfile]に絶対パスが指定され、 そのファイルがまだ存在していなかった場合、ログファイル・パスが間違えて計算されていたました。 警告メッセージが表示されていましたが、Wrapperはデフォルト・ログファイルの利用を継続していました。 Mac OSXを含み、一部のプラットフォーム上でクラッシュを引き起こした問題を表示されたメッセージに問題がありました。 これは3.5.5で導入されました。

  • Windowsプラットフォーム上での問題を修正。 設定された[wrapper.logfile]のディレクトリーへアクセスできない場合、 Wrapperがクラッシュする問題がありました。 これは3.5.5で導入されました。 バグ・レポート:#3087424.

  • 設定されたwrapper.logfileへ書き込み問題があるとき、 警告がログ化される方法を改善。 デフォルト・ログファイルへ戻すことに成功した場合に、 Wrapperが利用するログファイルへメッセージがログ記録されます。

  • Windowsプラットフォーム上での問題を修正。 コマンドラインで指定された [wrapper.java.additional.<n>] プロパティにスペースが含まれていると、Javaコマンドラインをビルドする際に、正しく引用していませんでした。 これは3.3.6で導入されました。

  • 問題を修正。 [wrapper.java.additional.<n>] プロパティの無効な値のためにログ化された警告メッセージに壊れたテキストが含まれていました。 これは3.3.6で導入されました。

  • UNIXプラットフォーム上で問題を修正。 [wrapper.java.additional.<n>] プロパティの無効な値が正しく報告され、スキップされていましたが、 JVMを起動するコマンドラインの結果として空値になり、JVM起動失敗を引き起こしてました。 無効な値は、「-」文字で始まらない値です。

  • WRAPPER_INIT_DIR]環境変数を新しく追加。 これはWrapperが起動された場所から作業ディレクトリーの参照に利用されます。 Wrapperが常に自分の作業ディレクトリーをWrapperバイナリの配置場所へ変更するため、 この環境変数は、一部のアプリケーションにとって必要なものです。

  • UNIX シェルスクリプト変更。 もはやカレント作業ディレクトリーをスクリプトの配置場所へ変更しません。 3.2.0から、Wrapperが作業ディレクトリーを自分の配置場所へ変更するため、 これは、もう必要ありません。

  • wrapper.request_thread_dump_on_failed_jvm_exit.delay] プロパティを新しく追加。 これで、スレッドダンプをした後にJavaプロセスを終了する前のWrapper待機時間をコントロールします。 この遅延は常に5秒に決め打ちされてます。

  • 無効なコンフィギュレーション値に関するいくつかの警告メッセージのテキスト文字にもっと一慣性を持たせキレイにしました。

  • (Professional Edition)

    wrapper.jvm_kill.delay]プロパティを新しく追加。 これで、発生する[jvm_kill]イベントと 実際に強制終了されるJVMとの間の時間数のコントロールが可能になります。 外部イベント・コマンドが発生して最初にJVMプロセスで何かをする必要がある場合に便利です。

  • (Professional Edition)

    問題を修正。 UNIXプラットフォーム上で [wrapper.event.<event_name>.message]プロパティと [wrapper.event.<event_name>.loglevel]プロパティ の出力が正しく表示されていませんでした。

  • (Professional Edition)

    UNIXプラットフォーム上での問題を修正。 [WrapperManager.exec()] で起動された大量のチャイルド・プロセスが同じインスタントで終了した場合、 WrapperのJava側が正しく通知されていませんでした。 その一部は、どこかでクリーンアップされる時点で 次のチャイルドが終了するまで、ゾンビ状態に入っていました。 もしユーザー・コードがシャットダウン・プロセスの一部として [WrapperProcess.waitFor()] をコールしている場合、これは主にJVMシャットダウン上の問題でした。 どの時点でも「WaitFor」コールは行き詰まり、他のチャイルドが終了するまで残ることになります。 この修正の一環として、2つの同期コードベースを持ち出すようにWindows実装にいくつかの変更も加えました。

  • (Professional Edition)

    Windows上での問題を修正。 マルチスレッドがチャイルド・オブジェクトを作成しているとき、 Input/Output/Errorstreamへ読み/書きでの問題を引き起こし、 ハンドラが他のチャイルド・プロセスによって意図とされずに継承されていました。

  • (Professional Edition)

    errnoコールが、コンパイラースイッチのため スレッド・セーフでなかったときの、Solaris や AIX 上での問題を修正。

  • 問題を修正。 Wrapperコンフィギュレーションのロード(読み込み)中に、 デバッグ・レベル警告出力がスタートアップ時に表示されていました。 Wrapperが実際にコンフィギュレーションを2回ロード(読み込み)して、 その出力は2度目のコールでログ化されるだけなので、これで改善されるはずです。

  • (Standard / Professional Edition)

    インデックスのない1つのファイル共有マッピングを定義するマニュアル化されてない機能を削除。 これは利用した場合に複雑なコードで混乱の原因になると思われます。

  • (Standard / Professional Edition)

    Windowsプラットフォーム上でコンパイラーディレクティブ不具合によって引き起こされたバイト配列問題を修正。 Windowsバージョン64ビット上で、マッピングされたドライブを 定義すると、クラッシュを引き起こすことは知られていました。 この問題は3.3.7からソースの中にありましたが、他の問題を引き起こすことに関しては不明です。

  • (Standard / Professional Edition)

    ネットワーク共有がマッピングされ、 何かに理由で失敗したときに表示されるメッセージを変更。 さらに、マッピング解除やシャットダウン時のメッセージも追加。

  • 一部のWindowsプラットフォーム上で、分割保存されたログファイルの削除失敗に関して、 正しく報告されていませんでした。 削除に失敗したとしても、ファイルを削除するシステム関数が成功を返していました。 現在、再確認。

  • Javaプロセスへデーターを送信するために利用されるコードのデッドロックを修正。 もしデバッグ・レベル出力が有効で、 ログファイル分割保存が有効であった場合に、唯一、可能でした。 これは3.3.7で導入されました。

  • 問題を修正。 [wrapper.logfile.rollmode]が 「NONE」あるいは「DATE」 以外の値であるときに、ログファイルが分割保存され、新しい名前が以前のものと同じである場合、 それを知らせる通知が、WrapperからJVMへ送信されていませんでした。

  • 問題を修正。 各JVM起動後にログファイルが分割保存される初回まで、 [WrapperManager.getWrapperLogFile()] が正確なログファイル名を返してきませんでした。 これは、「wrapper.logfile」に 「ROLLNUM」あるいは「YYYYMMDD」 トークン(単位)が含まれている場合に唯一、目に留まる問題でした。

  • 設定したJavaバイナリがアクセスできないとき、UNIXプラットフォームで表示されるエラー・メッセージを訂正。 そのメッセージは、コンテンツが一部のプラットフォーム上で定義されていないバッファを参照していました。

  • z/OS上での問題を修正。 全て他のUNIXプラットフォームと比べ、mutexをロックするために利用されるAPIにある差異のため、 mutexのロック・コードやロック解除コードは事実上、無視されていました。 これは、マルチスレッドがスレッド・セーフでないコードにアクセスすることができ、Wrapperのクラッシュを引き起こすことがありました。 これは最初のz/OSリリースからコード内にある問題で、実際に何か問題を引き起こしたかは未知です。 3.5.1から、これはデバッグ出力が有効になっているとき唯一の問題でした。 3.3.9から3.5.0でも問題があり、Wrapperがシステム・シグナルを受信するときに発生します。

バージョン3.5.5: 改訂内容

  • wrapper.filter.action.<n>]プロパティのアクション 「SUCCESS」を新しく追加。 もしこれがトリガーされた場合、Wrapperでは現在のJVM起動を成功として取り扱い、 内部の起動失敗カウンターをリセットします。 これは頻繁に再起動を必要とするアプリケーションに便利です。

  • (Standard / Professional Edition)

    各リブートごとに変更され、ホストIDとして安定しないため、 Juniper Network Connect ホストIDを無視します。

  • PASS_THROUGH」を追加。 これで、UNIX シェルスクリプト や Windows「AppCommand.bat.in」ファイルへ設定し、 起動時に追加した引数を直接的にJVMへ引き渡すようにします。

  • FIXED_COMMAND」を追加。 これで、UNIX シェルスクリプト や Windows「AppCommand.bat.in」ファイルへ設定し、 コマンドを指定せずに実行を可能にします。 主に、「PASS_THROUGH」と併用して便利に使えます。

  • (Standard / Professional Edition)

    --passthrough option」を追加。 これで「exe」カスタマイズし、JVMのアプリケーションへ 全コマンドラインの前にWrapperが先にくるようにします。

  • (Standard / Professional Edition)

    --conf option」を追加。 これで、コンフィギュレーション・ファイルが明示されていないとき、 Wrapperが開こうとする際に、デフォルトのコンフィギュレーション・ファイルを変更します。

  • wrapper.ntservice.account.prompt] プロパティを追加。もしTRUEに設定された場合、サービスとしてアプリケーションをインストールする前に、 Wrapperは全てのアカウント情報(ドメイン、アカウント名、パスワード)の入力待ちをします。

  • #includeファイル宣言の小さな問題を修正。 先頭にあるスペース(空白)を不要とする問題がありました。

  • #include.required]ディレクティブを新しく追加。 これで、#includeディレクティブで、 もしインクルード・ファイルが存在しない場合、 エラーを出力してコンフィギュレーションをロード(読み込み)しないように動作します。 通常、インクルード・ファイルは意図的に任意オプションです。

  • コンフィギュレーション・ファイルのロード(読み込み)失敗のとき表示されるエラー・メッセージを変更しましたので、 現在では、どこに問題があったのか、さらに詳しい情報を提供します。

  • Windows上でサービスとしてWrapperを起動する前に、 SYSTEMレジストリの強制的なリロード(再読み込み)を無効にしました。 (もし特定のアカウントへ設定された場合は、そのユーザー) まず最初にシステムをリブートしない限り、サービス動作時に設定した環境への変更が反映されなかったため、 これは元来WindowsNTで行われていたことです。 Microsoftでは、Windows XP や Windows2003で、この問題を解決しているようです。 Windows7 や Windows2008では、 SYSTEMレジストリがデフォルトで 特定のユーザーとして動作するときUSERNAMEを上書きするという、 「USERNAME=SYSTEM」設定を含んでいるため、 これは実際に問題を引き起こしていました。 WindowsXP や Windows2003で始まるWindowsバージョン用にロード(読み込み)するこのレジストリを無効にすることにしました。 サポートされたバージョン上で、唯一Windows2000が自分の環境を今リロード(再読み込み)しています。 3.5.4やそれ以前のものと唯一異なる点をあげるならば、 Windows 7 や Windows 2008で[SYSTEM]ユーザーとして動作している時、 [USERNAME]環境変数が、 [SYSTEM]ではなく、ドル記号に続くホスト名に設定されることです。 これは実際には、その他全てのサービスがどう動作するかですが、 万一、これが問題である場合、 Wrapperコンフィギュレーション・ファイル内部へ[set.USERNAME=SYSTEM]プロパティを 追加することで解決できます。 バグ・レポート:#3061490.

  • (Standard / Professional Edition)

    SolarisやHP-UXでの問題を修正。 メール通知に関する 「送信タイムアウト」や 「受信タイムアウト」の プロパティが無視されていました。

  • (Standard / Professional Edition)

    wrapper.ntservice.recovery.<x>] プロパティを追加。これで、Wrapperプロセス自身の障害があったイベントでシステムレベル・アクションを定義します。

  • (Standard / Professional Edition)

    WrapperProcess.waitFor()]、 [WrapperProcess.returnValue()] コールでの問題を修正。WrapperがJVMのシャットダウンを促した後にコールされた場合に、戻りに失敗する問題がありました。

  • (Standard / Professional Edition)

    WrapperProcessConfig.setSoftShutdownTimeout(int)] メソッドを追加。これは、 [WrapperProcess.destroy()] の呼び出し時にチャイルド・プロセスをキレイにシャットダウンするように要請された後のWrapper待機時間です。 一旦、タイムアウトになると、そのチャイルド・プロセスは強制的に終了されます。 このタイムアウトはハード・コードで若いバージョンで5秒です。

  • UNIXシェルスクリプトへもっと詳細の利用出力を追加。

  • UNIXシェルやWindowsバッチ・スクリプトからJVMを 「pause(一時停止)」や 「resume(再開)」が可能になりました。

  • (Professional Edition)

    タイマー初期化中の小さなメモリーリークを修正。

  • ローカリゼーション・リソースでの無効な文字がある場合に起きるかもしれないメモリーリークを修正。

  • (Professional Edition)

    Windows上で[wrapper.event.<event_name>.command.argv.<n>] プロパティが正しく解釈されないバグを修正。 これは3.5.0で導入されました。

  • (Professional Edition)

    wrapper.event.default.command.argv.<n>] プロパティを定義する機能を追加。 これは特定のイベント・コマンドが定義されていない場合に利用されます。 主にテスト用に便利です。

  • 現在のログファイルではなく、 Wrapperのデフォルト・ログファイル(wrapper.log)へ書き出す際に Wrapperがログファイル分割保存に失敗する時に起きる問題を修正。

  • (Standard / Professional Edition)

    値が失われるかもしれないローカリゼーションに利用された内部ハッシュ・マップ実装で put問題を修正。 これは、データー利用のため目に見える問題ではありませんでした。

  • wrapper.filter.allow_wildcards.<n>] プロパティを新しく追加。 これでワイルドカード「*」と「?」を含む [wrapper.filter.trigger.<n>]パターンの指定が可能になりました。

  • デフォルト「OutOfMemoryError」フィルター・コンフィギュレーションにcommented alternative を追加。 これで、捕捉されない例外スタック・トレース上でもトリガーするように、もっと具体的にします。 これは、「-XX:+PrintClassHistogram」JVM引数から、 メモリ不足警告失敗でJVMを再起動させることから、ような出力を避けることです。 さらに詳しくは、[wrapper.filter.trigger.<n>]の「OutOfMemoryError検知」をご覧ください。

  • デフォルト・フィルター・メッセージをローカライズしました

  • ISO-8859-*」エンコード、その他、いくつかエンコードがサポートされるよう追加。 完全な概要は「国際化/ローカライゼーション」ページを参照ください。

  • (Standard / Professional Edition)

    UNIXバージョン上で、3.5.0で導入されたライセンスキーでの日付解釈の問題を修正。 Windowsバージョンには問題はありません。 月日に「08」や「09」が含まれている 全てのライセンス・アップグレード期間やリース期間が正しく解釈されていませんでした。 そのため、Wrapperが日付コンポーネントを「00」として解釈していました。 もし「日」にそれらの数値が利用されていた場合、日付は前月の最終日に設定されることになりました。 もし「月」にそれらの数値が利用されていた場合、日付は前年の12月に設定されることになりました。 例:「2010-08-20」の場合「2009-12-20」として、 「2010-10-08」の場合「2009-09-30」として、 解釈されていました。 このため、アップグレード期間がWrapperのリリース日よりも以前であったため、 一部のライセンスで利用を開始することができませんでした。 一部のトライアル・ライセンスでも、リース期間の最終日が本来の日付よりも早かったため、早期に停止されることがありました。 通常のライセンスの場合には、リース期間を利用しないため、一旦動作を開始すれば、この問題の影響ありません。

  • 立て続けにいくつかのサービス・コントロール・コードを受信するとき、Windows上での問題を修正。 3.5.1から、Wrapperではメイン・ループの各サイクルで1つのコントロール・コードだけ可能でした。 その結果として、ログに次のようなメッセージが表示されました: 「前回のコントロール・コード (4) がまだ待機中、(4)で上書き」 現在、Wrapperは10ミリ秒サイクルごとに25つまでのコントロール・コードを取り扱えるようになりました。

  • Windowsサービスのインストールやアップデート時に、 パススルー引数をJVMへ送信することが可能でなかった問題を修正。 「--」引数を使うパススルーは3.5.2で追加されました。

  • wrapper.pause_on_startup]プロパティを新しく追加。 これで、JVMを起動することなく、Wrapperが直接、一時停止の状態にすることが可能になります。

  • Wrapperが一時停止の状態にあるとき、コマンド・ファイル内の 「STOP」コマンドが無視されるように設定される問題を修正。

  • コンフィギュレーション・ファイル・エンコードに「DEFAULT」 の指定が可能になりました。これで、デフォルトのシステム・エンコードを利用してファイルのロード(読み込み)をします。 リスエストをいただきましたので追加しましたが、 コンフィギュレーション・ファイルが全システム上で正しくロード(読み込み)させるために、 UTF-8のような汎用的に便利なエンコードの利用を推奨します。

  • WRAPPER_LANG]環境変数を追加。 これで、コンフィギュレーション・ファイルでの現在の言語コードのロケール参照が可能になります。 一般的な利用方法の1つに、インクルードを活用してローカライゼーションすることです。 (例: 「#include ../conf/wrapper-%WRAPPER_LANG%.conf」と設定すると、 「#include ../conf/wrapper-en.conf」や 「#include ../conf/wrapper-de.conf」を読み込みます)

バージョン3.5.4: 改訂内容

  • WrapperSimpleAppWrapperStartStopApp ヘルパークラスで、custom public static メソッドの任意のサポートを追加。 機能リクエスト:#2812276.

  • 特別なコンフィギュレーション・ファイル・ディレクティブ 「#properties.debug」を新しく追加。 コンフィギュレーション・ファイルによって読み込まれ、 プロパティについてのデバッグ出力が有効になります。 あるプロパティがなぜ上書きされるのか把握できるので便利なはずです。 機能リクエスト:#3042959

  • 小さな問題を修正。 コンフィギュレーション・ファイル・ディレクティブ 「#include.debug」が存続してしまい、 コンフィギュレーション・ファイルがリロード(再読み込み)される時、 リロード(再読み込み)されたコンフィギュレーション・ファイルが、 もはやディレクティブ・セットを持っていなかったとしても、有効になっていました。 これは唯一、 wrapper.restart.reload_configurationプロパティ が設定されている場合の問題でした。

  • #include.debug」 コンフィギュレーション・ファイル・ディレクティブが有効なとき、問題でなかったとしても、 インクルード・コンフィギュレーション・ファイルの不足についてのメッセージが出力され、 「ERROR」レベルでログ化されていました。

  • 小さな問題を修正。 「WRAPPER_JAVA_HOME」環境変数が、 内部的にWrapperによって設定されるとき、正しく設定されていませんでした。 これは、もし後からユーザーが自分のコンフィギュレーション・ファイルに上書きする場合、 予想外の結果へ導く可能性がありました。

  • 引数なしでWrapperが動作する際、AIX および z/OS上での問題を修正。 Wrapperがデフォルト「wrapper.conf」ファイルを利用する試みをしていましたが、 そのファイルが存在していなかったとしても、Wrapperが継続することになり、ファイル・チェックに失敗していました。 これは設定エラーメッセージが表示されることになりますが、別段、無害でした。

  • 必要のないときにログ出力が待ち行列になるところで、 スリーピングに関連したデバッグ・コード一部を一掃しました。

  • (Standard / Professional Edition)

    スタートアップ時にインターフェイス待ちに関連する冗長なコード一部を統合しました。

  • (Professional Edition)

    UTF-8としてエンコードされるとき、 27バイト長を超える件名があるWrapperメール機能の問題を修正。 これは、件名のBase64変換で、計算ミスが原因でした。

  • (Professional Edition)

    コマンド・エレメント配列を受ける WrapperManager.exec メソッドがWindows上で呼び出されたときの問題を修正。 コマンド・エレメントが一行のコマンドラインへ変換される必要がありますが、 エレメントにスペースが含まれていた場合、 その結果となるコマンドラインの結果には正しく引用がされませんでした。

  • wrapper.java.command.resolveプロパティを新しく追加。 wrapper.java.commandプロパティで指定した Javaコマンドでシンボリック・リンクを解決しようとWrapperが試みるかをコントロールできます。 歴史的に、常にそうしていましたが、 シンボリック・リンク経由で起動しているか確認チェックするため、直接動作している場合に、 Gentoo上でrun-java-toolのようにアプリケーションを開始した一部のJVMが失敗します。

  • Windowsバージョン上での問題を修正。 サービスがインストールされるとき、Wrapperバイナリ自身を含み、 100文字を超えるWrapperバイナリへのパスが、バッファ・オーバーフローを引き起こしてました。 同じパスが128文字を超える場合、Wrapper起動時には毎回、類似した2つ目の問題が起きていました。 とても古い問題と唯一Windows XP/2000の32ビット版だけに発生する問題と2つの問題がありました。 Microsoft文書によると、64ビット版にも、その問題はにも存在するはずとのことでしたが、 弊社ではそれを再現することができませんでした。 より新しいWindowsバージョンでは全て大丈夫です。

バージョン3.5.3: 改訂内容

  • UNIXシェルスクリプトでのスペルミスを修正。 それが原因でコミュニティー版の動作時に 「コマンドが見つかりません」エラーを引き起こしていました。

  • 新しくプロパティを追加: wrapper.console.fatal_to_stderr, wrapper.console.error_to_stderr, wrapper.console.warn_to_stderrFATAL, ERROR, WARN ログレベルの出力を 「stdout」(データ標準出力)あるいは「stderr」(標準エラー出力) へ出力をコントロールします。これまでは全てをstdoutへ出力していました。 この変更に伴い、 FATALERRORログレベルが デフォルトでstderrへの出力になります。

  • 問題を修正。 スタンダード版あるいはプロフェッショナル版 シェルスクリプトがコミュニティー版Wrapperで利用した際に、 シェルスクリプト予想外の結果を生み出すことがありました。 デフォルトERRORFATALログレベル・コンソール出力を stdoutではなくstderrへ 変更することにより、Wrapperバイナリに修正が行われました。

  • (Standard / Professional Edition)

    スクリプトで指定された「wrapper.conf」ファイルが存在しないとき、 スクリプト・エラー・メッセージ出力が表示されなかった問題を修正。

  • Windows上で失敗したforkからエラーが常に、 wrapper.console.flushプロパティの値を受けるのではなく、 即座にフラッシュ(書き出し)されていた問題を修正。

  • Windows2000システム上での問題を修正。API利用が新しすぎたため、 3.5.2で追加された新しい機能がWrapper動作を妨げていました。

  • (Standard / Professional Edition)

    マルチバイト文字の出力の見栄えの向上に、 「wrapperw」ダイアログのフォントを変更。

  • WrapperがUNIXスクリプトから起動したとき、最初のメッセージ後にラインフィード(改行)を追加。

  • デバッグ出力に注意を追加しましたので、 設定したJavaテンポラリーディスク(一時ディスク)が常にログ化され、デバッグのヘルプになります。

  • SunとIBM JVMの両方でバグ回避策を追加。 ソケットが既にバインド済みのとき、無効な例外が投げられる問題があり、 「Unexpected exception opening backend socket: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind」 とWrapperが報告する原因になっていました。 バグ#6965962

  • 常にUTF-8 Base-64エンコードされるようにイベント・メールでの件名のエンコードを変更。

  • (Professional Edition)

    新しくプロパティを追加: wrapper.event.<event_name>.email.smtp.auth.type, wrapper.event.<event_name>.email.smtp.auth.userid, wrapper.event.<event_name>.email.smtp.auth.password。 「LOGIN」や「PLAIN」接続認証が可能になりました。 現在のところ、メール・サーバーへのSSL(STARTTLS)接続はサポートされていません。

  • Mac OSXバージョン上でコンフィギュレーション・ファイル読み込み中のバッファ・オーバーフローを修正。 これは3.5.0で導入されました。

  • 3.5.0で追加したUNIXバージョン上でのいくつかのメモリーリークを修正。 全プラットフォーム上におけるその他いくつかについても同様、 some from quite early バージョンs.

  • 数か所を修正。 正確にMAX_PATH文字長の解決されたパスが、バッファ・オーバーフローの結果になることがありました。

  • (Standard / Professional Edition)

    言語パックを処理するメモリーリークを修正。

  • テキスト文字の一慣性を調べて増やしました

  • HP-UX上での問題を修正。 PA-RISC 2.0 バイナリの場合、設定されたJVMが無効でしたという警告をWrapperがログ化していました。 バグ・レポート:#3037317.

  • 問題を修正。 WrapperManagerがトラップ失敗で、 サポートされていない一部のJVM上でMBeanサーバー初期化エラーを隠す失敗がありました。

バージョン3.5.2: 改訂内容

  • コマンドライン引数「--」を新しく追加しました。 続く全ての引数は先行してJAVAアプリケーションへ引き渡されます。 wrapper.app.parameter.<n>で使われている引数のあとに その引数が添付されます。

  • シェルスクリプトの問題を修正。 コマンドライン上で不正にデーモンの開始失敗をレポートする要因につながる可能性がありました。

  • Wrapperスクリプトにいくつかのロジックを実装しました。 設定されていない場合、実行するWrapperバイナリの権限を変更を試みます。

  • デモ・アプリケーションに問題がありました。 UNIXプラットフォーム上で正しいコンフィギュレーションファイルを配置する問題があり、 Wrapperプロセス内部デモンストレーションの起動失敗がありました。

  • WrapperのWindows版が内部エラーで終了する際のログ化されるエラーメッセージを改善しました。 今は、問題の原因を診断に役立つレポートを送信するミニ・ダンプ・ファイルの保存同様に、 Wrapperの内部状況に関して詳しい情報をログ化します。

  • WrapperWin32サービス・インスタンスで名前と表示名が破損する問題を修正。 影響を受けるメソッドのリスト: WrapperManager.listServices(), WrapperManager.sendServiceControlCode(), WrapperManager.setConsoleTitle(). これは3.5.0で導入されました。

  • ワイルドカードが時々解決に失敗したり、Wrapperクラッシュの原因になっていたWindows上での問題を修正。 クラス・パスログファイルの分割保存の生成に影響があります。 これは3.5.0で導入されました。

  • エンコード宣言をしないコンフィギュレーション・ファイルの無効な文字が スタートアップ時にWrapperクラッシュを起こす原因となる問題を修正。 これは3.5.0以前からアップグレードするユーザーにとって問題のはず。 さらに古いバージョンでは何も文字セットの転換をしないため問題ではなかっただろう。

  • ドライブがマッピングされたネットワーク・ドライブか、あるいは失敗していないか、確認するコード問題を修正。 これは時々、ドライブが識別できないというFALSE警告の要因になると思われます。 これは3.5.0で導入されました。

  • wrapper.commandfileプロパティに、 新しくACCESS_VIOLATIONコマンドを追加。 Wrapperがクラッシュした場合に、Wrapperや外部システムの動作をテストします。 そのコマンドは、 wrapper.commandfile.enable_tests プロパティが有効になっている場合だけ有効になります。

バージョン3.5.1: 改訂内容

  • コンフィギュレーション・ファイルの文字が制御文字である/ないを区別するシステム関数の利用を開始。 非ASCIIプラットフォーム上で動作します。

  • (Standard / Professional Edition)

    Windowsプラットフォーム上でのクラッシュを修正。 Wrapperのコンフィギュレーションをロード中(読み込み中)、 非割り当てメモリーを解放することによってクラッシュが引き起こされることがありました。

  • Windows版上でシステムや現在のコード・ページを記述しているデバッグ出力を追加。 エンコードや文字化け問題を理解するのに役立ちます。

  • コンフィギュレーション・ファイルをローカライズした日本語テンプレート 「src/conf/wrapper.conf.in_ja」を追加。 日本語ユーザーをサポートします。 コンフィギュレーション・ファイルの例ご覧ください。

  • ログ化を実行中、JVMが存在する場合で、 wrapper.debugや 記載のないwrapper.state_outputプロパティがTRUEに設定されている場合、 UNIXプラットフォーム上での内部デッドロックを修正。

  • 起動直後に発生したJVMの再起動の失敗がWrapperをすぐに断念してシャットダウンさせていまう、という問題を修正。 これは、通常JVMコンフィギュレーションで可能なはずはありませんが、 テスト運用中に発生していました。

  • (Standard / Professional Edition)

    テキストのローカライズ再作業しましたので、mallocs は初期化において全て取り扱われます。 3.5.0には、シグナル・ハンドラ内部で作成されたmallocsによって引き起こされた、 偶発的なフリーズやクラッシュの問題がありました。 デバッグ出力が有効でないならば、この問題の発生はマレなことです。

  • 全プラットフォーム上でシグナル・ハンドラを大いに簡素化。 可能なかぎり最小の実行で、 アクションが待機にされ、メイン・スレッドによって処理されます。

  • (Standard / Professional Edition)

    wrapper.syslog.remote.hostプロパティで、 (IPアドレスが動作している)ホスト名が解決できない問題を修正。

  • (Standard / Professional Edition)

    Windows版上でのデバッグ出力を追加。 ローカリゼーション・デバッグやコード・ページの問題を支援します。

  • (Standard / Professional Edition)

    Windows上でのローカリゼーション問題を修正。 Wrapperは、カレント・プロセスのものではなく、システム全体にわたる言語を利用していました。 もしWrapperが新しいコンソールで起動され、 その新しいコンソールが要求されたコード・ページをサポートしていない場合、 文字化けの結果になりました。 これは、 ユーザーがアクティブ・コード・ページをデフォルトからWindowsデスクトップに変更した場合、 唯一問題でした。

  • Windowsプラットフォーム上で問題を修正。 一部のケースで、JVMチャイルド出力ログの中に余分なラインフィード(改行)が追加されていました。

  • Windows上の一部のネットワーク共有から、DemoAppを動作させる問題を修正。

  • WrapperManager.isWindows()WrapperManager.isMacOSX() メソッドを新しく追加。 これで、WindowsやMac、両方のプラットフォームでも非標準コードを求めることができる条件付きコードを書くのが簡単になります。

  • (Standard / Professional Edition)

    GetHostId.batファイルをより強固にしましたので、 コマンドラインから相対参照を使って実行することが可能。 さらに今は、デルタ・パック形式のWrapperバイナリをサポートしています。 naming and falling back to use which binaries are available.

  • wrapper.working.dirが設定されるときのタイミングを変更。 コンフィギュレーションをロード中(読み込み中)に生成されるエラーメッセージは、正しいログファイルへログ化されます。 言語パックが正しいロケーションからロード(読み込み)されていることを確実にするには、 スタンダート版やプロフェッショナル版で必要で、全てのメッセージが正しいロケールにあるはずです。

  • UNIXプラットフォーム上での問題を修正。 3.5.0で追加されたローカリゼーション機能が原因で、ステータス・コマンドがエラーで失敗していました。

バージョン3.5.0: 改訂内容

  • (Standard / Professional Edition)

    JVMでスレッドのデッドロックを検知して反応する能力を追加。 必要要件は Java 1.5. です。 検知を設定するのに、次のプロパティを追加: wrapper.check.deadlock, wrapper.check.deadlock.interval, wrapper.check.deadlock.action, wrapper.check.deadlock.output

  • Mac OSX上でlaunchdから起動されたとき、 wrapper.app.parameter.1プロパティが 空文字に設定される問題を修正。 TestWrapperアプリケーションでは正しく動作していましたが、 ほとんどのユーザー・アプリケーションでは失敗するでしょう。

  • wrapper.ping.intervalのような インターバル(一定周期)が全て端数切り捨てで、 設定された時間よりも1秒短いレートで機能してしまう問題を修正。

  • (Professional Edition)

    WrapperManager.execをコールするマイナーなメモリ・リークを修正。

  • wrapper.filter.message.<n>プロパティを新しく追加。 このプロパティは、 wrapper.filter.trigger.<n>が一致した場合、 ログ化されたメッセージをコントロールするために使うことができます。

  • wrapper.filter.action.<n>、および、 wrapper.timer.<n>.actionプロパティ用に 実行されるアクション手法を改訂しました。 これで、もはや、いかなる複製コードはありません。

  • wrapper.filter.action.<n>、および、 wrapper.timer.<n>.actionプロパティの 動作を修正。 指定した順番どおりに発生するアクション・リストの指定が可能になりました。 スレッドダンプが可能になり、エラーに応答して再起動できます。

  • 一慣性のため wrapper.filter.action.<n>プロパティに、 DEBUGアクションを追加。

  • (Professional Edition)

    次のプロパティのアクションとしてイベントを定義されたユーザーをfireにする能力を実装。 wrapper.filter.action.<n>, wrapper.timer.<n>.action, wrapper.check.deadlock.action.

  • チャイルド(子)プロセスが強制的に終了させられないときの WrapperProcess.destroy()機能の問題を修正。

  • Windowsプラットフォーム用の「GetHosdID.bat」ファイルを追加。 このファイルはマシンのHostIdを表示するダイアログを開きます。

  • シェルスクリプトの問題を修正。rcベースOSで、 スクリプトのAPP_NAMEに大文字が含まれている場合、 Wrapper起動の問題を引き起こす可能性がありました。

  • (Standard / Professional Edition)

    wrapper.share.<n>.*プロパティのシリーズを追加。 これで、Windows上でJVMを起動する前に、 特定のネットワーク・リソースをマップするようWrapperの設定が可能になります。

  • マッピングされたドライブ上にバイナリやコンフィグ・ファイルが配置されているとき、 Windowsサービスとして、Wrapperがインストールされる手法を修正しました。

  • WrapperManager.exec コマンド用の解析コマンドラインを強化。 exec コールの単一のコマンドライン・バージョンは、もっと高度な引用符を取り扱うようになります。

  • wrapper.syslog.identプロパティを修正。 そのプロパティ値は、自動的に文字列長さが32文字にトリム(切り落とし)されます。 これはsyslogサーバーの問題を避けるために必要です。 (参照:RFC 3164 セクション 4.1.3)

  • (Standard / Professional Edition)

    新しくプロパティを追加: wrapper.syslog.remote.host, wrapper.syslog.remote.port, wrapper.syslog.local.host. これらのプロパティにより、リモートsyslogサーバーへ、 全てのsyslog出力(UNIX)やイベントログ出力(Windows)のリダイレクト利用が可能。

  • Windows上のwrapper.syslog.facilityプロパティをサポート。 リモートsyslogエントリをWrapperのWindows版から送信可能。

  • 現在の「wrapper.jar」に関する情報、サイズ、ロケーション、MD5 ハッシュなどを示す WrapperManagerクラスからのデバッグ出力を追加。

  • wrapper.java.classpath.<n>]プロパティ で引用符を含むエントリをチェックする機能を追加。 そのため、今は、引用符は削除され、その警告をログ化します。

  • (Standard / Professional Edition)

    wrapperW.exe」エラーダイアログのサイズを増加。 少し読みやすくなりました。同じ理由によりフォントを変更しました。

  • (Standard / Professional Edition)

    wrapperW.exe」エラーダイアログのタイトルを変更。 それにより今では[wrapper.displayname]プロパティの値を含みます。

  • チェック機能を新しく追加。 設定したJavaテンポラリー・ディレクトリーの書き込み可能チェックをします。 Windows Vista上で動作中、書き込みはできず、エラーになります。

  • wrapper.java.tmpdir.required]プロパティ、 [wrapper.java.tmpdir.warn_silently]プロパティ を追加。 テンポラリー・ディレクトリーが必要かどうかコントロールします。

  • 特定のJavaバージョンの利用に関する設定方法をユーザーに示す注意を、 Wrapper コンフィグレーション・テンプレートに追加。

  • wrapper.commandfile]プロパティに 「CLOSE_SOCKET」コマンドを新しく追加。 それが使えるかどうかコントロールする [wrapper.commandfile.enable_tests] プロパティを新しく追加。

  • when another expected it to be open の時、 バックエンド・ソケットを閉じようとしている1スレッドによって 引き起こされたシャットダウン中のデバッグ警告を修復。

  • もし、JVMとWrapper間でバックエンド・ソケットが何かの理由で閉じている場合、 Wrapperを再同期するために即座にJVMを再起動させ、敏速にJVMに応答させるようにします。 これが発生する時に明白に把握できるようログ情報を追加しました。

  • (試験的)[wrapper.use_tick_mutex]プロパティを新しく追加。 内部ティック・タイマーがミューテックス(mutex)で保護されているかをコントロールします。

  • (Professional Edition)

    s390 システムのzLinux 32ビット、64ビット 、サポートを追加。

  • Wrapper内部エンコードをネイティブ文字からUNICODEへ変更。 これで、コンフィギュレーション・ファイルや内部的にどんな文字でも正しく取り扱えるようになります。

  • (Standard / Professional Edition)

    WrapperResources] クラスを新しく実装。これで、同じメソッド・コモンを使って、 ユーザー・アプリケーションをネイティブ・アプリケーションへローカライズすることが可能になります。 Wrapperは内部的にWrapperのローカライズ版を提供して利用します。

  • 古い[org.tanukisoftware.wrapper.resources]パッケージを削除しましたので、もはや利用不可。

  • (Standard / Professional Edition)

    日本語へローカライズした、Wrapper日本語版パッケージを追加しました。

  • WrapperManagerクラスの問題を修正。 メインソケットループで投げられた予期しない例外が、ログ化されずに投げられる。

  • シャットダウン時に、Wrapperのシャットダウンフックを取り外す失敗に対して、 Wrapperをより頑強に変更しました。 予期しない終了として失敗するためJVMのクリーンなシャットダウンを引き起こしていました。

  • (Standard / Professional Edition)

    Wrapperのカスタマイズコートの問題を修正。 カスタマイズされたマルチレイヤーアイコンがWindowsによって正しく利用できない問題がありました。 バグ・レポート:#3015848.

  • wrapper.on_exit.<n>]プロパティを変更しました。 これで、JVM終了時にWrapperのPAUSE(一時停止)が可能になりました。 これで、Wrapperがリジューム(再開)されるまで、JVMの再起動の遅延をさせます。

  • ログ形式「U」を新しく追加。 Wrapperが起動されるとき、ログ化におよその秒数を記録します。 内部ティックタイマーをベースにしており、実勢の経過秒数より数パーセントの狂いがあります。 以下のプロパティを追加。 [wrapper.console.format] [wrapper.logfile.format] [wrapper.logdialog.format

  • 設定したアンカーファイルを削除する際の問題を修正。 JVMが動作していない時に アンカーファイル削除が認識されず、 次回のJVM起動まで、その削除のお知らせをWrapperが通知しませんでした。

  • (Standard / Professional Edition)

    NOTICE(お知らせ)」ログレベルを新しく追加。 これで、ライセンスに関連するメッセージをログ化します。 これはトライアル・ライセンスのログ出力だけに表示されます。

  • (Standard / Professional Edition)

    新しくデフォルト「15分のトライアル・ライセンス」を追加。 登録を必要とせず、どのマシン上でも簡単に手間いらずで利用が可能なもので、 ライセンスを登録したり、トライアル・ライセンスを取得したり、ライセンスを購入したり、 などの手間は不要です。

バージョン3.4.1: 改訂内容

  • Mac OSX上でlaunchdから起動した場合、[wrapper.app.parameter.1]プロパティが 常に空文字に設定される問題を修正しました。 TestWrapperアプリケーションで正しく動作確認していましたが、 ほとんどのユーザー・アプリケーション上では失敗するでしょう。

  • (Professional Edition)

    ティック・タイマー、イベントコマンド、 イベントメール・コードのログ出力で潜在的な同期問題を修正しました。 問題報告はありませんでしたが、3.3.0以降のコードに存在していました。

  • 設定した[wrapper.java.command]が パス上に見つからない時の表示されるエラー・メッセージを改善しました。

  • JVMからSIGSEGVが検知されたとき、ログ中のシグナル名をログ記録します。 不明なものとしてログ記録されていました。

  • 新しいライセンス・キー ファイルでスタートするユーザーのヘルプ用に、 [wrapper.conf.in]テンプレートにいくつかのコメントを追加しました。

  • wrapper.conf.in]テンプレート・ファイルに、いくつかデフォルト・プロパティを追加しました。 アラートメールを送信することも同様、メモリチェックがなく、利用開始がより簡単になります。

  • wrapperW.exe動作中、小さなデバッグ・メッセージを追加しました。 これでWrapperバイナリ使用中であることが明白になります。

  • (Professional Edition)

    WrapperProcess.destroy()] 機能の問題を修正しました。 その機能がチャイルド(子)プロセスを強制的に終了することに失敗していました。

  • (Standard / Professional Edition)

    Windowsプラットフォーム用に[GetHostID.bat]ファイルを新しく追加しました。 このファイルは、新しいユーザーの利用開始をヘルプするために、 マシンのHostIdを表示するダイアログを開きます。

  • WrapperManager.appearOrphan()] メソッドを新しく追加しました。 そのメソッドは、Wrapperプロセスがクラッシュしたりフリーズしたりのイベントで、 WrapperManagerがJVMをシャットダウンする手法をテストするために利用されます。 これは、特定の問題のためではなく、弊社のテスト対象を調整するために追加されました。

  • カレント・ログファイルがまだ存在していないとき、 [wrapper.logfile.maxfiles] プロパティがスタートアップ時に適用されていない問題を修正しました。 PIDのようなユニークな値を含む[wrapper.logfile]値にとっては正常でした。

  • (Professional Edition)

    実行完了後もイベント・コマンドを残すバグを修正。

  • (Professional Edition)

    wrapper.event.<event_name>.command.block.action] プロパティを追加。 経過したコマンドに対するWrapperの動作を指定することができます。 可能な値は「KILL」あるいは「CONTINUE」、デフォルト値は「CONTINUE」です。

  • (Professional Edition)

    UNIXプラットフォームで実行後、 機能せずに残るイベント・コマンドの問題を修正しました。

  • 内部のティック・タイマー が32ビット版と同じように回らないという、 64ビット版上での潜在的な問題を修正しました。 これは全ての旧バージョンに起きていますが、何か問題を引き起こしたかどうかは不明です。 一貫性を保つために修正されました。

  • WrapperManagerクラスを変更しました。 これで、JVMとの最後のコンタクト後は、pingタイムアウトの4倍の秒数まで、 JVMに無理矢理シャットダウンしないようにリクエストします。 今までは、pingタイムアウトに90秒以上超えるものでしたが、 [wrapper.ping.timeout] がとても大きい値の場合、常に十分に長くではありませんでした。

  • ティック・カウンタの初期スタートポイントをシフトしましたので、 スタートアップ後、50秒、繰り返します。 これはユーザーにとって注目に値するものではありませんが、 スタートアップの初回に常に起こることなので、 このロールオーバーがより良いテスト検証されたことをお知らせしておきます。

  • wrapper.java.classpath.use_environment] プロパティを新しく追加しました。これで、Javaコマンドライン上で含めるのではなく、 クラスパス環境変数を使って、クラスパスの設定が可能になります。

  • Wrapperをシャットダウンするリクエストが発生するところでの問題を修正しました。 WrapperがJVMを起動する直前、Wrapperのシャットダウンが発生した場合、 そのシャットダウン・リクエストを無視して、JVMはそのまま起動されました。 これは全てのエディションにおいて修正されましたが、 [wrapper.event.jvm_prelaunch.command.on_exit.<n>=SHUTDOWN]プロパティが、 [wrapper.event.jvm_prelaunch.command.block=TRUE]プロパティと、 シャットダウンをトリガーしたコードで終了したコマンドと、共に、 使われているとき、プロフェッショナル版には依然問題がありました。

  • (Professional Edition)

    wrapper.event.<event_name>.command.block.action]プロパティを新しく追加しました。 これで、コマンド実行が設定したタイムアウト時間内に完了しないとき、 Wrapperがどのように動作するのかコントロールします。 可能な値は、「CONTINUE」「KILL」「KILL_SHUTDOWN」「KILL_RESTART」です。 デフォルト値は「CONTINUE」です。

  • (Professional Edition)

    以下のプロパティで、"デフォルト" イベントの種類の利用を可能にしました。 [wrapper.event.<event_name>.command.loglevel], [wrapper.event.<event_name>.command.block], [wrapper.event.<event_name>.command.block.timeout], [wrapper.event.<event_name>.command.on_exit.<n>]、 [wrapper.event.<event_name>.command.on_exit.default

  • Windowsプラットフォーム上でJVMが起動する直前に起きる 1バイト・バッファ・オーバーフローを修正しました。 これは3.4.0で導入されました。

  • サービスが起動されスタート失敗のとき、Wrapperのログファイルへ、 そのユーザーを指摘するメッセージを追加しました。

  • もしポートが有効でない場合、 バックエンド・ソケットを開く試みがあったとき表示されるデバッグ・メッセージを更新しましたので、 問題はないようです。他のポートで再試行します。

  • 一部のSolaris問題において、ある問題の回避策です。 「/usr/ucb/ps」がインストールされていなかった場合、シェルスクリプトが失敗する問題です。

  • UNIXバージョン上での問題を修正しました。 もし、システムパスに配置されていて、 そのパス・エレメントが相対的なシンボリック・リンク経由でバイナリを指している場合、 Javaの正しいロケーション解決にWrapperが失敗するかもしれない問題です。 これは3.4.0で導入されました。

バージョン3.4.0: 改訂内容

  • 最小のサポート・バージョンがJavaバージョン1.2から1.4へ上がりました。

  • Wrapperのシャットダウン・フックを管理するために利用されていた リフレクション・コードを取り外しました。 そのランタイム・メソッドは、現在、通常どおりコールされます。

  • TestWrapperシェルスクリプトに注意書きを追加しました。 これで、ユーザー・アプリケーション用にスクリプトを生成する際に、 ユーザーが「WRAPPER_HOME/src/bin/」ディレクトリーでスクリプトを 常に利用すべきであることが明白になります。 これは、3.3.8で始まるTestWrapper スクリプトへの変更のため、 一層多くの問題になりました。 バグ・レポート:#2902843

  • UNIXシェルスクリプトに インストールとリムーブ(取り外し)コマンドを追加しました。 これで現在は、スタートやストップする多くのUNIXプラットフォーム上で、 システム・スタートアップやシャットダウン時に、 Wrapperのインストールやリムーブ(取り外し)がずっと簡単になりました。 そのパッチ提供いただきましたLeo Leung に感謝します。

  • (Professional Edition)

    WrapperManager.exec]メソッドと、 [Wrapperプロセス]クラスを新しく追加しました。 これで、標準ランタイム・クラスを使わずに、Wrapperを通して、 チャイルド(子)プロセスの起動と管理ができます。これで、 UNIXプラットフォーム上でプロセスがforkされる方法で、厳しいメモリ問題を解決するのと同様に、 JVMがクラッシュしたり再起動の際に、チャイルド(子)プロセスのクリーンアップが可能になります。

  • WrapperManager.getUser]、 [getInteractiveUser] メソッドの問題を修正しました。 32ビット版Windows上で最新のコンパイラを使えない問題がありました。 (32ビット版Windowsバージョンをビルドするのに利用していたコンパイラは、 常にnullを返すこれらのメソッドを引き起こしていた問題の回避策のため、 3.3.9の時点で、3.3.5リリースで利用されたバージョンに戻されました。) このバージョンでの変更は、Wrapperの機能に影響を与えないはずです。

  • Windows32ビット版ビルドに、3.3.9で利用された古いコンパイラは、 シマンテックのセキュリティソフトで、FALSEヒットを引き起こしていました。 新しいコンパイラは、何も警告なしに、再びWrapperが通るようになりました。

  • JVMスタートアップ中の警告を追加しました。 もし[wrapper.java.command]のJavaコマンドが、 有効なJavaバイナリファイルへポイントしない場合に表示されます。

  • スクリプトとバッチ・ファイルを変更しました。 これで、システム(例:64ビット・システム 64ビット・Wrapperバイナリ)による Wrapper実行をロードする試みをします。 32ビットがロードされる試みに失敗した後、最初に実行されるように試みが行われます。 この動作は、Wrapperのデルタ・パックでとても便利です。

  • 問題に関連した時間をサポートする現在のタイムゾーンをログ記録するデバッグ出力をいくつか追加しました。

  • (Standard / Professional Edition)

    wrapper.license.debug]プロパティを新しく追加しました。 これで、スタートアップ時にテストされたライセンス・キーに関する情報をログ記録します。

  • (Standard / Professional Edition)

    ライセンス認証が失敗する問題を修正しました。 東日本タイムゾーンのサーバーで、ある時間にライセンス認証に失敗する問題がありました。 アップデート回数が難読した開発ライセンス・キーは影響ありませんでした。 これは3.3.7で導入された問題でした。

  • Wrapperシェルスクリプトのバグを修正しました。 非1バイト・ロケール内で、Solaris上でスクリプトを動かしたときに発生する問題がありました。 バグ・レポート:#2910327.

  • Wrapperスクリプトの潜在的なバグを修正しました。 スレッドダンプをリクエストすると、シェルがバックグランドへWrapperコンソールを送信して、 プロンプトで返してくるところに問題がありました。

  • 重い負荷がかかった場合、Javaログ出力が時々余計なラインをフィードする問題を修正しました。

  • 問題を修正しました。 Windows下でマッピングされたネットワーク・ドライブにインストールされていた場合、 サービスを開始しようとしたとき、リソースが見つからないというエラーを引き起こしていました。

  • いくつかアドバイス・メッセージを追加しました。 もし、Windowsバージョンのコンフィギュレーション・ファイルで、 マッピングされたネットワーク・ドライブ上に配置されたリソースが利用されている場合、 そのメッセージでは、UNC形式(マシン名を含むフルパス)のパス利用を薦めています。

  • (Standard / Professional Edition)

    Wrapperバイナリ・カスタマイズのバグを修正しました。 ソース・バイナリ・ファイルが「読みだけ(ReadOnly)」に設定されると起きる問題がありました。

  • クラスパス値が見つからない場合に、エラー・メッセージでの「null文字」問題を修正しました。

  • (Professional Edition)

    wrapper.event.default.attach_log=TRUE]経由での Wrapperのメール通知に、ログファイルを含めるオプションを追加しました。

  • Windowsのコンソール・ウィンドウを持たないJVMで、 ユーザーが[WrapperManager.requestThreadDump()] を呼び出したときに表示されるメッセージを改善しました。 これは、Wrapperで動かしたときには問題になるはずはなく、 Wrapperバイナリなしにスタンドアローンで動作したときに起きることがあります。

  • (Standard / Professional Edition)

    wrapper.wait_for_hostid]、 [wrapper.max_hostid_timeout] プロパティを追加しました。 このプロパティで、スタートアップ時にホストIDが有効になるまでWrapperを待機させる時間を設定できます。 OSがブート起動で、UNIXプラットフォーム上で、サーバー・ライセンスが 正しく有効化されていることを確認するのに大切なことです。

  • (Professional Edition)

    最初にプロパティ値がデフォルト値であった場合、 プロパティ値を参照した環境変数が正く展開されないという問題を修正しました。 全てのエディションで根本的な修正をされましたが、デフォルトが利用されている場合に、 「wrapper_start」イベントで送信されるメールの件名と本文で 「WRAPPER_HOSTNAME」変数が展開されないという、 唯一の問題をプロフェッショナル版で引き起こしていました。

  • (Professional Edition)

    環境変数の参照からパスのように表示するとき、 [wrapper.event.<event_name>.email.body] プロパティで設定したメール本文内のバックスラッシュが正しく取り扱えない問題を修正しました。

  • UNIXプラットフォームでの問題を修正しました。Wrapperが引数なしに動作する際に、 コンフィギュレーション・ファイルを配置できないというエラーをWrapperが表示していました。

  • (Standard / Professional Edition)

    ライセンス・キーた見つからないときに表示するメッセージを改善しました。

  • ユーザーがHostIDをリクエストするときの、コミュニティー版へ新しいメッセージを追加しました。

  • スクリプトへ[WAIT_FOR_STARTED_STATUS]、[WAIT_FOR_STARTED_TIMEOUT]を追加しました。 これで、プロセスがスタートされるまで、デーモン化されたプロセスを開始する際に、 スクリプトを(タイムアウト秒数まで)待機させることができます。 Dobes Vへ感謝します。 (Feature リクエスト 2917391)

  • 「-s」や「--service」内部コマンドで、ユーザーがWrapperを動かそうと試みたときに 表示されるエラー・メッセージを改善しました。

  • 探したプロパティが見つからないとき、 [WrapperSystemPropertyUtil.getBooleanValue()] メソッドが指定したデフォルト値を正しく返してこない問題を修正しました。 また、[getStringValue()] メソッドを新しく追加しました。

  • Windows Vista以降のバージョン上で、Wrapperをサービスとしてインストールしたり取り外したり、 ユーザーが操作を試みたとき、表示されるエラー・メッセージを改善しました。

  • GUIを表示する際に、launchdで起動されたMacOSXアプリケーションが 「Returning nil _server」エラーに遭遇するところでのアドバイス・メッセージを追加しました。

Version 3.3.9: Changes and bug fixes

  • Modify the way JNI functions are called from within the native library so they work correctly on platforms which are not ASCII based.

  • (Professional Edition)

    Add support for IBM z/OS 390 servers. This is still an alpha release and will be made available on request.

  • Improve the message displayed when a server license key is used on a different server.

  • Add a minimum max file size of 1024 bytes to the wrapper.logfile.maxsize property to avoid the log file rotating too often if the user enters a very small value.

  • Add a message that shows up in the console when the Wrapper fails to write to the configured log file. As with previous versions, it will then fall back to writing to wrapper.log in the current working directory.

  • On UNIX platforms, automatically set the wrapper.disable_console_input property when wrapper.daemonize is set.

  • Fix a problem introduced in 3.3.8 where relative configuration file includes were failing to resolve correctly when the wrapper.working.dir and wrapper.daemonize properties were used together. The wrapper.daemonize property causes the configuration to be loaded twice on startup and the working directly was not being reset correctly before it was loaded the second time.

  • Fix a problem introduced in 3.3.8 where wildcard selection of files on Windows failed in some cases.

  • Fix a problem introduced in 3.3.8 where setting the wrapper.logfile.maxfiles property to 0 was causing all log files to be deleted rather than none when the ROLLNUM file pattern was used.

  • Revert the way rolled log files are deleted when using the ROLLNUM file pattern to the functionality used in 3.3.7 and earlier. Files such as wrapper.log.bak or other files manually created with the same log file base name were also being deleted with 3.3.8.

  • (Standard / Professional Edition)

    Fix a problem where the close window button in the title of the WrapperW log dialog was not correctly cancelling the dialog.

  • (Standard / Professional Edition)

    Fix a problem where the WrapperW log dialog would sometimes fail to show itself on top of other Windows if the splashscreen had been displayed on startup.

  • Fix a problem on 32-bit Windows versions where starting with he Wrapper, the WrapperManager.getUser() and getInteractiveUser() methods were always returning null. This problem was introduced in 3.3.6.

  • (Professional Edition)

    Fix a buffer overflow when sending alert emails to multiple addresses. This would sometimes cause crashes in 3.3.7 and 3.3.8 when sending alert emails to even a single recipient. Because of the nature of the overflow, in most cases did not cause any problems.

Version 3.3.8: Changes and bug fixes

  • (Standard / Professional Edition)

    Add the new start type DELAY_START for NT Services, which startes the service after other auto-start services are started plus a short delay.

  • Fix a problem where the Wrapper's PID file was not being set to the correct PID when the Wrapper was launched daemonized. With the shell scripts that ship with the Wrapper, this means that it would not be possible to stop the Wrapper using the script because the expected PID did not exist. This was a problem introduced in 3.3.7.

  • (Standard / Professional Edition)

    Changed the timing for the wrapper's splashscreen when the splash screen mode was set to JVM_STARTING. Now the splashscreen will disappear when the JVM has been initialized.

  • (Standard / Professional Edition)

    Fix a problem where the splashscreen was being shown when starting a service or performing other command line operations.

  • Remove some extra debug output on startup for Mac versions.

  • Fix a crash in the Community Edition on PPC platforms of the Mac OSX version. This crash has been reproduced in all versions starting with 3.3.1. The OSX distribution is a universal binary but does not appear to result in a crash on x86 servers. Standard and Professional Editions were not affected.

  • Fix a problem on Windows versions where problems accessing the registry were not reporting the correct error message. This did not cause any problems in and of itself, but it made it difficult to track the down the cause.

  • When wildcards are used in the classpath elements, the list of matching jar files included in the classpath are now sorted to ensure that their order is consistent across installations. Normally it would not matter, but if certain classes or resources are redefined in multiple jars this will ensure that the application now always works the same.

  • Fix a problem where wrapper.logfile.maxfiles was being ignored when wrapper.logfile.rollmode=JVM was set.

  • Changed the way the wrapper.logfile.maxfiles property works with the ROLLNUM token. Now when the log files are rolled, all files greater than maxfiles count will be deleted. Previously, the Wrapper would roll within the maxfiles count and ignore extra files if they existed. This would cause extra files to be left around if the maxfiles property value was decreased.

  • Add new wrapper.logfile.purge.pattern and wrapper.logfile.purge.sort properties which make it possible to limit the number of log files in some advanced cases. Be sure to read the documentation before playing with them.

  • Fix a potential crash when referencing non-existent environment variables in the value of wrapper.logfile.

  • Modify the way all properties used to define file names behave so that undefined environment variable references will now have their '%' characters replaced by '_'. This is to avoid problems caused by file names containing '%' characters on some platforms.

  • Fix a problem introduced in 3.3.6 where the Windows shown by the JVM or its child processes could not be displayed when running in iteractive mode.

  • Rework the TestWrapper application a bit so it can now be run in headless mode for testing.

  • Fix a problem on some UNIX platforms where the shell script was showing an extra '-n' when run with the "start" command.

  • Fix a problem for FreeBSD which could cause the Wrapper being unable to stop the Wrapper daemon if the ps command buffer size (kern.ps_arg_cache_limit) was too small to contain the Wrapper command line.

Version 3.3.7: Changes and bug fixes

  • (Standard / Professional Edition)

    Added the ability to customize the wrapper.exe and wrapperW.exe binaries on Windows with a user specified icon and splash screen.

  • (Standard / Professional Edition)

    Added a new wrapper.splashscreen.mode property to control how long the splashscreen is visible.

  • Fix a problem on SELinux where a strict security policy could lead the Wrapper fail to load the libwrapper library. Thanks to Jean for the hint.

  • (Standard / Professional Edition)

    Fixed a problem in the obfuscated license date, which caused a license to be reported as invalid if run in a timezone west of Japan. This feature was implemented in 3.3.6, but disabled on the site until the release of 3.3.7. Thanks to Leo for the hint.

  • Fix issue about SELinux where strict security policy could lead the wrapper fail to load the libwrapper library. Thanks to Jean for the hint.

  • Added a new WRAPPER_PID environment variable. Feature Request #2870136.

  • Added a new WrapperManager.getWrapperLogFile() method and WrapperLogFileChangedEvent class that can be used to receive notifications of changes to the Wrapper log file currently in use. Feature Request #2870133.

  • (Professional Edition)

    Improved the wrapper.event.<event_name>.email.recipient property so it now supports the ability to specify multiple recipients.

Version 3.3.6: Changes and bug fixes

Version 3.3.5: Changes and bug fixes

  • Fix a problem on some UNIX platforms introduced in 3.3.4 where the Wrapper would crash on startup if the configured JVM could not be found.

  • Fix a problem introduced in 3.3.2 where the Wrapper could crash if the system host name was longer than 27 characters in length.

  • Fix a potential problem with the way thread ids were being compared on UNIX systems.

  • Add a new wrapper.java.additional.auto_bits property which will automatically add the -d32 or -d64 arguments to the JVM for platforms whose JVMs typically expect the argument.

  • (Professional Edition)

    Fix a problem with the Date field of outgoing event emails.

Version 3.3.4: Changes and bug fixes

  • (Standard / Professional Edition)

    Update the development license to version 1.1 so that a new copyright notice file can be shipped with user applications rather than the full license text.

  • The Community Edition may be licensed under either the GPL2 based Community License, or the Development License. The source for the Standard and Professional Editions of the Wrapper are proprietary. License Overview.

  • Fix a problem introduced in 3.3.2 where querying a the status of a Windows service with the -q or -qs commands resulted in an access violation. The running status of the service was reported correctly but additional configuration information was failing. Bug #2644515.

  • Add a new wrapper.disable_restarts.automatic property to disable only restarts caused by JVM timeouts, crashes, etc. Manual or configured restarts will still be allowed.

  • Switch to using make for HPUX IA 32/64 builds.

  • Add Advice comments when the Wrapper fails to launch the JVM process.

  • Fix a problem on UNIX platforms where log entries made by the forked Wrapper process would result in two blocks of log entries in the log file because the parent Wrapper process would think they were console output from the JVM process.

  • Add a set of new Wrapper environment variables that can be referenced in the wrapper.conf file to generate random numbers, or timestamps for use in generating unique file names, etc. See the Default Environment Variable Definitions section for more details.

  • (Standard / Professional Edition)

    Fix a problem with Development licenses being able to authorize applications using Integration Method #4 which was added in 3.3.3.

  • Add the number of bits of the current Wrapper to the startup banner to aid in support requests.

  • (Standard / Professional Edition)

    Fix a crash problem on HPUX versions which would reliably happen on some machines at startup.

Version 3.3.3: Changes and bug fixes

  • Modify the wrapper.ignore_signals property so it now takes the values WRAPPER, JAVA, and BOTH, in addition to TRUE and FALSE.

  • Modify the WrapperManager so it is now careful never to poll the native library once the JVM is flagged as being ready to shutdown. This is to make sure that the JVM never exits in the middle of a call as that could lead to the JVM crashing.

  • Add a pair of methods to allow threads to request and release locks which will prevent the Wrapper from letting the JVM exit while certain operations are in progress. See WrapperManager.requestShutdownLock() and WrapperManager.releaseShutdownLock().

  • Fix a problem where interactive services would sometimes leave a console window visible when after starting up. The Wrapper is now more resilient about closing the window even if it fails to do so initially.

  • Add a new integration method (#4), which makes it easy to configure the Wrapper to execute an executable jar file.

  • Fix a problem where the random generator was not being seeded correctly before naming the Wrapper's console window when running as a Windows service. This was leading to problems identifying the wrapper's console when more than one service was running on the same machine.

Version 3.3.2: Changes and bug fixes

  • Add a file information record to the wrapper.exe and wrapperW.exe binaries so the Version tab will be displayed correctly in the Properties dialog of the file.

  • (Standard / Professional Edition)

    Fix a problem with the wrapperW.exe binary where the log dialog was not being displayed correctly when the Wrapper was launched with the "-?", "-v", or "-h" arguments.

  • (Standard / Professional Edition)

    Fix a problem with the wrapperW.exe binary where a message was being displayed in the dialog with the location of the full log file even if there had not been any entries written to the log.

  • (Professional Edition)

    Improve the debug output produced when sending event emails when the wrapper.event.<event_name>.email.debug property enabled.

  • (Professional Edition)

    Add wrapper.event.<event_name>.email.send.timeout and wrapper.event.<event_name>.email.receive.timeout properties to avoid the Wrapper hanging waiting for a response from a remote mail server. Bug #2064885.

  • (Professional Edition)

    Fix a problem where the Wrapper would get stuck and fail to send emails with some mail servers. Problems was being caused by incorrect linefeeds in the body of the email.

  • Add a warning if the leading '#' is missing from an '#include' in the configuration file to assist users with include file problems.

  • Added a new wrapper.ntservice.generate_console property which will cause the Wrapper to always generate a console when running as a service and then hide it immediately. This will cause a slight flicker but is needed to support thread dumps. Bug #2060181.

  • Fix a problem in the Windows version where the console window would sometimes be left visible when running as an interactive service even when it was configured to be hidden.

  • Add support for PowerEvents so Windows services can respond to suspend and resume events.

  • Fix a problem where the wrapper.key system property passed to the JVM was being generated incorrectly randomly, 1 in 2048 times the JVM was launched. This would result in the JVM failing to start and the Wrapper shutting down.

  • Add a new wrapper.disable_console_input to disable to feature which allows the Wrapper to pass console input on to the Java process.

  • Fix a buffer overflow problem in the logging code which would happen once on startup. This was benign on most platforms but was causing intermittent crashes in the 32-bit AIX version.

  • Modify the way configuration properties are parsed so that their names are no longer case sensitive.

  • Modify the WrapperServiceException so that a new getErrorCode method can be used to obtain the integer error code which caused the exception. Feature Request #2188280.

  • (Standard / Professional Edition)

    Fix a problem where on some Windows machines the Wrapper would return a random hostId that changed each time the system was rebooted.

  • (Standard / Professional Edition)

    Make it possible to define License Keys so that their property names are encoded using either the host name or hostId. This makes it possible to define multiple keys within the same configuration file, visible on the same host. This was necessary to support some load balanced network adapters where the visible hostId changes depending on the active physical network adapter.

  • Rework the Java side state engine so it is now possible for the Java side of the Wrapper to respond to stop events while the WrapperListener.start method is still in progress.

  • Add a new wrapper.listener.force_stop property which allows control over whether the WrapperListener.stop method is called on shutdown even if the WrapperListener.start method has not yet completed.

  • Fix a problem on Windows where the ability to start and stop the Wrapper as a service using the Wrapper itself was requiring the Administrator permission when a lower permission should have been possible. The Wrapper should now allow service control to do whatever is possible from the Services control panel.

  • Fix a memory corruption error if the value of wrapper.java.maxmemory was more than 4 digits in length. wrapper.java.initmemory did not have any problems.

  • (Professional Edition)

    Add a new wrapper.event.<event_name>.email.client.host property which makes it possible to configure the host name sent in EHLO and HELO commands to the SMTP server.

  • Add a new default environment variable, WRAPPER_HOST_NAME, which stores the name of the machine where the Wrapper is running.

Version 3.3.1: Changes and bug fixes

  • Add debug output showing the current os name and architecture to aid in debugging problems.

  • (Standard / Professional Edition)

    Improve the message displayed when a license key is found but is deemed to be invalid.

  • Modify the template wrapper.conf file to help users debug include file problems.

  • Disable the console title feature on all UNIX platforms other than Linux because the console title does not get reset correctly when the Wrapper process terminates.

  • Add support for HP-UX IA64 CPUs.

  • Update the license banner in source files so it is clearer that the user is restricted by the license they agreed to.

  • Modify the Community edition so it will now display a Licensed to banner on startup if shipped with a Development License. This is required to enable the distribution of the Community Edition under the Development License.

  • (Professional Edition)

    Fix a problem where the UNIX versions of the Professional Edition would sometimes deadlock on startup when run as a daemon process. Bug #1989355.

  • (Professional Edition)

    Added two new events; jvm_failed_invocation and jvm_max_failed_invocations. Feature Request #1994718.

  • Fix a problem where the Windows service exit code was not being set correctly when the JVM exited with a non-zero exit code. The problem could be seen by running "sc query {service}" from the command line. Bug #1859061.

  • (Standard / Professional Edition)

    Fix a problem on Windows versions where servers which reported a large number of possible host ids could cause a buffer overflow on startup. This crash was possible when using either Development or Server licenses. Removed duplicate host ids from the list of possible ids.

  • Add a new "condrestart" command to the shell script which will restart the Wrapper only if it is already running. Feature Request #1928045.

  • Fix a problem where the 64-bit Solaris x86 version was unable to load its JNI library. Bug #1992039.

  • Fix a problem on Windows versions where a frozen JVM process was not always being killed. This could result in the zombie JVM processes being left around that consumed memory and other resources.

  • Add a new wrapper.ignore_user_logoffs property which allows the Wrapper and JVM to survive logouts when launched as a console application from another service.

  • (Standard / Professional Edition)

    Add a wrapperW.exe binary in Windows implementations which makes it possible to run the Wrapper without a console. A console still flickers for an instant when the Wrapper starts. This is the same issue that has existed when running as an interactive service and is required to make thread dumping possible.

  • (Standard / Professional Edition)

    Add new wrapper.logdialog.enable, wrapper.logdialog.format, wrapper.logdialog.lines, and wrapper.logdialog.loglevel properties used to configure the display of a Log dialog when the wrapperW.exe binary exits in an error state.

  • Fix a problem where the Wrapper was attempting to reopen its backend port even when the JVM was down. This was only a problem when the defined port range was limited to a single port with the wrapper.port.min and wrapper.port.max properties. In such a case one or more warning messages were being displayed because the port is locked for a few moments after being closed.

  • (Standard / Professional Edition)

    The wrapper.java.initmemory.percent and wrapper.java.maxmemory.percent properties were not correctly being calculated relative to a maximum of 2048MB for 32-bit versions of the Wrapper. Bug #2053167.

Version 3.3.0: Changes and bug fixes

  • Add a new wrapper.ping.interval.logged property which makes it possible to reduce the debug output caused by ping transactions between the Wrapper and JVM.

  • Fix a problem on Windows where the Windows Service Manager was not waiting the full configured time of the wrapper.jvm_exit.timeout and wrapper.shutdown.timeout properties. This was leading to the net stop command timing out and the system shutting down without the java application having fully stopped. Bug #1582568.

  • If internal firewalls were preventing the backend socket from being created, it was not being made clear what the cause was. It was also possible that the JVM would deadlock on shutdown. This second problem was recovered from when the Wrapper killed the JVM.

  • Rework the console output from all Wrapper classes to make it much more obvious that that is their source.

  • Submit a patch to the UNIX sh script by Chris Dance which makes it possible to tell the shell to wait a few seconds for the Wrapper to start up. Also includes some modifications to work correctly on older Debian and RedHat systems.

  • Fix a problem where the local copy of ant was not always being used correctly on UNIX systems which have a default copy of any installed. Thanks to Robey Pointer for the patch.

  • Add the -lm to the command line when building Linux 32 and 64 bit versions of the Wrapper on Linux. This is to support building on recent Debian and Ubuntu versions. Thanks to Robey Pointer for the patch.

  • Add support for the SIGUSR1 and SIGUSR2 signals so they can now trigger a shutdown, restart or be forwarded to the JVM for custom functionality. See the wrapper.signal.mode.usr1 and wrapper.signal.mode.usr2 properties. Based on a patch by Robey Pointer. Note that the JVM process does not trap SIGUSR1 or SIGUSR2 signals as they are used internally by the JVM as part of the garbage collection process.

  • Fix a problem where the WRAPPER_OS, WRAPPER_ARCH, and WRAPPER_BITS environment variables were not being initialized correctly for the various UNIX platforms.

  • Removed the 4096Mb upper limit set on the wrapper.java.initmemory and wrapper.java.maxmemory properties. 64bit users need to go way beyond that.

  • Fix a problem where relative include file references in the configuration file were not working correctly if the wrapper.working.dir was used to change the working directory. The working directory is now always reset to its original value as the configuration file is being loaded.

  • Added a new wrapper.registry.java_home property which makes it possible to specify the location of java within the registry.

  • Set a new WRAPPER_JAVA_HOME environment variable if the JAVA_HOME is located in the Windows registry.

  • Modify the way properties are looked up so that any unreplaced environment variable references will be reevaluated in case they were set after the property was originally set. This is possible with some WRAPPER_* environment variables or depending on the placement of set.* properties in the configuration file.

  • Set any unset properties to their default values internally. This is necessary so the WrapperManager.getProperties() method returns the correct set of active properties.

  • Fix an occasional crash with 64-bit UNIX caused by a native synchronization problem when system signals are trapped. Bug #1614010.

  • Fix a problem on Solaris versions, where the Wrapper was not correctly recovering and attempting another back end port when the first was already in use. Bug #1594073.

  • Fix a problem on Solaris and AIX where the RUN_AS_USER feature of the shell script was not working due to lack of support for the "-m" option of su. The shell script now uses "su -". Bug #1590168.

  • Add HP-UX Makefiles for building with make. Fix some problems in the shell script to make the script work better on HP-UX. Thanks to David Brown and Nicolas Varney for the patches.

  • Fix a problem where any signals received by the JVM and triggering a SIGCHLD signal in the Wrapper were being interpretted as the JVM having stopped. This was not always true. Bug #1643666.

  • The Wrapper is now able to detect when the JVM process is stopped and continued. It will still timeout if stopped, but a descriptive warning is now logged.

  • Increase the maximum number of log entries which can be queued to avoid losing them. These are only used for log entries outside of the primary thread.

  • Fix a problem in the shell script which was making it impossible to stop the Wrapper or query its status on OSX.

  • Add support for 64 bit AIX. Thanks to Nicolas Varney for supplying a Makefile.

  • Correct the AIX library extension to be ".a".

  • Rename the UNIX Makefiles so it is more obvious which tool must be used to build with them.

  • Fix a problem where the HP-UX native library would not be located correctly for some processor types if the file had a platform specific name.

  • Internally rename the WRAPPER_JSTATE_LAUNCH state to WRAPPER_JSTATE_LAUNCH_DELAY for clarity.

  • Fix a problem where the UNIX versions of the Wrapper would shutdown rather than restarting a frozen JVM if the arrival of the SIGCHLD signal from the old JVM process was delayed by more than a second or two.

  • Rework the Windows build so it now uses nmake and a Makefile rather than vcbuild. This is probably not as clean, but it was needed to get the 64-bit build working.

  • Fix a problem on Windows versions where quoted values specified from the command line were not always being requoted correctly when generating the java command line.

  • Add validation checks for Windows versions to make sure that all additional parameters, application arguments, the classpath, and library path all contain values which are quoted correctly. Incorrectly quoted values will now result in a warning message that will help resolve the problem.

  • Fix a memory leak when calling WrapperManager.listServices() on Windows. Bug #1665947.

  • Fix a buffer overflow problem if the Wrapper was launched without explicitly specifying a configuration file.

  • Add tests of the return values of all malloc calls to catch out of memory errors and recover as gracefully as possible. Bug #1649880.

  • Modify the WrapperManager.signalStarting and signalStopping methods so that they will never have the effect of shortening the existing timeout.

    Updated the javadocs of both methods so they more accurately reflect what the methods do.

  • Move the Wrapper Copyright banner into the Wrapper process so it will be output more consistently.

  • Branch the code to support Community, Standard, and Professional Editions of the Java Service Wrapper.

  • (Standard / Professional Edition)

    Add support for Server (Fixed) as well as Development (OEM based) licenses.

  • (Standard / Professional Edition)

    Add 64-bit versions of the Windows version. The 64-bit Community Edition will not be distributed initially to support ongoing development costs.

  • (Professional Edition)

    Add event handling callbacks for Wrapper start/stop, JVM start/stop, JVM started/stopped, JVM restart, JVM killed, and JVM unexpected exit events.

  • (Professional Edition)

    Add the ability to send emails in response to any event callback.

  • (Professional Edition)

    Add the ability to execute a a user configured command in response to any event callback.

  • Add WRAPPER_BIN_DIR and WRAPPER_WORKING_DIR environment variables which are now available for use within the wrapper.conf file as well as by any child processes.

  • Add documentation to the integration pages about existing system properties that be used to control the way the WrapperSimpleApp and WrapperStartStopApp handle application startup.

  • Remove support for native PPC and x86 distributions of the Wrapper for MAC OSX in favor of the universal X-Code distribution. This appears to be the standard for the market and saves lots of time on testing.

  • Add a new '-it' command to the Windows version which makes it possible to install and start a service as a single command.

  • Fix a problem where the PATH environment variable was not being set correctly on Windows versions when run as a service if the wrapper.ntservice.account was set and a PATH was set for both the SYSTEM and user accounts. Bug #1702274.

  • Modify the shell script to set JAVA_HOME to the default JVM location on OSX systems if it is not already set. OSX always places the JVM in a known location so this is possible. Thanks to Andrew Williams for the patch.

  • Fix a problem where the UNIX shell script would fail if the APP_NAME was set to a value containing spaces. Thanks to Andrew Williams for the patch. Bug #1695678.

  • Fix a problem where the DIST_ARCH was not being resolved correctly on HP-UX systems. Thanks to Matej Kraus for the patch. Patch #1697421.

  • Log output from the timer thread was not being queued correctly, this could have lead to timing problems if there were any delays writing to disk.

  • Add partial support for OS/400 into the build file. Still needs a Makefile.

  • Fix a problem where the WrapperActionServer would deadlock in its stop method if the JVM shutdown was initiated by a call to the shutdown or restart actions.

  • Add support for wrapper.console.title on UNIX platforms. Add a set of wrapper.console.title.<platform> properties which make it possible to set the title based on the platform.

  • Fix a problem where the wrapper.ntservice.account and wrapper.ntservice.password properties were being stored in the system registry if the they were specified on the command line when the Wrapper was installed as a service. This was broken in 3.2.2. Bug #1538725.

  • Fix a problem where the DUMP command was not working with the wrapper.commandfile property when run as a service on Windows. Bug #1644421.

  • Fix a problem where wildcards like "*.*" or "*" in a classpath property were including the "." and ".." files on Windows versions. Bug #1517928.

  • Modify the debug log output when the Wrapper is attempting to load its native library in an attempt to make the expected failures less threatening.

  • Commit a patch by Rob Oxspring which adds the start_msg and stop_msg commands to the shell script. These are expected by init scripts on HP-UX. Patch #1750027.

  • Add a DETAIL_STATUS flag to the UNIX shell script which will cause the status, start_msg, and stop_msg commands to display the current internal status of both the Wrapper and Java processes.

  • Commit a patch by Rob Oxspring which adds an init block to the UNIX shell script to make it work with install_initd and remove_initd scripts used by SUSE linux. Patch #1750028.

  • Commit a patch by Travis Carlson, ia64 systems were being grouped as "x86" systems. They now are assigned the name "ia" which makes it possible to create a distribution for them. Patch #1663887.

  • (Standard / Professional Edition)

    Add new wrapper.java.initmemory.percent and wrapper.java.maxmemory.percent properties which make it possible to set the initial and maximum memory values relative to the amount of physical memory on the system. Feature Request #1741051.

  • Add a new #include.debug declaration in the Wrapper configuration file which makes it much easier to debug problems with cascading include files.

  • Add -l and -controlcode commands to the Windows version which make it easy to send user defined control codes to the Wrapper running as a service.

  • Fix a synchronization problem in the logging code which could result in data corruption or access violations.

  • Add version numbers to the bat and sh scripts to make them easier to support.

  • Make the wrapper.ntservice.name, wrapper.ntservice.displayname, and wrapper.ntservice.description properties aliases of new wrapper.name, wrapper.displayname, and wrapper.description properties as they are now used on UNIX platforms as well as Windows.

  • Fix a problem where the Wrapper would sometimes fail to send a packet to the JVM because the sending of the packet would block. Thanks to Peter Gorgon for the patch.

  • Fix a problem where CPUs identifying themselves as 'ia64n' or 'ia64w' were not correctly being categorized as 'ia'. Thanks to Stirling Chow for the patch. Patch #1859412.

  • Add -d and --dump commands to the Windows version which make it possible to send thread dump requests to the Wrapper when running as a service. Works in association with the new wrapper.thread_dump_control_code property. Feature Request #1118110.

  • (Professional Edition)

    Add wrapper.timer.<n>.interval and wrapper.timer.<n>.action properties which make it possible to schedule Wrapper shutdowns, JVM restarts and thread dumps at arbitrary times.

  • Fix a problem where the default configuration file name was being corrupted by a buffer overrun. Thanks to Rob Joyce for the patch. Patch #1879049.

  • Fix a problem where the WrapperManager would sometimes attempt to unregister its shutdown hook after the shutdown hook had been initiated. Bug #1799489.

  • Fix a problem where log files were limited to 2GB on Linux systems. Bug #1881038.

Version 3.2.3: Changes and bug fixes

  • Add support for x86 Mac OS X distributions.

  • The 3.2.2 Windows version was accidentally released with its MFC libraries dynamically linked. This meant that anyone who did not have VS8 installed were not able to run the Wrapper due to missing DLLs. This version fixes that snafu by correctly using statically linked libraries as was done in previous versions built with VS6. Bug #1578554.

Version 3.2.2: Changes and bug fixes

  • Correct a typo in the usage output of the WrapperStartStopApp. Thanks to Michael Giroux for pointing it out.

  • Fix a problem on OSF1 systems where the backend socket was not listening correctly due to a backlog of 0. This was broken in 3.2.0. Thanks to Phillip Gussow for supplying a patch.

  • Remove the com.silveregg.wrapper package classes that were deprecated in 3.0.0.

  • Fix a potential problem in the UNIX script where the lock file permissions were not being set correctly if the LOCKFILE and RUN_AS_USER variables are specified but the group of the specified user could not be resolved.

  • Fix a problem where the exit code returned by WrapperListener.stop was being ignored in some cases.

  • Fix a problem where the shell script would not work correctly when the Wrapper or its configuration files were located in a directory path containing spaces.

  • Apply a series of patches by Michael Saya to get the Windows 64 bit build working.

  • Fix a problem in UNIX versions where the TERM signal handler was being disabled when a CHLD signal was received.

  • Added support in UNIX versions for the HUP signal.

  • Added a new wrapper.signal.mode.hup property to let the user control what happens when the Wrapper process receives an HUP signal

  • Migrated the source to Subversion from CVS. Did a bunch of cleanup in the source, removing CVS specific tags.

  • Fix a problem in UNIX versions were the pid file specified by the wrapper.java.pidfile property contained the Wrapper pid rather than the jvm pid. Bug #1565011.

  • Fix a problem in UNIX versions where the file specified by the wrapper.java.pidfile property was not always being deleted when the JVM process went away.

  • A user encountered a JVM bug where calls to System.exit were resulting in an IllegalThreadStateException being thrown. Added some code to trap this and shut down the JVM using other means to avoid a hang during shutdown.

  • Fix a NullPointerException caused by users incorrectly implementing an Integration Method #3 class and then calling WrapperManager.start with a null value for the args parameter.

  • Update the banner displayed by the Wrapper on startup to include a copyright notice.

  • Add a new 'Z' log format which will log the time to millisecond accuracy.

  • Fix a problem where the JVM exit code was not being set correctly when the JVM was shutdown using WrapperManager.stopImmediate(). The exit code of the Wrapper was being set correctly through other means however.

  • Fix a potential synchronization problem in the logging code if a JVM exits with debug output enabled.

  • Updated the WrapperListener.stop method javadocs to better explain the exitCode value under certain exit modes.

  • On UNIX versions, add a log message which records the signal that caused the JVM process to exit when it terminates unexpectedly.

  • Fix a problem where the wrapper.on_exit.<n> property was not working correctly in some cases on UNIX. With help from Andreas Schafer.

  • Add support for building the Wrapper with Visual Studio 8 for Windows. Releases will now be done using this compiler.

  • Fix a CRITICAL bug in the 3.2.0 and 3.2.1 Windows versions of the Wrapper where the Wrapper would crash under rare circumstances when running as a service. If the service manager interrogated the service at the same instant as the Wrapper was pinging the JVM, the Wrapper was sometimes crashing due to a synchronization problem. The problem did not exist prior to 3.2.0. Bug #1574537.

  • Fix a minor logging problem where the 'D' format was not displaying the correct thread name for queued log messages.

Version 3.2.1: Changes and bug fixes

  • Fix a problem with the solaris-sparc-64 makefile.

  • Add a solaris-x86-64 makefile.

  • Merge in a patch by Hugo Weber to make it possible to configure the Wrapper to pull the JRE from the system registry on windows.

  • Fix a batch file bug added in 3.2.0 where the scripts would not function correctly if the full path to the batch file contained spaces. Bug #1450601.

  • Modify the message shown when a native library fails to load so the exception message text is now shown in the log without having to enable debug log output.

  • Modify the UNIX shell script to be more informative if the script is unable to locate a Wrapper binary due to a executable bit permission problem.

  • Fix a minor permission problem with the build for the delta-pack.

  • Commit a patch by Juergen Hermann to make the error shown when realpath fails clearer.

  • Add the ability to use a default wrapper.conf file that is in the same directory as the Wrapper binary. The file will be named based on the name of the Wrapper binary.

  • Synchronize the command line so that both the Windows and UNIX versions are now the same. The old command line syntaxes are now supported everywhere so there will be no compatibility problems.

  • It is no longer possible to specify arguments using the '/c' syntax. This was undocumented so hopefully it is not being used. The documented '-c' syntax must now be used. The change was necessary to synchronize the command line between UNIX and Windows platforms.

  • The 32-bit HP-UX 3.2.0 build was generating a libwrapper.so file rather than libwrapper.sl.

  • Make the WrapperManager.setConsoleTitle, getWrapperPID, and getJavaPID methods available through JMX.

  • Fix a state engine problem introduced in 3.2.0 which was causing the wrapper.on_exit.<n> properties to be ignored in most cases.

  • Fix a potential problem that could have caused crashes when debug logging was enabled.

  • Fix a problem where signals were not being handled correctly on some UNIX platforms, including AIX. This was making it impossible to shutdown the Wrapper cleanly with the TERM signal. Bug #1477619.

  • Add new default environment variables which can be referenced in a configuration file to configure platform specific directories and file names. WRAPPER_OS, WRAPPER_ARCH, and WRAPPER_BITS.

  • Add a -v argument to make it possible to request the version from a wrapper binary.

  • Add support for registering the WrapperManager MBean with the PlatformMBeanServer when run on a 1.5+ JVM. See the JMX section in the documentation for details.

  • Rework the way timeout properties are handled. Values of 0 now actually disable the timeouts rather than setting them to a large value. To avoid overflow problems when converting to internal timer ticks, timeouts are now restricted to a maximum of 20 days, or 1728000 seconds. Change affects the wrapper.cpu.timeout, wrapper.startup.timeout, wrapper.ping.timeout, wrapper.shutdown.timeout, and wrapper.jvm_exit.timeout properties. For values less than 20 days, there should be no change in functionality.

  • Add support for debuggers. The Wrapper will now show a warning on startup and then again the first time a timeout occurs. But all timeouts will be ignored. This is to avoid problems with the Wrapper restarting a suspended JVM in the middle of a debugging session. The Wrapper enters this mode if the wrapper.java.command ends with the string "jdb" or "jdb.exe", or the "-Xdebug" parameter is passed to the JVM.

  • Add 'athlon' to the list of supported architectures.

  • Fix a problem where the environment variables loaded when a service was started were always the system environment even if the service was running as a specific account. The environment of a specific account will now be loaded on top of the system environment if the USERNAME environment variable is set by the system. Bug #1491138.

  • Added new wrapper.ntservice.pausable wrapper.ntservice.pausable.stop_jvm properties to make it possible to pause and resume the Wrapper when installed as a Windows service.

  • Added new Pause and Resume batch files as well as modified the command batch file to support pause and resume.

  • Added PAUSE and RESUME commands for use by the wrapper.commandfile property.

  • Fix a problem with the wrapper.pidfile, wrapper.java.pidfile, wrapper.anchorfile, wrapper.commandfile, wrapper.statusfile, wrapper.java.statusfile, wrapper.java.idfile, and wrapper.lockfile.umask properties where forward slashes in paths were not being changed to back slashes on Windows versions.

  • Simplify the code used to load a native library by using the System.mapLibraryName method rather than doing the same thing manually.

  • Add a new wrapper.syslog.facility property which makes it possible to specify the syslog facility on UNIX systems. Thanks for the patch from Bruce Pennypacker.

  • Removed the custom thread counting used to keep track of when the wrapped Java application has completed. It is now done in a different way that will work on all Java implementations without requiring any special consideration of the current JVM. Deprecated the wrapper.monitor_thread_count and wrapper.thread_count_delay properties. Bug #1470265.

  • The WrapperStartStopApp helper class still requires thread counting if the stopWait parameter is set to true. Previous versions all hard coded the system thread count to 1 which worked for most JVMs. A new system property, org.tanukisoftware.wrapper.WrapperStartStopApp.systemThreadCount, was added to make it possible to customize. It currently defaults to 1.

  • Make it possible to extend the WrapperSimpleApp and WrapperStartStopApp helper classes. Feature Request #1510274.

  • Add warning messages if the old org.silveregg.wrapper package classes are still being used. They will be removed in the next release.

Version 3.2.0: Changes and bug fixes

  • Rework the release cycle so that the wrapper.jar file released for all platforms is now built on the same machine. This resolves a few incompatibility problems caused by jars built on very new JVMs but run on old JVMs.

  • Add additional output when the JVM can not be launched due to security restrictions on Windows.

  • Greatly improved the performance of file logging. On a Windows test machine 3.1.2 could log 67210 lines of output in 20 seconds with a 80-15% split between the Wrapper and JVM process CPU usage. It now outputs 215214 lines with a 64-34% split, also showing less load on the system process. This is a 220% increase in performance. In both cases, the JVM was completely idle other than the console output which makes the Wrapper appear to be a bit of a CPU hog. In fact it is the only process doing any work in this case. This improvement was accomplished by keeping the log file open unless idle. The idle time can be controlled using the new wrapper.logfile.inactivity.timeout property. The speed increase on UNIX platforms was much smaller at around 10%.

  • Add a new property, wrapper.disable_restarts, which will completely disable the Wrapper's ability to restart JVMs.

  • Add a pair of new properties, wrapper.port.min and wrapper.port.max, which make it possible to define the port range used when a specific wrapper.port is not specified.

  • Fix a problem where certain characters like umlauts were being stripped from property values. Bug #1049528.

  • Make the PIDs of the Wrapper and Java process easier to access by providing a new pair os system properties; wrapper.pid and wrapper.java.pid, as well as a new pair of methods; WrapperManager.getWrapperPID() and WrapperManager.getJavaPID().

  • Add a new WrapperEventListener class which can be implemented to receive a wide variety of events from the Wrapper.

  • Add a WrapperServiceControlEvent class which will report any service control codes received by the Wrapper as it is running as an NT service. This was added to make it possible for other applications to sent custom codes to the Wrapper using the Window Service Manager.

  • Add a WrapperManager.listServices() method which can be used to obtain thestatus of all services on a Windows system.

  • Add a WrapperManager.sendServiceControlCode() method which makes it possible to start, stop, pause, continue, any service on Windows systems. It is alsopossible to send custom user codes via the service manager.

  • Add comments in the sh script to support the chkconfig command.

  • Implement the ability to read from standard input via System.in. Feature Request #1024693.

  • Made the tick based timer the default by changing the default value of the wrapper.use_system_time property to false. Most users should see an improvement in reliability under heavy loads with this new setting. If you have extended any timeouts in the past, you may wish to try going back to defaults as they may no longer need to be extended.

  • Add a new wrapper.restart.reload_configuration property which causes the Wrapper to reload its configuration file immediately before a JVM restart. Properties which can not be reloaded have comments stating that fact in their documentation. Feature Request #981060.

  • Fix a problem in the UNIX shell script which was preventing the script from locating the PID and anchor files when the wrapper.working.dir property was used.

  • Modify UNIX versions so that the Wrapper binary will now force its working directory to the location of the Wrapper binary. This change was made to make the UNIX version work the same way as the Windows version and thus make configuration files that modify their working directory work correctly on a cross platform basis. Users which have been using the scripts supplied with the Wrapper should not encounter any problems. Other users may require slight changes to their configuration file to deal with the new way that the Wrapper deals with its initial working directory.

  • Add a new method WrapperManager.getProperties() which makes it possible to access any property in the Wrapper configuration file.

  • Fix a problem where TERM signals were not being correctly ignored by the JVM process on UNIX platforms even if the wrapper.ignore_signals property was set to true. Earlier versions of the Wrapper would generate a WRAPPER_CTRL_SHUTDOWN_EVENT when a TERM signal was received. On Windows that signal should never be ignored. To resolve this a new WRAPPER_CTRL_TERM_EVENT was added making it possible to selectively ignore the TERM signals. This change may affect user implementations of the WrapperListener.controlEvent() method. Bug #1086344.

  • The Windows version has a feature which allows the user to immediately kill the Wrapper and its Java application without waiting for a clean shutdown by pressing CTRL-C twice. Windows sends the CTRL-C signal to both the Wrapper and Java processes. Due to a rare timing problem, it was possible for the Java process to get the signal first and initialize a shutdown before the Wrapper could respond to the signal. In this case the Wrapper was interpreting this as a second CTRL-C signal even though the user only pressed it once.

  • If the wrapper.anchorfile or wrapper.pidfile properties are used on Windows they were being unintentionally deleted if the -t, -p, -i, or -r commands were used while another Wrapper instance was running. In the case of the anchor file, this would result in the Wrapper being shutdown unintentionally. This was not an issue on non-Windows versions. Bug #1108517.

  • Fix a security problem where the value of the wrapper.ntservice.account and wrapper.ntservice.password properties were being stored in plain text within the registry if they were specified on the command line when installing the Wrapper as a Windows service. Bug #1110183.

  • Add a pair of properties wrapper.ntservice.password.prompt and wrapper.ntservice.password.prompt.mask which which will cause the Wrapper to prompt the user for an account password when it is being installed as an NT service.

  • Added system properties to make it possible to configure whether or not the WrapperSimpleApp and WrapperStartStopApp helper classes will wait for the configured main methods to complete before reporting that the application has started. See the javadocs for these classes for more details.

  • Modify the HP-UX build so that it now dynamically links with the pthread library. This was to make the binaries work with HP-UX 11.00. Thanks to Sun Kun Choi for the patch.

  • Add new wrapper.statusfile and wrapper.java.statusfile properties which can be used by external applications to monitor the internal state of the Wrapper or JVM at any given time. These will not be useful to most users.

  • Add a new wrapper.commandfile property which can be used by external applications to control the Wrapper and its JVM.

  • Add a new wrapper.java.idfile property which can be used by external applications to monitor the internal state of the JVM at any given time.

  • Add a warning on startup if the JVM has a SecurityManager set but the wrapper.jar has not been granted the AllPermissions permission. Failure to do so will almost certainly lead to the Wrapper throwing a number of errors and this helps to point out the cause.

  • Add a security model which protects most Wrapper method calls when a SecurityManager has been registered. See the Security Model section for more details.

  • Add a new pair of batch files which can be used to start and stop the Wrapper when installed as a service.

  • Add new -q and -qs commands to the Windows version of the Wrapper which make it possible to query the currently installed status of the service. See the Query Service Status section for more details.

  • Fix a problem where the wrapper.java.library.path.append_system_path property was not working correctly on Windows when the system PATH contained quotes. Bug #1238726.

  • Modify the usage output of the Wrapper on all platforms so the Wrapper's version is now included. It was not previously possible to get the version of the Wrapper being used without launching a JVM.

  • Add a pair of new methods WrapperManager.stopAndReturn() and WrapperManager.restartAndReturn() which make it possible for code to stop or restart the JVM and then continue until the JVM is shutdown. This can be useful for shutdowns initiated within places like servlets, whose operation is expected to complete.

  • Fix a problem on UNIX where the child JVM was sometimes leaving around zombie processes after a restart. The SIGCHLD signal was not being handled correctly. Thanks to Traun Leyden for the patch. Bug #1291201.

  • Implement the ability to catch control events using the WrapperEventLisener. Feature Request #836975.

  • Add new wrapper.jvm.port, wrapper.jvm.port.min, and wrapper.jvm.port.max properties which make it possible to control the port the JVM uses to open a connection back to the JVM. The Wrapper uses to leave this up to the OS, but some users were having problems with the default conflicting with other ports.

  • Switch from using ftime() to gettimeofday() on UNIX platforms to work around a problem where the Wrapper would not run on new versions of OSX because they deprecated the ftime() function call. Thanks for the patch by Michael Macaluso. Bug #1313162.

  • Remove the shutdown timeout from the UNIX shell script. It is not needed and can cause a zombie JVM if the wrapper's internal shutdown timeout was longer than that of the shell script.

  • Add the ability to specify integer property values in base 8 or 16 in addition to base 10. Base 8 values start with a '0' and base 16 values start with a '0x'.

  • Make it possible to set the umask on all files created by the Wrapper as well as the default umask of files created by the JVM. Added new wrapper.umask, wrapper.java.umask, wrapper.pidfile.umask, wrapper.lockfile.umask, wrapper.java.pidfile.umask, wrapper.java.idfile.umask, wrapper.statusfile.umask, wrapper.java.statusfile.umask, wrapper.anchorfile.umask, and wrapper.logfile.umask properties.

  • Improve the message when the native library can not be loaded to make mention of the possibility of a 32/64 bit mismatch.

  • Add a new wrapper.monitor_thread_count property which makes it possible to disable the Wrapper's counting of non-daemon threads and thus the shutting down of the JVM when they have all completed.

  • Add support for BELOW_NORMAL and ABOVE_NORMAL options to the wrapper.ntservice.process_priority property. Feature Request #1373922.

  • Ignore '#' characters which are included within double quotes in the value of a property in the configuration file. Unquoted values must be escaped with a second '#' characters or it will be interpreted as a comment.

  • Display the Wrapper banner in the JVM earlier so that it is displayed even where there are startup errors.

  • Modify the WrapperSimpleApp and WrapperStartStopApp classes so that the WrapperManager is always initialized immediately. This makes the output clearer in the event of startup errors.

  • Fix a problem where the Windows ServiceManager was not correctly reporting a startup error if a service failed on startup. The service was being reported as having started even though it failed to start.

  • Fix a problem on UNIX versions where the Wrapper would go into a recursive state of attempting to launch the JVM from failed child processes if there was any problems executing the configured java process.

  • Rework the way the RUN_AS_USER setting in the UNIX shell script works so the specified user is now set regardless of the command being executed. To make sure the user never has to enter the password twice when running the script, it now recurses after changing the user. The script then runs entirely as the configured user.

  • Improve the message that is displayed when attempting to start, stop, or remove a Windows service which is not installed.

  • Add new wrapper.lockfile property which makes it possible to specify a lock file containing a pid.

  • Modified the sh script so it now creates a lock file on startup in the /var/lock/subsys directory if it exists. This is needed by fedora systems on shutdown.

  • Store javadocs in tar distibutions in a nested tar file to avoid problems with long filenames in some tar distributions.

  • Fix a problem with the WrapperSimpleApp and WrapperStartStopApp helper classes where on heavily loaded systems it was possible for the Wrapper to get a running thread count of 0 and shutdown before the main thread had a chance to be started.

  • Add a new wrapper.thread_count_delay property which will force the WrapperManager to wait the specified number of seconds before it begins to check the number of running threads.

  • Fix a problem where the wrapper.java.library.path.append_system_path property was appending the PATH rather than the LD_LIBRARY_PATH environment variable on UNIX systems. PATH is correct for Windows systems.

  • Add a new wrapper.logfile.rollmode property which makes it possible to control how and when the logfile is rolled. Feature Requests #864463, #1085097, and #1085850.

  • Fix a problem on Linux where the test for the status of the Java child process would sometimes fail causing the Wrapper to shutdown with the error "Critical error: wait for JVM process failed (No child processes)" rather than restart the child JVM. Users who encountered this problem found it easy to reproduce, but it only happened on some systems.

  • Modify the way the UNIX shell script tests for the existence of a process matching the pid in an existing pid file. It now verifies the process command as well as the pid to fix a system reboot problem where a stale pid has been reused by another application, making the script think the Wrapper was already running.

  • Add support for the GNU libgcj JVM. Like JRocket, it requires slightly different thread counting.

  • Add support for Linux 64-bit PPC and Solaris 32-bit x86 versions.

  • Add a new set.default.ENV syntax to the configuration file making it possible to environment variable values which do not overwrite existing values, ie. to specify a default value.

  • Added a new wrapper.console.flush property which forces the Wrapper to explicitly flush stdout after each line of log output.

  • Change the error shown when the JVM shuts down prematurely during a shutdown to a warning message.

  • Fix a problem where the Wrapper would show the following error message if user code called System.exit from within the WrapperListener.stop callback method. This would happen if the stop class's main method registered with the WrapperStartStopApp called System.exit. "JVM exited unexpectedly while stopping the application." Bug #945976.

  • Add a new wrapper.syslog.ident property which makes it possible to specify the identity used in syslog entries on UNIX. This was possible in older versions but was set using the wrapper.ntservice.name property. Bug #1432855.

  • Add support for MacOSX Universal Binary distributions.

  • Add support for Delta Pack distributions. This is a distribution that contains

Version 3.1.2: Changes and bug fixes

  • Modify the way boolean system properties are resolved by the WrapperManager so it is now possible to set them to true or false rather than assuming they are true if set.

  • Fix a problem where some localized error messages were not having their tokens replaced correctly.

  • Fix a problem when using the WrapperStartStopApp helper class. The usage text was incorrectly being displayed in the console if an exception was thrown while executing the main method of the configured stop class. This did not change the functionality of the application, but it did cause some confusion.

  • Fix a problem on Windows where a library path or class path which ended in a backslash was preventing the Wrapper from launching the JVM. The Windows OS was using the backslash to escape the quote used to close the path. The fix was to add a second backslash where needed.

  • Added a new wrapper.java.command.loglevel property which makes it possible to control the log level of the generated java command.

  • Add support for escaped quotes when stripping quotes on UNIX for the wrapper.java.additional.<n> and wrapper.app.parameter.<n> properties.

  • Change the default value of wrapper.jvm_exit.timeout from 5 to 15 seconds. The old default was too fast for some applications which take a while to exit. Applications which were exiting promptly will not see any difference.

  • Fix a problem where the JVM would restart at certain times when using the system time based timer due to an overflow error. This problem was introduced in 3.1.0. Due to a separate bug in 3.1.0, the Wrapper would shutdown rather than simply restarting the JVM as was happening in 3.1.1. The last restart happened on Aug 21, 2004. It will next occur Oct 10, 2004 and repeat at regular intervals. There are no problems when using the new Tick based timer. Bug #1014405.

  • Correct the wrapper.logfile.maxsize property so that a a kilobyte is now 1024 rather than 1000, and a megabyte is a megabyte. We aren't a hard drive manufacturer after all.

  • Add try-catch blocks around all thread entry points in the Windows version. This has always been done in the main function, but these blocks will help to narrow down the cause of problems should they ever be encountered in control or service handlers.

  • Centralize shutdown code on UNIX version in an appExit method as was already being done for Windows versions.

  • Fix a problem where the build.sh was not correctly using the included ant if an ANT_HOME environment variable was defined.

  • Add a new wrapper.single_invocation property which will prevent multiple invocations of an application from being started on Windows platforms. The shell script handles this on UNIX platforms. Feature Request #889123.

  • Fix a crash problem introduced in 3.1.1, caused by a pair of uninitialized pointers. The crash was possible on all platforms but would only happen if the Wrapper was started without any arguments. It would not affect users running the Wrapper normally. Bug #1018481.

  • Fix a problem with the run as user feature of the shell script on Solaris. Needed to be using /usr/xpg4/bin/id rather than /usr/bin/in if available. Bug #1024008.

  • Replace calls to usleep with nanosleep on platforms where it is available. This was to fix an occasional hang on a specific Solaris machine. It would occasionally hang on calls to usleep. From research, it appears that usleep has problems when signals are encountered while sleeping. Still testing whether or not this change solved the problem.

  • Upgrade the version of Ant included with source releases to 1.6.2 to fix some problems generating jni headers when building with Java 1.4.2.

  • Upgrade the version of Cocoon included with source releases to 2.0.4 to fix some problems generating documentation using Java 1.4.2.

  • Display a warning if the exit status of a JVM process ever returns the STILL_ACTIVE status on Windows. There was no known problem here, just noticed it while looking over the code.

  • Display a descriptive error message on Windows if the the JVM process crashes due to an uncaught exception in native JVM code.

  • Add a test for invalid jvm arguments set using the wrapper.java.additional.<n> properties. Invalid arguments could cause the Wrapper startup to fail in non obvious ways if they are mistaken by the JVM as the main class.

Version 3.1.1: Changes and bug fixes

  • Modified the way libwrapper.so is built on Solaris and Linux so that it no longer statically links its required libraries.

  • Fix a file handle leak when calling WrapperManager.getUser or WrapperManager.getInteractiveUser on Windows platforms.

  • Fix a problem introduced in 3.1.0 where the JVM would not be restarted correctly if it quit after a ping timeout to let the Wrapper resynch and restart it.

  • Fix a problem where CTRL-C was not being handled correctly if the console was configured to be shown when running as an NT service.

  • Fix a problem where signals fired at UNIX versions of the Wrapper were not being handled correctly when the tick timer was being used.

  • Fix a synchronization problem in the logging code which would occassionally cause the Wrapper to crash with an Access Violation. The problem was only encountered when the tick timer was enabled, and was only seen on multi-CPU systems. Bug #949877.

  • Fix a problem when using the tick timer where the Wrapper would sometimes exit on startup due to an uncaught SIGALRM. Only reported on multi-CPU Solaris systems.

  • Fix a problem where the Wrapper would sometimes hang on shutdown if another thread called System.exit while the Wrapper was shutting down. Bug #955248.

  • Fix a problem introduced in 3.1.0 where a very very large CPU timeout warning message was being displayed if the system time was set back while using the default system timer.

  • Added a new property, wrapper.anchorfile, which makes it possible to cause the Wrapper to shutdown by deleting an anchor file. The UNIX sh script has been modified to optionally make use of this feature.

  • Add a debug message at startup which makes it clear which timer is being used.

  • A Windows user reported that using forward slashes in the path the log file was failing. Avoid this problem by always converting '/' to '\' in the wrapper.logfile property on Windows.

  • Fix a problem where it was not possible disable the Wrapper log file as documented in the wrapper.logfile property. Most likely broken way back in 2.2.5.

  • Add some additional error checks after calls to control the pipe between the JVM and Wrapper as well as improving the messages around other socket related error messages.

  • Fix a problem on some HP-UX systems were not working correctly because the EAGAIN and EWOULDBLOCK constants are not equal with some compilers.

  • Change some of the defaults in the src/conf/wrapper.conf.in file which ships with the Wrapper to avoid confusion with new users.

  • Rewrote the routine which reads and logs console output from the JVM for Windows versions. Internal buffers are now scaled dynamically, fixing a problem where long lines were being wrapped at 1024 characters. This rewrite also resulted in a 4 fold increase in speed when the JVM is sending large quantities of output to the console.

  • Increase debug output on UNIX platforms when a signal is caught. When possible, information about where the signal came from is now logged.

  • Modified the way log output from within signal handlers is handled so it is now queued and then logged by the main event loop.

  • Back out a 3.1.0 change where a JVM that had failed to exit cleanly was sent a SIGTERM prior to a SIGKILL. The SIGTERM made no difference and slowed down the forced shutdown. A modification to the event loop made the functionality more difficult to implement.

  • Add the ability to set the user that the Wrapper and its JVM will run as from within the sh script on UNIX platforms.

  • Add an icon resource to the Wrapper binary on Windows versions.

  • Fix a typo in the UNIX sh script which caused an extra slash to be included in the path of the pid file. Was not causing any known problems.

  • Added support for 64-bit HP-UX. Big thanks to Venkatesh Sellappa for supplying the patch.

  • Fix a deadlock problem introduced in 3.1.0 with some FreeBSD systems. Not all users were experiencing it, but those who did were able to reliably reproduce the problem. The problem appears to have been caused by FreeBSD bug #kern/64313.

  • Make the signal handling variables in the Wrapper native library volatile. Directly this was to fix a compiler warning on HP-UX64 systems but it should also make the calls more efficient.

Version 3.1.0: Changes and bug fixes

  • The license was revised for this version to include a copyright omission. This change is to be retroactively applied to all versions of the Java Service Wrapper starting with 3.0.0. The changes should have no effect on users.

  • The Online documentation and web site were both reworked. The logo has been updated so that Duke is no longer used. The new online site now has the ability for users to append comments to any page.

  • Added a new batch file which accepts commands like the UNIX shell script. The new file is offered as an alternative to the default batch files, and can be found at src/bin/AppCommand.bat.in. Thanks to Mike Castle for donating the new script. See the new Command-Based Script section for more information.

  • The Windows version of the Wrapper was not correctly registering that it would accept SHUTDOWN messages when running as a service. The Wrapper was getting the message anyway so this should not change functionality. Thanks to Jason Tishler for noticing this and sending in a patch.

  • Add a new property, wrapper.native_library, which can be used to specify the base name of the native library which is loaded by the WrapperManager class.

  • Modify the WrapperManager class so it now stores references to System.out and System.err on initialization and always writes to those stored streams. This makes sure that all Wrapper console output always goes to the wrapper.log file even if user code overrides those streams with calls to System.setOut and System.setErr. This was necessary to prevent deadlocks in such user code from affecting the functionality of the Wrapper.

  • Fixed a problem where some environment variables where not being correctly loaded from the system registry when running as an NT service. Big thanks to Eric Smith for tracking this down and submitting a patch. It turns out that the putenv function was not being used correctly.

  • Modified the way the wrapper.conf file is loaded so it will now read the contents correctly even if the line feeds in the file are incorrect for the current platform. Windows line feeds had been causing problems when used on UNIX platforms. Feature Request #829896.

  • Added a new property, wrapper.ntservice.console, which allows a console to be displayed when running as an NT service.

  • Fixed a problem where the request thread dump on failed JVM exit feature had never worked when running as an NT service. Bug #831775.

  • Add a new property, wrapper.console.title, which makes it possible to set the title of the console in which the Wrapper is currently running. This currently only works on Windows platforms.

  • Added a new method, setConsoleTitle, to the WrapperManager class which enables the application to dynamically set the console title. Like the wrapper.console.title property, this only works on Windows platforms.

  • Improved the algorithm of the request thread dump on failed JVM exit feature so that extremely large thread dumps will not be truncated when the JVM is killed.

  • Fix a problem where CTRL-C was being ignored by the WrapperManager if a WrapperListener is never registered. This is not possible if the Wrapper is being used correctly but never the less a user did come across it.

  • Add some additional debug output to help identify the cause of problems loading the native library.

  • The WrapperManager class now checks to make sure that its current version matches the version of the native library and Wrapper. If there are any discrepancies found then appropriate warnings will be displayed, but the Application will still be allowed to start. This was added to make obvious the cause of problems resulting from mismatched versions.

  • Added a new property wrapper.use_system_time system time. By setting this property to false, the Wrapper will start using a new experimental timer which uses a background thread to manage time rather than the system time. This has a number of advantages over using the system time and should give most users even more reliable behavior when the system is under high load or there are changes being made to the system time. The timer is very critical to the operation of the Wrapper so the old behavior is left as the default for the time being until this feature has had the chance to be "time" tested. If all goes well then this will be enabled as the default in a future version of the Wrapper. A pair of related properties, wrapper.timer_fast_threshold and wrapper.timer_slow_threshold were also added to aid in debugging.

  • Rework the logging code so it is now thread safe. The addition of the timer thread means that there is now more than a single thread accessing that code. This was causing problems as the two threads tried to use the same buffers. As part of this change, a new format variable 'D' was added to display the thread which is doing the logging.

  • Fix a problem where a thread dump would be invoked if the request thread dump on failed JVM exit was enabled and the user forced an immediate shutdown by pressing CTRL-C more than once.

  • Add getUser and getInteractiveUser methods to the WrapperManager class to make it possible for user code to query information about the user running Wrapper or the user who is interacting with the Wrapper and its JVM. Feature Request #812175.

  • The Wrapper will now always exit with the exit code used to terminate the JVM whether System.exit is used or WrapperManager.stop. When running as an NT service the Wrapper now correctly returns the correct exit code to the service manager so failure recovery tools should now work correctly. Feature Request #852491.

  • Add a status command to the UNIX shell script which can be used to find out whether or not the Wrapper is currently running. Patch submitted by Joseph Benavidez.

  • Modify the WrapperSimpleApp and WrapperStartStopApp so that the main method of a class is located even if it exists in a parent class rather than the class specified.

  • To make debugging classpath problems easier, the Wrapper now verifies all classpath entries before launching a JVM and logs debug level warnings for any entries that do not exist.

  • Fix a problem where it was possible to define a zero length filter that would trigger on any output.

  • Add some additional debug output to make it easier to debug startup, shutdown and restart problems.

  • Modify the way the Wrapper forcibly kills a frozen JVM on UNIX platforms so that it now sends a SIGTERM, waits up to 5 seconds, then sends a SIGKILL.

  • Add a new wrapper.java.library.path.append_system_path which will cause the Wrapper to append the system path to the generated library path. Feature Request #917902.

  • Fix a problem where spaces around the '=' character of a property definition were rendering the property invisible to the Wrapper. Bug #916001.

  • Fix a problem where the first ping timeout after the JVM was started was still hard coded at 30 seconds. This was causing a combination of large values of wrapper.ping.interval and wrapper.ping.timeout to fail.

  • Fix a problem where the JVM would fail to shutdown cleanly if the Wrapper was asked to stop too soon after launching a JVM. This was leading to the JVM being killed after the shutdown timeout expired. Bug #917281.

  • Added an adviser which will print out explanatory messages to the console and Wrapper log file when the Wrapper encounters a commonly made configuration mistake. This is designed to cut down on support requests by new users. Can be disabled using the wrapper.adviser property.

  • The bash script and the realpath utility have been deprecated since 3.0.3. They have been removed in this release. The sh script is recommended on all UNIX platforms, and the realpath utility which was used by pre-3.0.3 bash and sh scripts has not been used since.

  • Add the wrapper.startup.delay property along with console and service specific variants which make it possible to configure a delay between the Wrapper being launched and the first JVM being launched.

  • Promote the wrapper.debug property back from being "deprecated". It has continued to be useful and deserved documentation and official status.

  • Add wrapper.on_exit.<n> properties to control what happens when a exits based on the exit code.

  • Modify the way calls to System.in.read() are handled so that they now block rather than throwing an exception. Currently, System.in can not be used with the Wrapper because of the way I/O is passed between the Wrapper and JVM.

  • Modified the Windows batch files to fix a problem where the path to the wrapper.exe contained more than one "/bin". The new batch files are much simpler and should be easier to customize if needed. Bug #925308. Bug #925308.

  • Modified the wrapper.java.initmemory and wrapper.java.maxmemory properties so that they now default to a value of 0 which causes the -Xms and -Xmx parameters to be omitted from the command used to launch Java. This will cause the JVM to use its own default values and also makes it possible to specify the memory parameters using the wrapper.java.additional.<n> properties.

  • Added a pair of environment variables, WRAPPER_FILE_SEPARATOR and WRAPPER_PATH_SEPARATOR, whose values are set to either '/' and ':' or '\' and ';' on startup. They can be used in the wrapper.conf file to construct platform independent property values.

  • Add a new wrapper.working.dir property which makes if possible to change the Wrapper and JVM's working directory to a location other than the location of the Wrapper binary. Feature Request #738160.

Version 3.0.5: Changes and bug fixes

  • Added support for SGI Irix. Big thanks to Andreas Wendt for supplying the patch.

  • Due to a bug in the build, the native library was not included in the 3.0.3 or 3.0.4 binary releases for OSX, building from source was working correctly. This has been fixed and the build greatly simplified to avoid such problems in the future. Bug #791755.

  • Changed the default location of the pid file generated by the sh script to exist in the same directory as the sh script rather than in the /var/run. This can be changed by setting the PIDDIR variable in the sh script used to launch the Wrapper.

  • Added support for the wrapper.pidfile property on the Windows platform.

    警告

    (WINDOWS USERS) If you are using a wrapper.conf file that was created prior to 3.0.0 of the Wrapper, then you may have this property defined in your configuration file. You will get an error on startup if the specified path does not exist.

  • Added the wrapper.java.pidfile property which will cause the pid of the java process to be written to a specified file.

  • Stop clearing the file creation mask when the UNIX version of the Wrapper is run as a daemon process. The file creation mask will not be inherited from the process which launches the Wrapper. Bug #788849.

  • Modify the sh script so it works on Linux, then deprecate the bash script. This means that all UNIX platforms can now use the same script to control the Wrapper. Thanks to Mike Castle for the patch. The bash script can still be found in the release, but it is deprecated and will be removed in a future version.

  • Modified the sh script so it is now possible to set the nice priority in the script configuration block.

  • Remove output to System.out in the WrapperManager.requestThreadDump() method. If some JVM threads were hung while accessing the System.out object, attempting to do a thread a dump would cause the calling thread to hang as well. Thanks to Thomas Hart for the patch.

  • Make it obvious in the log whether or not the Wrapper was started as a daemon process on UNIX systems.

  • Modify the way restarts requested from the JVM, or caused by a filter are handled. The Wrapper will no longer reset the restart count in either of these cases. If an application runs for longer than the wrapper.successful_invocation_time timeout then the count will still be reset back to 0.

  • Added a new wrapper.ignore_signals property which makes it possible to configure the Wrapper so it will ignore CTRL-C, HALT and INT signals.

  • Modify the WrapperManager.isLaunchedAsService() method on UNIX systems so it now returns true if the Wrapper was launched with the wrapper.daemonize flag set.

  • Added a pair of MBean interfaces which allow the Wrapper to be controlled using JMX. See the new JMX section in the documentation for details. Thanks to Sal Ingrilli for help with testing.

  • Modify the Windows build so the wrapper.exe and wrapper.dll files can now be built from Ant if MSVC is installed.

  • Added a new wrapper.ping.interval property which lets users control the frequency that the Wrapper pings the JVM. Feature Request #607768.

  • When a JVM refuses to shutdown, the Wrapper can be configured to request a thread dump using the wrapper.request_thread_dump_on_failed_jvm_exit property. The Wrapper was then waiting 1 second before the process was killed. This was not always long enough, resulting in a truncated thread dump. Increased the pause to 3 seconds. Feature Request #633761.

  • Fix a bug where wrapper.app.parameter.<n> and wrapper.java.additional.<n> properties declared from the Windows command line were not correctly handling spaces in their values. Support Request #802139.

Version 3.0.4: Changes and bug fixes

  • Fix a problem on UNIX systems where requesting a second thread dump any time during the life of a single Wrapper process would cause the Wrapper and JVM to shutdown rather than perform the thread dump.

  • Fix a problem where a, user without permission, attempting to stop an application was able to delete the pid file even though they were unable to stop the application itself. This would make the scripts think that the application was stopped when was actually still running.

  • Fix a problem where an application was being killed prematurely if it took longer than 6 seconds to exit on its own. The scripts now make sure that an application always has enough time to shutdown cleanly.

  • Improve the debug output so that packet codes are now shown using a name rather than a raw number.

  • Reduce the frequency of "Waiting to stop..." messages displayed when removing an NT service that is currently running. Decreased frequency from once per second to once every five seconds.

  • Fix a minor problem where the hour in the date returned by WrapperInfo.getBuildTime() was not base 24.

  • Added -t and -p command line options to the Windows version of the Wrapper to sTart and stoP the Wrapper as an NT service. This can be used in place of "net start" and "net stop", which do not always work correctly when a service takes a long time to start up or shutdown. See the Launching Your Application (Win32) section for more details.

  • Add a new method WrapperManager.stopImmediate which will cause the JVM to exit immediately without calling any stop methods or shutdown hooks.

  • Add a new class, WrapperActionServer, which makes it easy to remotely control the Wrapper remotely by opening a socket and sending commands. See the javadocs of the class for more details.

  • Fix bug #744801. A Java GUI was not being displayed when the application was run in either console mode or as a service with wrapper.ntservice.interactive enabled. This problem was introduced in 3.0.0 when using 1.2.x or 1.3.x versions of Java. To use interactive services with 1.2.x or 1.3.x versions of java, please review the documentation for the wrapper.ntservice.interactive property.

  • Fix a problem where the JVM was not receiving CTRL-C and CTRL-CLOSE events when running under the Wrapper on Windows. This was not a problem in most cases as the Wrapper was taking care of the processing of the events. But the WrapperListener.controlEvent() method was not being called as documented.

  • Changed the way the WrapperSimpleApp and WrapperStartStopApp respond to control events so that the JVM will respond and call WrapperManager.stop() even when being controlled by the Wrapper.

  • Modified the suggested behavior of the WrapperListener.controlEvent() method. Users who have implemented the WrapperListener interface themselves should review the javadocs. The changes are not required and applications will continue to function as they did before.

  • Added support for DEC OSF1 (Alpha). Big thanks to Andreas Wendt for supplying the patch.

  • Fix a problem where the sh and bash scripts were failing if the path to the script contained spaces.

  • Fix a problem where the JVM would sometimes hang when trying to shutdown if the wrapper.key parameter was passed to the JVM while not being controlled by the Wrapper. This would happen if a user copied the command from the Wrapper's debug output and attempted to run it as is without first removing the wrapper.key parameter.

  • Implement the ability to specify an NT service's load order group in response to feature request #764143. See the javadocs for the new wrapper.ntservice.load_order_group property for details.

  • Improve the error message displayed when the NT EventLog is full in response to feature request #643617. The EventLog output will now be disabled if any errors are encountered while logging events. This prevents the error from repeating.

  • Improve the error message displayed on Windows when the configured Java command can not be executed or does not exist.

  • Fix a problem where the Wrapper was leaving a pipe unclosed each time the JVM was restarted on all UNIX platforms. This was causing the Wrapper to run out of file handles. Bug #767267, discovered and patched by David Wong.

  • Fix a problem where the '#' character, which signifies a comment, could not be included in property values. A double hash, '##' will now resolve into a '#' within the property value. Bug #777303.

  • Added support for FreeBSD. Big thanks to Alphonse Bendt for supplying the patch.

  • Make the wrapper.port property optional.

  • Changed the way environment variables are loaded from the registry on Windows platforms so users will no longer get warning messages about not being able to handle very large environment variables. Prior versions could only handle environment variables whose expanded value was less than 2048 characters in length.

  • Fix a problem on UNIX platforms where a shell used to start the Wrapper running as a detached process would hang when the user attempted to exit the shell. Thanks to Mike Castle for this patch.

Version 3.0.3: Changes and bug fixes

  • Added support for Mac OS X. Big thanks to Andy Barnett for supplying the patch.

  • Fix a segmentation fault on UNIX systems when the first console output from the JVM was an empty line. Thanks to Mike Castle for finding this.

  • Fix a problem where a 0 length malloc was being called if there were no configured filters. This was fine on most platforms but caused a crash on MAC OS X.

  • Rework the initialization of the bash and sh scripts so that they will work correctly when referenced as symbolic links. Thanks go out to Richard Emberson for the code to resolve symbolic links.

  • Deprecated the realpath binary in the *NIX distributions as it is no longer used by the bash or sh scripts. It is being left in for now so as not to break the build scripts of other projects, but it will be removed after a couple more releases.

  • Added a test to make sure that wrapper.ntservice.interactive is not set to TRUE when an account is specified using wrapper.ntservice.account.

Version 3.0.2: Changes and bug fixes

  • Modified the sh and bash scripts so that console log output is disabled by default when the scripts are launched with the 'start' action. Running with the 'console' action will still send output to the console. Logging to the file is still enabled.

  • Modified the wrapper.ping.timeout property so it also controls the ping timeout within the JVM. Before the timeout on responses to the Wrapper could be controlled, but the ping timeout within the JVM was hardcoded to 30 seconds.

  • In the last release, some work was done to avoid false timeouts caused by large quantities of output. On some heavily loaded systems, timeouts were still being encountered. Rather than reading up to 50 lines of input, the code will now read for a maximum of 250ms before returning to give the main event loop more cycles.

  • Fix a problem where the values of environment variables set in the configuration file were not correct when those values included references to other environment variables.

  • Fix a potential buffer overflow problem if configuration properties referenced extremely large environment variables.

  • Fix a potential problem where the inability to expand very large environment variables would have led to an access violation when run as an NT service.

  • Add some extra checks in the event where the native library can not be loaded so that the WrapperManager can differentiate between the library missing and not being readable due to permission problems.

  • Remove the wrapper.ntservice.process_priority from the default wrapper.conf because its use can produce unexpected results if used improperly. Please see the property documentation for details.

  • Fix a problem where environment variables in the registry which had no value were causing the Wrapper to crash with an access violation. This was introduced in 3.0.0 with the feature to load environment variables from the registry. The offending registry entry was WV_GATEWAY_CFG which appears to be related to Oracle.

Version 3.0.1: Changes and bug fixes

  • Fix a problem with the wrapper.disable_shutdown_hook. Due to a typo in the source, the property was being ignored. This was broken in the 3.0.0 release.

  • Fix a problem with the HP-UX release build reported by Ashish Gawarikar.

  • Add the ability to set environment variables from within the configuration file or from the command line. See the Environment Variables section for details.

  • Fix a problem on HP-UX and AIX machines where the stop() function in the shell scripts was causing a syntax error due to a conflict with a like named shell command on those platforms. This appears to be an issue with the Korn shell on all platforms.

  • Fix a problem where very heavy output from the JVM can cause the Wrapper to give a false timeout. The Wrapper now only reads 50 lines of input at a time to guarantee that the Wrapper's event loop always gets cycles.

  • Fix a problem on UNIX versions where extra line breaks would sometimes be added to the logged output when there was large amounts of output being sent from the JVM.

  • Fix a problem where a large number of calls to WrapperManager.log() immediately before the JVM exits could lead to the Wrapper incorrectly reporting that the JVM exited unexpectedly.

Version 3.0.0: Changes and bug fixes

  • Deprecated the com.silveregg.wrapper package in favor of org.tanukisoftware.wrapper. The classes and interfaces in the silveregg package will continue to function, but migration to the new package should be done when possible.

  • On Windows systems change any forward slashes in the wrapper.java.command property to back slashes. Some users had reported having problems on Windows XP.

  • Implemented feature request #633178. Added WrapperManager.requestThreadDump() to force the current JVM to immediately perform a thread dump.

  • Fixed bug where wrapper.logfile.maxsize was being set to 0 if the 'k' or 'm' unit was omitted.

  • Add the ability to specify an account name and password when installing an NT service.

  • Add a property, wrapper.ntservice.interactive, which makes it possible to control whether or not the Java process can gain access to the desktop while it is running as an NT service.

  • Add limited support for 1.2.x versions of Java. Shutdown hooks are supported until Java 1.3 so those functions will be disabled. If the application displays a GUI then Java 1.3 should be used as the GUI can not currently be displayed when using Java 1.2.x.

  • Made it possible to use the wrapper.pidfile property on all *nix platforms. Please notice that the property has been removed from the default wrapper.conf file. The property is not needed when the Wrapper is launched with the bash shell script. The sh shell script will set the wrapper.pidfile when the Wrapper is launched. If either of the scripts provided with the Wrapper distribution are used then the wrapper.pidfile should always be removed from your wrapper.conf file.

  • Added a new wrapper.daemonize property which, when set, will form the wrapper process to be a detached non-session group leader. This makes it possible to launch the Wrapper in such a way that it will not be terminated when the user launching the process logs out. This had been a problem on Solaris systems when using the sh shell. The default sh and bash scripts both make use of this in the default. Please update your scripts for use with this version. Thanks to Rajiv Subrahmanyam for the patch.

  • Fix a problem where the Wrapper was incorrectly counting the number of non-daemon threads in BEA's JRockit Virtual Machine. This was causing the application to shutdown when the non-daemon thread count dropped to 1.

  • Added support for building the Wrapper on AIX and HP-UX systems. Thanks for the patches involved go out to Ashish Gawarikar and William Lee.

  • Implement feature request #653131 to force the JVM to immediately exit when the user presses CTRL-C multiple times.

  • Added a 'console' action to the bash and sh scripts to make it possible to launch the Wrapper in the current shell process. The 'start' task will launch the Wrapper as a spawned daemon process.

  • Fixed a problem where missing environment variables specified in classpath or library path properties were not being handled correctly.

  • Implemented feature request #676599 to enable the filtering of JVM output to trigger JVM restarts or Wrapper shutdowns. See the new wrapper.filter.trigger.<n> and wrapper.filter.action.<n> properties.

  • Modify the Win32 version of the Wrapper so that Environment Variables are always read from the system registry when the Wrapper is run as a service. By doing this, it makes it possible to change or add the system environment variables and have them take effect without having to first reboot the machine.

  • Implemented cascading configuration files. See the Cascading Configuration Files section for details.

  • Changed the default value for the wrapper.java.initmemory property to be 3Mb. The default on Windows and Linux JVMs is 2Mb, but the Solaris JVM requires a minimum of 3Mb. The minimum value accepted by the Wrapper was changed from 8Mb to 1Mb to make it possible to reduce the footprint of applications to what is possible without using the wrapper.

  • Improve the parsing of configuration files so that leading and trailing white space is now correctly trimmed. It is also now possible to have comments at the end of a line containing a property.

  • Modify the way exceptions thrown by an application's main method are presented to the user by the WrapperSimpleApp and WrapperStartStopApp so they no longer look like a problem with Wrapper configuration.

Version 2.2.9: Changes and bug fixes

  • Added a new property, wrapper.restart.delay, which allows the user to control the amount of time to pause between a JVM exiting and a new JVM being launched.

  • Fixed bug #611024. The Wrapper would sometimes fail to start if wrapper.max_failed_invocations is set to 1.

  • Fix a problem where the number of non-daemon threads was not being calculated in some cases.

  • Implemented feature request #491443. Environment variables referenced in the wrapper.conf file will now be evaluated as the file is loaded. The windows syntax for environment variables is used on all platforms to make them platform independent.

  • Fixed a problem where the wrapper.conf was being open with both read and write locks when a read lock is all that is needed. Made the Wrapper fail on startup if another application held a read lock on the configuration file.

  • Modified the message displayed when the native library could not be found, so that it is much more descriptive. Hopefully it will cut down on questions caused by configuration problems.

  • Implemented feature request #613539. Modified the wrapper.java.library.path.<n> to function like the wrapper.java.classpath.<n> properties so that multiple directories can be specified in the library path in a platform independent way. The old property is still supported, but deprecated.

  • Fix Bug #632215. The WrapperManager.isLaunchedAsService() method was always returning false, even when run as a service under Windows. On Linux, the Wrapper is always run as a console app, so this method will always return false.

  • Improve the message thrown when user code attempts to access System.in from within a JVM being controlled by the Wrapper. System.in will not work because the JVM is a spawned process.

Version 2.2.8: Changes and bug fixes

  • Fixed a compiler problem on Solaris some systems.

  • Added a new property, wrapper.cpu.timeout, which allows the user to control how much time without receiving any CPU the Wrapper will tolerate before displaying a warning message. The CPU timeout feature was added in 2.2.7 but the default timeout of 10 seconds was not configurable.

  • The Wrapper was only allowing 5 seconds between the JVM informing the Wrapper that it was going to exit and the JVM process actually exiting. This would cause the Wrapper to terminate the process prematurely in cases where an application shutdown thread took longer than 5 seconds to complete. The Wrapper now allows wrapper.jvm_exit.timeout seconds for the JVM process to exit on its own before being forcibly terminated.

  • When there is a configuration problem or a resource is unavailable, a JVM will sometimes exit abnormally very shortly after being launched. This can lead the the JVM being infinitely restarted due to a simple class path misconfiguration. To work around this, the Wrapper has always had a hard limit of 5 restarts within a short period of time. If the JVM has been running for more than a few minutes, then the count was reset. In this version, a new property. wrapper.max_failed_invocations was added to allow the max value to be set. The time period which the JVM must now be running for the JVM launch to have been considered a success for restart purposes is set using the new wrapper.successful_invocation_time property.

  • The number of advanced properties which most users do not need has been increasing as the Wrapper has been made more and more flexible. This has been causing confusion in their usage by people who play with them without first reading the documentation. To solve this, the advanced properties were removed from the default configuration file. They still function. But users must now read to the advanced configuration documentation to learn about their existence. Added quite about to the descriptions of these properties to hopefully clear up any confusion about their usage.

  • When the JVM exits abnormally, the Wrapper will pause for a few seconds before starting another JVM. If the user pressed CTRL-C during this pause, a new JVM would still be launched. The new JVM was exiting immediately but it was a waste of time. The Wrapper now recognizes the event and aborts launching the new JVM.

  • Added a page to the documentation which shows inline javadocs. This will hopefully make it easier to navigate them as part of the full documentation set.

  • Added a new method to the WrapperManager which enables user code to log at any log level.

  • Added a new Helper class WrapperStartStopApp which allows users to easily integrate applications like Tomcat which use a separate class to stop the application.

  • Added a samples section to the documentation. Just includes Tomcat 4 for now.

Version 2.2.7: Changes and bug fixes

  • Fix a problem where the JVM was trying to reconnect the Wrapper as it was being shutdown. This was causing problems if the JVM was being restarted.

  • Added support for the system being suspended to RAM or disk. Also improved Wrapper performance when a system is under 100% load. See the new example output in the example section.

  • Fix a problem where the log output was not being directed to a file called wrapper.log in the same directory as the Wrapper binary in the event that the configured Wrapper log file could not be accessed.

  • Fix a problem where the Wrapper was not shutting down the JVM correctly when all non daemon threads completed. Normally a JVM will exit when all of its non daemon threads have completed so this was causing some problems. (Thanks to Jung Tamas)

  • Added the ability to set the priority of the Wrapper and its JVM when run as an NT service or console application. The same thing can be better achieved on UNIX systems by using "nice" in the shell script used to launch the Wrapper. See the documentation for for details.

  • JVM information was not being displayed correctly when the Wrapper native library could not be loaded.

  • Added a new property to cause the Wrapper to attempt to request a thread dump when the JVM does not exit on request.

  • Improved the documentation of the WrapperSimpleApp and WrapperListener classes.

  • Adding a new property wrapper.shutdown.timeout to allow the user to extend the length of time that an application is allowed to take shutting down.

  • Rework the way the shutdown process works so that System.exit will never be called before the stop method in WrapperListener has had a chance to complete.

  • Add a Restart button to the TestWrapper application.

  • Fix a problem on UNIX versions where '%' characters in Java output would sometimes cause the Wrapper to crash. Somehow missed getting this into the last release.

  • Added a test to make sure that WrapperManager.stop is not called recursively.

  • Added support for building under Windows XP. Prebuilt installations had already been working.

Version 2.2.6: Changes and bug fixes

  • Fix a problem where '%' characters in Java output would sometimes cause the Wrapper to crash. (Thanks to Frode Moe)

  • Added support for requesting a Java thread dump without shutting down the Java process.

  • Fixed a problem on Windows where the java command was looking in the windows system and system32 directories for the java executable before checking the path when the full path to the java executable was not specified in the configuration file. This could lead to different JVM being run from the Wrapper than was run if java -version was run from the command line. The Wrapper will now attempt to resolve the full java path using the PATH environment variable.

  • Added debug output showing Java version information when the JVM first starts.

  • Modified c source to use /* */ style comments rather than // style comments. Some people were having problems with some compilers.

Version 2.2.5: Changes and bug fixes

  • Fixed bug issue when reading configuration files from Windows on UNIX.

  • Deprecated the wrapper.debug property in favor of loglevels.

  • Added support for service descriptions for Win2k and XP.

  • Added new logger functionality includes the following features: Loglevels like Log4j, NT Eventlog support, UNIX syslog support and rolling log files.

  • Added wildcard support for classpath entries in wrapper.conf.

  • Added the ability to specify configuration properties from the command line.

  • Changed the way NT services are installed so that a patched version of the wrapper.exe file no longer needs to be created to reference the wrapper.conf file.

Version 2.2.4: Changes and bug fixes

  • The value of APP_NAME in the bash or sh scripts no longer needs to be the same as the script.

  • Added the ability to format and/or disable file logging and output to the console.

  • Set mode of executables in binary release tar files so that they can be run without modification after being extracted.

  • Fixed line feeds in release so that bat files are always CRLF, UNIX scripts are always LF. Other source files are always CRLF in ZIP archives and LF in tar.gz archives.

  • Make the build fail if wrapper.exe or wrapper.dll do not exist for Windows builds.

  • Added an empty wrapper.log to the releases so that the TestWrapper example program runs out of the box.

Version 2.2.3: Changes and bug fixes

  • Added template scripts and configuration files for ease of integration with other applications.

  • Cleaned up the build.

  • The WrapperSimpleApp method of launching applications was not working correctly with applications whose main method did not return.

  • Add sample scripts and wrapper.conf files in the bin and lib directories. These scripts are used to start a sample application which runs out of the box. See the new example.html page in the documentation for more details.

  • Get rid of the platform specific directories in the bin and lib directories.

  • Enable relative paths for Windows version. In previous versions of Wrapper, it was necessary to always use absolute paths because the working directory of the Wrapper would be then NT System32 directory when run as a service.

  • On the Windows version, the Wrapper always sets the current working directory to the location of the Wrapper executable immediately after startup.

  • Improvements to the documentation / web page.

Version 2.2.2: Changes and bug fixes

  • Added HTML based documentation.

Version 2.2.1: Changes and bug fixes

  • Added Linux and Solaris build files.

  • Added Linux and Solaris documentation.

Version 2.2.0: Changes and bug fixes

  • Initial Public Release.