サーバポート未開設への対応

事象説明

    サーバは起動しているがプロセスが起動していない場合にオペレーション呼び出しに失敗し、COM_FAILURE(REFUSE)が返り、クライアントからのアクセスがエラーとなります(ユーザ実装による)。例えば以下の状況が考えられます。

状況の確認方法
対象サーバの状態確認
呼び出し対象のドメインやTPシステムが終了していないか確認します。詳細は、 [ WebOTX の起動失敗について ] や [ TPモニタ・マネージャライフサイクルの起動停止失敗について ] を参照してください。
oadの確認
oadプロセスが終了していないか確認します。
異常終了時は、システムログに以下のメッセージが出力されます。
OTX01180035:state is failed:domain1:j2eeType=WebOTXObjectBrokerOadService,name=WebOTXObjectBrokerOadService,J2EEServer=server,category=runtime (com.nec.webotx.enterprise.system.notification)
WebOTX_Agent: OTX01180012:is not alive :domain1:category=monitor,type=alive-check-monitor,J2EEServer=server,name=WebOTXObjectBrokerOadService-state (com.nec.webotx.enterprise.system.notification)
また、念のため、該当ポートがListen状態かnetstatで確認してください。
名前サーバの確認
名前サーバ(namasv)が終了していないか確認します。
異常終了時は、syslogに以下のメッセージが出力されます。
WebOTX_Agent: OTX01180035:state is failed:domain1:j2eeType=WebOTXCOSNamingService,name=WebOTXCOSNamingService,J2EEServer=server,category=runtime (com.nec.webotx.enterprise.system.notification)
WebOTX_Agent: OTX01180012:is not alive :domain1:category=monitor,type=alive-check-monitor,J2EEServer=server,name=WebOTXCOSNamingService-state (com.nec.webotx.enterprise.system.notification)
また、念のため、該当ポートがListen状態かnetstatで確認してください。該当ポートがListen状態になっていたにも関わらずプロセス起動していなかった場合、他プロセスとポートの重複が発生した可能性があります。その場合、syslogに以下のメッセージが出力されます。
WebOTX_Agent: OTX04090001 getServerItem error (com.nec.webotx.enterprise.system.jndisp)org.omg.CORBA.OBJECT_NOT_EXIST: Cannot find servant  vmcid: 0x0  minor code: 1220  completed: No
名前サーバが起動失敗した場合は、ObjectBroker Lifecycle の起動に失敗した旨のエラーが出力されます。
WebOTX_Agent: OTX06000010 ObjectBroker Lifecycle Ready Error.{0} (com.nec.webotx.enterprise.system.objectbroker)org.omg.CORBA.NO_RESPONSE: Initial reference for NameService not found. (hostname.nec.co.jp) jp.co.nec.orb.Ob.OadPackage.NotFound: IDL:Ob/Oad/NotFound:1.0  vmcid: 0x1000  minor code: 996  completed: No
また、EJBコンテナやJNDIサーバなどで、名前サーバが起動していないというエラーになります。
WebOTX_Agent: OTX03020068: Exception in creating EJB container [org.omg.CORBA.NO_RESPONSE: Initial reference for NameService not found. (hostname.nec.co.jp) jp.co.nec.orb.Ob.OadPackage.NotFound: IDL:Ob/Oad/NotFound:1.0  vmcid: 0x1000  minor code: 996  completed: No] (com.nec.webotx.enterprise.system.container.ejb)
			:
WebOTX_Agent: OTX01205021: Application NOT loaded: [MEjbApp] (com.nec.webotx.enterprise.system.core)
JNDIサーバの確認
JNDIサーバが終了していないか確認します。
運用管理コマンドからは以下のコマンドで確認できます(1:起動 3:停止 4: 起動停止処理失敗)。

otxadmin> get server.internal-lifecycle-module.JNDIService.state

また、前述の名前サーバが起動していないためにJNDIサーバの起動に失敗する可能性もあります。前述のログを確認してください。
その他の詳細は[2.5.3. JNDI]を参照してください。
IIOPリスナの確認
unixはpsコマンドで、Windowsはタスクマネージャでiioplsn(WindowsはIIOPLsn.exe)の起動状態を確認します。${INSTANCE ROOT}/logs/tpsystem/history.actでも確認できます。念のため、該当ポートがListen状態かnetstatで確認してください。異常終了している場合は[IIOPリスナ異常終了/未起動への対応]を参照してください。
設定の確認
サーバが正しく起動している場合、そこに向けてリクエストが飛んでいないことが考えられます。クライアントからサーバまでの呼び出しルートを確認してください。
問題の検出方法
異常終了が発生した場合は、イベントログやWebOTXのログにメッセージ出力されます。また、エージェントプロセスを監視しておくことで、運用中のエージェントプロセスの異常終了を発見することができます。
イベントログメッセージに関しては、前述のメッセージの他、「WebOTXマニュアル オペレータメッセージ編」を参照してください。
プロセスの監視に関しては、[ 高度な管理と運用サイクルガイド > 4. 監視 > 4.1. プロセス監視 ] を参照してください。
採取資料

個別の資料詳細に関しては、 [ 1. 障害対応 > 1.1. 情報採取 > 1.1.2. 手動で情報採取する場合は ] を参照してください。

また、可能であれば、想定外のIPアドレス/ポート番号にリクエストを飛ばしている可能性があるのでクライアント側で ObjectBrokerのトレースとネットワークトレースを採取し、どこに飛ばしているか確認します。 トレースの採取方法については[ ドメイン構築・基本設定ガイド > 8. ログ > 8.2. 各サービスのログ > 8.2.8. ObjectBroker ] を参照してください。
復旧方法
以下の手段で復旧してください。

  1. 全ドメインを停止してください。
    otxadmin> stop-domain <ドメイン名>
  2. WebOTX関連プロセスが残っていた場合は、以下のコマンドで終了させてください。
    otxadmin> stop-domain --force <該当ドメイン名>
  3. 利用するドメインを起動してください。
    otxadmin> start-domain <ドメイン名>
ドメイン停止時、一部のプロセスが残ってしまった場合、次回起動時に正常起動しない可能性があります。 stop-domain --force実行後、確実に停止したことを確認してください。
復旧しなかった場合は、マシン再起動してください。

なお、設定ミスやファイル破損によって起動に失敗した場合は、再起動では復旧しません。 ここの項目を確認してください。

呼び出し対象のドメインやTPシステム
詳細は[WebOTXの起動失敗について] や [TPモニタ・マネージャライフサイクルの起動停止失敗について] を参照してください。
oad
他プロセスとポートの重複が発生した場合は、重複しない値を設定しなおしてください。
運用管理コマンドでは以下のように指定します。

otxadmin> set server.objectbrokerservice.oad.OadPort=9825   (既定値: 9825)

その他、例外と対処に関しての詳細は [ 2.5.7. Object Broker ] を参照してください。
名前サーバ
破損ファイルが原因で起動に失敗していた場合は、以下の方法で復旧してください。

  1. 全ドメインを停止してください。
    otxadmin> stop-domain <ドメイン名>
  2. WebOTX関連プロセスが残っていた場合は、以下のコマンドで終了させてください。
    otxadmin> stop-domain --force <該当ドメイン名>
  3. ${INSTANSE_ROOT}/config/ObjectBroker/namesv.ndf のバックアップがあればそれで復旧、なければ、namesv.ndf を削除してからドメインを再起動してください。

  4. 利用するドメインを起動してください。
    otxadmin> start-domain <ドメイン名>
namesv.ndfを削除した場合、名前サーバに永続的に登録してある情報はすべて失われるため、名前サーバにIORの再登録が必要となります。
該当ポートがListen状態になっていたにも関わらずプロセス起動していなかった場合、他プロセスとポートの重複が発生した可能性があります。重複しない値を設定しなおしてください。
運用管理コマンドでは以下のように指定します。

otxadmin> set server.objectbrokerservice.namesv.NameServicePort=2809   (既定値: 2809)
JNDIサーバ
詳細は [ 2.5.3. JNDI ] を参照してください。
IIOPリスナ
詳細は [ IIOPリスナ異常終了/未起動への対応 ] を参照してください。
設定
クライアントからサーバまでの呼び出しルートを正しく設定してください。
リファレンス
リファレンス内容を確認し、変更が必要な場合は値を変更後にリファレンスを再登録してください。コマンドの詳細は、 [ リファレンス集 運用管理・設定編 > 4. 運用管理コマンドリファレンス > 4.2. 運用管理コマンド(otxadmin) ], [ リファレンス集 運用管理・設定編 > 4. 運用管理コマンドリファレンス > 4.2. 運用管理コマンド(otxadmin) > 4.2.2. コマンド検索一覧 ], あるいは [ リファレンス集 運用管理・設定編 > 4. 運用管理コマンドリファレンス > 4.6. TPシステム ] を参照してください。

リファレンス登録用の設定
otxadmin> set tpsystem.serverName=接続サーバ名
otxadmin> set tpsystem.nameSvHostName=名前サーバ名
otxadmin> set tpsystem.nameSvPort=ポート番号  (0を指定すると、そのドメインで設定した名前サーバポートを使用します)
リファレンス登録、削除
otxadmin> bind-ior --application application_name --component component_name  [--bean bean_name] --interface interface_name [urlname] 
otxadmin> unbind-ior --application application_name --component component_name  [--bean bean_name] --interface interface_name [urlname]
予防のための対策
WebOTX(ドメイン)が完全に停止する前にマシンのシャットダウンが行われると、namesv.ndfが書き込みを終了する前にプロセスが停止されてしまい、namesv.ndfが破損する可能性があります。マシンシャットダウン前にWebOTXを停止するように運用方法を変更してください。

設定は、クライアント(Webサーバ)からサーバまで、正しくリクエストが到達できるように設定してください。

ポート番号はサーバマシン内で重複しないように設定してください。
ポート番号設定が重複していなくても、そのポートを別プロセスに使用されているときに起動しようとすると、ソケットのbindに失敗して起動失敗となります。名前サーバ(Namesv.exe)のポートは既定値が2809であるため、Windowsの場合特に一時ポートとして他プロセスに使用される可能性があります。
特定のポート番号を一時ポート番号として使用されないようにするには、レジストリに以下の設定を行なう必要があります。
キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
配下に以下の項目を追加します。
名前:ReservedPorts
種類:REG_MULTI_SZ
値:一時ポート番号として使用されない範囲 (xxxx-yyyyの形式でポートの範囲を指定)
例)2000番から2100番までを指定する場合
     2000-2100
設定変更後はマシンの再起動が必要です。
詳細は、次のURLを参照してください。
登録済みポートを一時ポートとして使用させない方法 http://support.microsoft.com/default.aspx?scid=kb;ja;813122
その他、個別の詳細は [ WebOTX の起動失敗について ] や [ TPモニタ・マネージャライフサイクルの起動停止失敗について ] 、 [ IIOPリスナ異常終了/未起動への対応 ] を参照してください。
対象となるエラー事象
COM_FAILURE(REFUSE)

関連情報