ページの先頭です。
ここから本文です。

よくあるご質問(サポートFAQ)

【HolonEnterprise】【HOLON/AB】WebOTX コンポーネントから他コンポーネント呼び出しを行う場合の注意事項について

質問内容

【HolonEnterprise】【HOLON/AB】WebOTX コンポーネントから他コンポーネント呼び出しを行う場合の注意事項について

回答内容

詳細

 

WebOTX 上のサーバコンポーネントから、別のサーバコンポーネントのオペレーション呼び出しを行う場合、オペレーション呼び出し時に CORBA システム例外が発生する(例えば、呼び出し先のオペレーションに障害が発生しており閉塞している)と、env構造体のエラー処理に制御が戻らず(オペレーション呼び出しの次処理が実行されず)、クライアントのアプリケーションに CORBA_NO_MEMORY 例外が発生します。

この現象を回避するためには、TRY PROTECT ~ CATCH 文による構造化例外処理を追加してください。

 
( 例 )  

修正前

RET := &INITIALIZE_STRUCT( env )
RET := SERVER2_Func( obj, ..., &ADDRESS(env) )
IF env.name <> ''
  THEN
    ;// CORBA エラー処理

修正後

RET := &INITIALIZE_STRUCT( env )
TRY
  PROTECT
    RET := SERVER2_Func( obj, ..., &ADDRESS(env) )
  CATCH
    IF env.name <> ''
      THEN
        ;// CORBA エラー処理
      ELSE
        ;// 予期せぬ例外処理

 

【本現象の確認方法】

本現象が発生した場合、サーバコンポーネント(HOLONサーバスタブ)において、TPSUserTrace(LOG_CRIT, "Unknown Exception from ABL.");が実行されます。したがって、Windowsシステムの場合には、イベントビューアに"Unknown Exception from ABL." というメッセージが出力されます。

 

環境 Version HolonEnterprise V6以降
OS Windows、HP-UX、Solaris
補足

 

サーバスタブでは、HOLON 構造化例外の CATCH 漏れを防ぐため、default の CATCH を自動生成しています。この default の CATCH 文に制御が渡ると、クライアントに CORBA_NO_MEMORY 例外を投げて、ユーザにバグを通知するという機能です。

クライアントスタブでは、CORBA システム例外が発生した場合、HOLON 構造化例外を使ったエラー処理を実現するため、該当する CATCH 文をサーチして例外を投げる機能を実装しています。

サーバスタブ上のサーバコンポーネントから、他のサーバコンポーネントを呼び出す(つまり、呼び出すクライアントスタブを使う)場合、呼び出すオペレーションが障害等により閉塞していると CORBA システム例外が発生します。このとき、クライアントスタブは、該当する CATCH 文をサーチするのですが、サーバスタブが自動生成した default の CATCH をサーチして例外を投げます。


 サーバコンポーネントA
 サーバスタブA
    ↑
    ↓
 クライアントスタブA
   (1) CORBA システム例外を検出すると、
   (2) 該当する CATCH 文をサーチするが、
   (3) サーバスタブの default の CATCH にヒットし、
   (4) longjmp する。
 サーバコンポーネントB
 サーバスタブB
   (5) default の CATCH 文(setjmp) に制御が渡され、
   (6) クライアントに CORBA_NO_MEMORY 例外を投げる。
    ↑
    ↓
 クライアントスタブB
   (7) CORBA_NO_MEMORY が捕捉される。


したがって、サーバスタブBにおいてキャッチした例外は、クライアントスタブが THROW したものになります。CORBA システム例外の場合、式を省略した THROW となり、default の CATCH 文に制御を渡すことになります。

 

製品名カテゴリ

HOLON/AB
HolonEnterprise

  • コンテンツID: 3150016922
  • 公開日: 2002年10月04日
  • 最終更新日:2002年10月04日

アンケート

サポート情報充実のためアンケートにご協力をお願いいたします。



コメント欄:
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。