概要
Windows上で動作する、次のWebOTX Application Serverにおいて、使用するJava SE Development Kitのバージョンにより、JMSサーバを起動できません。
- WebOTX V10.1、V10.2において、次のJDKを使用した場合
- Oracle Java SE Development Kit 8 Update 231以降 (以降、JDK 8u231と表記)
- WebOTX V10.2において、次のJDKを使用した場合
- Oracle Java SE Development Kit 11.0.5以降 (以降、JDK 11.0.5と表記)
- OpenJDK 8 Update 231以降 (以降、OpenJDK 8u231と表記)
- OpenJDK 11.0.5以降
影響のある製品
< Windows >
- WebOTX Application Server Express V10.1~V10.2 (※)
- WebOTX Application Server Standard V10.1~V10.2
(※)WebOTX Enterprise Service Bus V10.1、および、WebOTX Portal V10.1にバンドルされているWebOTX Application Server Expressを使用している場合にも該当します。
詳細
JDK 8u231 / JDK 11.0.5 / OpenJDK 8u231 / OpenJDK 11.0.5 において、Windows環境における、java.lang.Runtime#exec()、および、java.lang.ProcessBuilderの引数の制約強化が行われました(JDK-8221858)。
この変更により、Windows環境で、次の条件を全て満たす場合、Runtime#exec()、および、ProcessBuilderでの外部プロセス起動ができなくなっています。
・セキュリティマネージャが有効
・外部プロセスの拡張子がexeではない
・起動コマンドの文字列に、"、&、|、<、>、^ のいずれかの文字を含む
WebOTX V10.1、V10.2でのJMSサーバの起動は、上記の条件に合致し、当該JDKを利用する場合、JMSサーバは起動しません。
なお、本事象が発生した場合、${INSTANCE_ROOT}/logs/agent.logに、次のメッセージが出力されます。
----------------------------------------
2020-02-14 16:55:15,660 ERROR JMS - OTX08005024: JMS サービスの起動に失敗しました。 [main]
com.nec.webotx.appserv.server.ServerLifecycleException: Cannot run program "cmd.exe": Malformed argument has embedded quote: "C:\WebOTX\jmq\bin\jmqbrokerd.bat" ~
:
----------------------------------------
対処方法
Javaシステムプロパティ jdk.lang.Process.allowAmbiguousCommands に、true を設定して、JDK 8u231 / JDK 11.0.5 / OpenJDK 8u231 / OpenJDK 11.0.5 より前と同じ動作となるようにします。
設定方法は、次の通りです。
- JVMオプションとして、-Djdk.lang.Process.allowAmbiguousCommands=true を設定します。
統合運用管理ツールの場合:
[管理ドメイン[<ホスト名>]] > [<ドメイン名>] > [アプリケーションサーバ] > [JVM構成]から、[JVMオプション]タブにある、[JVMオプション]の[追加]をクリック。
表示されたダイアログに次の値を入力し、[OK]をクリックしてダイアログを閉じた後に、[更新]をクリック。
-Djdk.lang.Process.allowAmbiguousCommands=true
運用管理コマンドの場合:
otxadmin> login --user <ユーザ名> --password <パスワード> --host <ホスト名> --port <対象ドメインのポート番号>
otxadmin> create-jvm-options "-Djdk.lang.Process.allowAmbiguousCommands=true"
- 動作への反映のため、ドメイン、または、WebOTXのサービスを再起動します。
[ドメインの再起動]
otxadmin> login --user admin --password <パスワード> --host <ホスト名> --port <管理ドメインのポート番号(既定値:6202)>
otxadmin> stop-domain --remote=true <ドメイン名>
otxadmin> start-domain --remote=true <ドメイン名>
回避方法
備考
更新履歴