CORBA通知サービスの使用

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

CORBA通知サービスAPIのリファレンス

ここでは、以下の内容について説明します。

注意: Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、サポートされなくなりました。すべてのOracle Tuxedo CORBA JavaクライアントおよびOracle Tuxedo CORBA JavaクライアントORBのテキスト・リファレンスとコード・サンプルは、サード・パーティのJava ORBライブラリを実装または実行する際の参考や、プログラマの参照用としてのみ使用してください。
注意: サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートやドキュメントは提供していません。

 


はじめに

Oracle Tuxedo CORBA通知サービスは、2つのアプリケーション・プログラミング・インタフェースをサポートしています。1つは、CORBAservices: Common Object Services Specificationで定義されるCORBAベースの通知サービスに基づいています。このドキュメントでは、このインタフェースをCosNotificationサービス・インタフェースと呼んでいます。もう1つのインタフェース(Oracleシンプル・イベント・インタフェース)は、使いやすく設計されたOracle独自のインタフェースです。

これらのインタフェースは互いに互換性があり、CORBAベースの通知サービス仕様で定義された構造化イベントを渡します。つまり、CosNotificationサービス・インタフェースを使用してポストされたイベントは、Oracleシンプル・イベント・インタフェースでサブスクライブできます(逆方向も可)。

通知サービスAPIを使用する前に、次の項目に目を通してください。

サービスの品質

サブスクリプションが一時的か永続的か、またはイベント配信の失敗後にイベント配信が再試行されるかどうかを判別するために、サブスクライバではサービスの品質(QoS)を指定します。サービスの品質には、永続的一時的の2つのサービスの品質(QoS)の設定があります。QoSはサブスクリプションのプロパティです。

永続的なサブスクリプション

永続的なサブスクリプションでは、イベント配信とサブスクリプションの永続性が強固に保証されます。ただし、システム・リソース(ディスク領域やCPUサイクルなど)が多く消費されるに伴い、多くの管理(キューの管理やデッド・サブスクライバの検出など)が必要になるため、永続的なサブスクリプションにはコストが伴います。

永続的なサブスクリプションのプロパティは次のとおりです。

一時的なサブスクリプション

一時的なサブスクリプションは、最小限のオーバーヘッドで最高のパフォーマンスを発揮し、そのプロパティは次のとおりです。

サブスクリプションは、イベント配信の失敗が検出されるまで有効です。配信の失敗が検出されると、サブスクリプションは終了します。通常、通知サービスでは、パフォーマンス上の理由で、一時的なサブスクライバにイベントが正常に配信されたかどうかを確認しません。ただし、通知サービスは、一時的なサブスクライバにイベントを配信する場合に、イベントが正常に配信されたかどうかを確認する場合があります。正常に配信されず、CORBA::TRANSIENT例外が戻されなかった場合、通知サービスでは、サブスクリプションが削除されたと判断し、サブスクリプションを取り消します。配信が失敗してCORBA::TRANSIENT例外を受信した場合、通知サービスでは、サブスクライバがビジー状態であると判断してイベントを破棄しますが、サブスクリプションは取り消されません。

デッド状態の一時的なサブスクリプションの自動的な取消しでは、アンサブスクライブされていない一時的なサブスクリプションのクリーンアップ・メカニズムが提供されます。ただし、通知サービスによる配信の確認はイベントがサブスクライバに最初に送信されたときに実行されますが、それから5分が経過し、別のイベントが配信されるまでは次の確認は行われません。したがって、確認が実行される間隔は短くて5分であり、5分経過後に配信するイベントがない場合、その間隔はさらに長くなります。5分という最短の間隔は固定であり、変更することはできません。このため、イベント配信の失敗は必ずしも最初の失敗の時点で検出されるわけではありません。これは、通知サービスで確認が行われたときにのみ検出されます。

チャネル・ファクトリの取得

チャネル・ファクトリは、イベント・チャネルを検索するために、イベント・ポスト元のアプリケーションとサブスクライバで使用されます。イベント・チャネルは、イベントのポスト、サブスクライブ(サブスクリプションの作成)、およびアンサブスクライブ(サブスクリプションの取消し)に使用されます。

通知サービスでは、Bootstrapオブジェクトを使用して、イベント・チャネル・ファクトリのオブジェクト参照を取得します。これは、Tobj_Bootstrap::resolve_initial_referencesオペレーションを使用して実行されます。Bootstrapオブジェクトでは、通知サービス・アプリケーションの2つのサービスID(NotificationServiceTobj_SimpleEventsService)がサポートされています。NotificationServiceオブジェクトは、CosNotificationサービスAPIを使用するアプリケーションで使用されます。Tobj_SimpleEventsServiceオブジェクトは、Oracle SimpleEvents APIを使用するアプリケーションで使用されます。

サービスID
オブジェクトの種類
NotificationService
CosNotifyChannelAdmin::EventChannelFactory
Tobj_SimpleEventsService
Tobj_SimpleEvents::ChannelFactory

注意: リリース8.0のOracle Tuxedo CORBAには、Oracle WebLogic Enterprise の旧リリースで提供されていたOracleクライアント環境オブジェクトが従来のまま含まれており、Tuxedo 8.0 CORBAクライアントで利用できます。Oracle Tuxedo8.0クライアントでは、ブートストラップ処理オブジェクト、セキュリティ・オブジェクトおよびトランザクション・オブジェクトの初期リファレンスの解決に、それらの環境オブジェクトを引き続き使用する必要があります。リリース8.0のOracle Tuxedo CORBAでは、OMGインターオペラブル・ネーミング・サービス(INS)を使用してもブートストラップ処理オブジェクト、セキュリティ・オブジェクトおよびトランザクション・オブジェクトの初期リファレンスを解決できるサポートが追加されています。INSの詳細は、『CORBAプログラミング・リファレンス』を参照してください。

トランザクションの使用

トランザクションに関する動作は、Oracle SimpleEvents APIとCosNotificationサービスAPIと同じです。トランザクション動作をサポートするオペレーションは、push_structured_eventのみで、CosNotifyChannelAdmin::StructuredProxyPushConsumerインタフェースおよびTobj_SimpleEvents::Channelインタフェースでサポートされます。それ以外のオペレーションはすべてトランザクションのコンテキストで使用できますが、トランザクション内で実行されるかどうかに関係なく、同じように動作します。

イベントをポストするときの動作は、サブスクリプションのQoSと結びついています。サブスクリプションのイベント配信のQoSが永続的である場合に、イベントがトランザクションのコンテキストでポストされると、配信はトランザクションの結果に影響されます。つまり、トランザクションがコミットされると、通知サービスは通常どおりにイベントをサブスクライバに配信しようとします。トランザクションがロールバックされると、通知サービスはイベントの配信を試行しません。

サブスクライバのサブスクリプションのイベント配信のQoSが一時的である場合に、イベントがトランザクションのコンテキストでポストされると、トランザクションの結果に関係なく、そのイベントの配信が1回試行されます。つまり、トランザクションはイベントが配信されるかどうかに影響を与えず、イベントの配信が1回試行されます。

注意: イベントの配信に関連付けられているトランザクション・コンテキストはありません。ただし、永続的なサブスクリプションの場合は、ポスト元のトランザクションがコミットされたときに、イベントがサブスクライバに配信されるか、管理上のアクションを待つためにエラー・キューに入れられることが通知サービスによって保証されます。

構造化イベントのフィールド、型、およびフィルタ

ポスト元によって通知サービスにプッシュされるか、サブスクライバに配信されるイベントはすべてCOS構造化イベントで、CORBAベースの通知サービス(CORBAservicesイベント・サービス(図2-1を参照)を拡張したサービス)で指定されている構造化イベントの定義に準拠します。イベントが(ドメインや型でフィルタ処理されるのではなく)内容に基づいてフィルタ処理される場合や、イベントがOracle Tuxedoアプリケーションにサブスクライブされる場合は、適用される制限が増えます。この制限は、イベントの内容に基づいてデータ型およびフィルタ処理に適用されます。次に、それらの制限について説明します。

図2-1 構造化イベント

構造化イベント

イベントの設計

イベントの設計は、あらゆる通知サービスの基本です。この設計は、一致するサブスクリプションに配信される情報の量だけでなく、通知サービスの効率とパフォーマンスにも影響します。したがって、計画を慎重に行って、通知サービスが現在のニーズだけでなく将来の規模拡大にも対応できるようにする必要があります。

通知サービスでは、(1)ドメイン名、(2)型名、(3)優先度、(4)フィルタ処理可能データ、(5)本文の残りの5つのレベルのイベント設計がサポートされています。イベントを設計する場合は、ドメイン名と型名を指定する必要があります(優先度とフィルタ処理可能なデータは任意)。選択するドメイン名は各自の業務に関連付けることができます。たとえば、病院は医療業務になるため、病院用の通知サービス・アプリケーションでは、「HEALTHCARE」をドメイン名として選択できます。保険業者の種類別にイベントを分類する場合は、「HMO」や「UNINSURED」を型名として選択できます。支払いを担当する事業者別にイベントをさらに細かく定義する場合は、フィルタ処理可能データを使用して、特定の「HMO_Account」や「Patient_Account」に対する「billing」として事業者を指定できます。リスト2-1は、この型のイベント設計の例を示しています。

リスト2-1 イベントの設計
domain_name = “HEALTHCARE”
type_name = “HMO”
#Filterable data name/value pairs.
filterable_data.name = “billing”
filterable_data.value = 4498
filterable_data.name = “patient_account”
filterable_data.value = 37621

当然、通知サービス・アプリケーションでポストおよび受信されるイベント設計が詳細かつ厳密になればなるほど、通知サービスで処理しなければならないイベントの数が少なくなります。このことは、システム・リソースと構成の要件に直接的に影響します。したがって、イベントを設計するときには十分な注意が必要です。

イベントのFMLフィールド表ファイルの作成

イベントのフィールド操作言語(FML)フィールド表は、次の機能のいずれかが必要な場合にのみ作成する必要があります。それ以外の場合、FML表は不要です。

構造化イベントのfilterable_dataフィールドには、名前/値(NV)のペアのリストが格納されます。イベントのデータは、通常はこのリストに格納されます。FMLフィールド表ファイルのフィールド名は、構造化イベント内の名前と一致する必要があります。フィールドの型は、carrayを除くすべてのFML型(longshortdoublefloatcharstring)を使用できます。構造化イベントの値は、フィールド表で定義されている型と同じにする必要があります。表2-1は、Oracle TuxedoでサポートされているCORBAのAny型を示しており、これらを使用すると、データのフィルタ処理とOracle Tuxedoの相互運用性を実現できます。

リスト2-2は、FMLフィールド表ファイルの例を示しています。*base 2000は、フィールドのベース番号です。最初のエントリでは、フィールド名がbilling、フィールド番号が1(ベース番号に基づく値)で、フィールド型がlongになっています。

リスト2-2 データのフィルタ処理のFMLフィールド表ファイル
*base 2000
#Field Name       Field #  Field Type    Flags     Comments
#----------- ------- ---------- ------ --------
billing 1 long - -
stock_name 2 string - -
price_per_share 3 double - -
number_of_shares 5 long - -

Oracle Tuxedo FMLフィールド表ファイルには、次のガイドラインと制約が適用されます。

FMLフィールド表ファイルの作成および構成方法の詳細は、『Oracle Tuxedoコマンド・リファレンス』field_tablesに関する項および『FMLを使用したOracle Tuxedo ATMIアプリケーションのプログラミング』を参照してください。

Oracle Tuxedoアプリケーションとの相互運用性

Oracle Tuxedo CORBA通知サービスを使用するアプリケーションは、Oracle Tuxedo EventBrokerを使用するOracle Tuxedoアプリケーションと相互運用できます。Oracle Tuxedo通知サービスを使用するアプリケーションでは、Oracle Tuxedo EventBrokerサブスクライバに配信されるイベントをポストしたり、Oracle Tuxedo EventBrokerによってポストされたイベントを受信できます。

このような相互運用性を実現するには、FMLフィールド表の内容をOracle Tuxedoで調整できるように、CosNotification構造化イベントとOracle Tuxedo FMLバッファ間のマッピングを理解する必要があります。考慮すべき状況は、Oracle Tuxedo EventBrokerを介してOracle Tuxedoアプリケーションによって受信されるイベントのポストと、Oracle Tuxedoアプリケーションによって通知サービスのイベント・チャネルにポストされたイベントの受信の2つがあります。

イベントのポスト

Oracle TuxedoアプリケーションでポストされたイベントをOracle Tuxedoアプリケーションでサブスクライブするには、ポスト時にOracle Tuxedo構造化イベントがFML32およびイベント名にどのようにマッピングされるかについて理解する必要があります。マッピングは次のようになります。

イベントの受信

Oracle Tuxedoシステム・イベントおよびユーザー・イベントは、Oracle Tuxedoアプリケーションで受信できます。システム・イベントは、アプリケーションではなく、Oracle Tuxedoシステムによって生成されます。ユーザー・イベントはOracle Tuxedoアプリケーションによって生成されます。システム・イベントのコード・リストの詳細は、『Oracle Tuxedoコマンド・リファレンス』EVENTSに関する項を参照してください。システム・イベントおよびユーザー・イベントは、次のようにCosNotification構造化イベントでマッピングされます。

構造化イベントのフィールド
domain_name
常に“TMEVT”に設定
type_name
空の文字列
event_name
空の文字列
変数ヘッダー(優先度)
空のシーケンス
フィルタ処理可能な本文のフィールド
FMLフィールド名と同じ

注意: フィルタ処理可能な本文のフィールドは名前/値のペアで構成され、名前の部分はFMLフィールド名と同じです。

残りの本文
常にvoidに設定

Oracle Tuxedoシステムでは、システムの警告と障害に関する定義済のイベントを検出してポストします。たとえば、システム生成のエベントでは、構成の変更、状態の変更、接続の障害およびマシンの分断について報告されます。

Oracle TuxedoアプリケーションによってポストされたイベントをOracle Tuxedoアプリケーションで受信するには、Oracle Tuxedoイベントが格納されているFMLバッファをどのように使用して、Oracle Tuxedo構造化イベントが作成されるのかを理解する必要があります。また、domain_nameおよびtype_nameとOracle Tuxedoイベント名の関係についても把握しておく必要があります。考慮する必要があるのは、システム・イベントとユーザー・イベントの2つの場合です。

Oracle Tuxedoでは、イベント名の先頭にドット(.)を使用して、システム生成のイベントとアプリケーション定義のイベントを区別します。システム・イベントの例は.SysNetworkDroppedです。ユーザー・イベントの例はeventsdroppedです。これらのイベントをサブスクライブするには、次のように通知サービスのサブスクライバ・アプリケーションでサブスクリプションを定義する必要があります。

サブスクリプションの作成時に使用するパラメータ

サブスクリプションを作成する場合は、次のパラメータを指定できます。これらのパラメータはOracleシンプル・イベントAPIおよびCosNotificationサービスAPIをサポートしています。

subscription_name

通知サービスとサブスクライバのサブスクリプションを識別する名前を指定します。アプリケーションでは、システム管理者にとって意味のある名前を使用する必要がありますが、これは、管理者がアプリケーションとサブスクリプション、およびそのサブスクリプションを介してサブスクライバに配信されるイベントを関連付ける主要な手段だからです。このパラメータは任意です(空の文字列を渡すこともできます)。複数のサブスクリプションで同じ名前を使用できます。subscription_nameの長さは最大で128文字です。

domain_type

CORBAベースの通知サービス仕様で定義されている構造化イベントの固定ヘッダー部分のdomain_typeフィールドと同じパラメータです。このフィールドは、Telecommunications(通信)、Finance(金融)、Health Care(医療)など、イベントの型が定義されている特定の垂直産業の分野(ドメイン)を識別する文字列です。このパラメータは正規表現のため、フィルタ処理の基準となるドメイン・パターンの設定に使用することもできます。たとえば、Fの文字で始まるすべてのドメインをサブスクライブするには、ドメインを「F.*」に設定します。正規表現の作成方法の詳細は、『Oracle Tuxedo ATMI C関数リファレンス』recompコマンドに関する項を参照してください。

type_name

CORBAベースの通知サービス仕様で定義されている構造化イベントの固定ヘッダー部分のtype_nameフィールドと同じパラメータです。このフィールドは、Comm_alarm、StockQuote、VitalSignsなど、ドメイン内でイベントの型を一意に分類する文字列です。このパラメータは正規表現のため、フィルタ処理の基準となるイベントの型のパターンを設定するために使用することもできます。たとえば、Fの文字で始まるすべてのイベント型をサブスクライブするには、型を「F.*」に設定します。正規表現の作成方法の詳細は、『Oracle Tuxedo ATMI C関数リファレンス』recompコマンドに関する項を参照してください。

data_filter

フィルタ処理可能なデータとフィルタ処理を実行する変数ヘッダーのフィールドの値を指定します。たとえば、ニュース記事のサブスクリプションには、ドメインがNews(ニュース)、型がSports(スポーツ)、data_filterが「Scores > 20」になる場合が考えられます。このパラメータでは、ブール式でサブスクリプションが一致する必要があるデータを定義します。サポートされるデータ型は、shortlongcharfloatdoubleおよびstringです。表2-2は、サポートされるブール式の演算子を示しています。

表2-2 ブール式の演算子
演算子
単項
+, -, !, ~
倍数
*, /, %
加法
+, -
比較
< , >, <=, >=, ==, !=
等価、一致
==, !=, %%, !%
排他論理和
^
論理積
&&
論理和
||

データのフィルタ処理を使用するには、FML表を設定して、サブスクリプションにフィルタを含め、データをフィルタ処理してイベントをポストする必要があります。リスト2-3は、これらのタスクの例を示しています。

リスト2-3 データのフィルタ処理の要件
//Setting up the FML Table
Field table file.
----------------
*base 2000
*Field Name    Field #   Field Type   Flags    Comments
----------- ------- --------- ------ ------
StockName 1 string - -
PricePerShare 2 double - -
CustomerId 3 long - -
CustomerName 4 string - -

//Subscription data filtering.
1) "NumberOfShares > 100 && NumberOfShares < 1000"
2) "CustomerId == 3241234"
3) "PricePerShare > 125.00"
4) "StockName == 'BEAS'"
5) "CustomerName %% '.*Jones.*'" // CustomerName contains "Jones"
6) "StockName == 'BEAS' && PricePerShare > 150.00"
//Posting the event.
// C++
CosNotification::StructuredEvent ev;
...
ev.filterable_data[0].name = CORBA::string_dup("StockName");
ev.filterable_data[0].value <<= "BEAS";
ev.filterable_data[1].name = CORBA::string_dup("PricePerShare");
ev.filterable_data[1].value <<= CORBA::Double(175.00);
ev.filterable_data[2].name = CORBA::string_dup("CustomerId");
ev.filterable_data[2].value <<= CORBA::Long(1234567);
ev.filterable_data[3].name = CORBA::string_dup("CustomerName");
ev.filterable_data[3].value <<= "Jane Jones";
フィルタ文法の詳細は、「イベントのFMLフィールド表ファイルの作成」および『FMLを使用したOracle Tuxedo ATMIアプリケーションのプログラミング』のフィールド化バッファのブール式に関する項を参照してください。

push_consumer

構造化イベントを配信するために通知サービスで使用されるコールバック・オブジェクトを指定します。サブスクライバ・アプリケーションはCosNotifyComm::StructuredPushConsumerインタフェースを実装し、通知サービスがイベントを配信する際に呼び出せるようにする必要があります。
注意: コールバック・オブジェクトには、一時的または永続的なオブジェクトのいずれかを使用できます。使用するオブジェクト参照のタイプを決定する場合は、QoSとアプリケーションの実行回数の両方を考慮に入れる必要があります。使用するオブジェクト参照のタイプの決定する際の参考情報については、表2-3を参照してください。

表2-3 共同クライアント/サーバーで一時的なオブジェクト参照と永続的なオブジェクト参照をどちらを使用するか
サブスクリプションの状態
処理
QoSが一時的で、起動と停止を1回実行。
一時的なオブジェクト参照を使用する必要があります。この場合は、システム・リソースを解放できるように、停止時にサブスクライバ・アプリケーションでアンサブスクライブすることをお薦めしますが、必須ではありません。
QoSが永続的で、起動と停止を1回実行。
一時的なオブジェクト参照を使用する必要があります。
QoSが永続的で、起動と停止を複数回実行。
永続的なオブジェクト参照を使用し、サブスクライバが停止して再起動するたびに、同じホストとポートが使用されるように、ホストとポートを保存する必要があります。この場合は、双方向のIIOP機能を使用しないことをお薦めします。

注意: 永続的なオブジェクト参照はドメイン内ではサポートされないため、共同クライアント/サーバーが使用されている場合は、リモート(Oracle Tuxedoドメインの外側)で使用する必要があります。

QoSが一時的で、起動と停止を複数回実行。
永続的なオブジェクト参照を使用できますが、サブスクライバの停止時に、このサブスクライバのイベントがポストされないと保証されないかぎり、この構成は推奨されません。

qos (サービスの品質)

サブスクリプションで必要なサービスの品質を指定します。指定できる値は一時的または永続的のいずれかです。 一時的なサブスクリプションの場合、通知サービスではサブスクライバへのイベント配信が1回だけ試行されます。その試行が失敗するとイベントは破棄されます。通知サービスがCORBA::TRANSIENT例外を受信しない場合、サブスクライバがシャットダウンされているか他の理由で利用できないと判断し、サブスクリプションを取り消します。配信が失敗してCORBA::TRANSIENT例外を受信した場合、通知サービスでは、サブスクライバがビジー状態であると判断してイベントを破棄しますが、サブスクリプションは取り消されません。 永続的なサブスクリプションの場合、配信の最初の試行が失敗すると、通知サービスでそのイベントが保留キューに保持され、構成可能な再試行回数の上限に達するまでサブスクリプションの配信が繰り返されます。再試行回数の上限に達すると、イベントはエラー・キューに移動されます。エラー・キューに保持されたイベントは、システム管理者によって処理されます。システム管理者は、エラー・キューからイベントを削除するか(事実上の破棄)、または再び配信できるように保留キューに戻します。
注意: 永続的なサブスクリプションの場合、通知サービスでは常にコールバック・オブジェクトを双方向で呼び出してイベントを配信します。共同クライアント/サーバーがorb->runを呼び出す前にコールバック・オブジェクト(イベントの受信側)をアクティブにしない状況で、通知サービスがコールバック・オブジェクトを呼び出す場合、POAに関するかぎり、コールバック・オブジェクトは存在しません。この場合は、CORBA::OBJECT_NOT_EXIST例外が戻されます。通知サービスがCORBA::OBJECT_NOT_EXIST例外を受信すると、サブスクリプションとイベントを削除し、それ以外の場合は、サブスクリプションが保持され、イベントが再試行されます。

 


Oracleシンプル・イベントAPI

Oracleシンプル・イベント・アプリケーション・プログラミング・インタフェース(API)の特徴は、簡単で使いやすいことです。この機能は、Oracle Tuxedo EventBrokerの機能と類似しています。

Oracleシンプル・イベントAPIは、次のインタフェースで構成されます(図2-2を参照)。

Tobj_SimpleEvents::ChannelインタフェースおよびTobj_SimpleEvents::ChannelFactoryインタフェースは、通知サービスによって実装され、次のとおりです。

CosNotifyComm::StructuredPushConsumerインタフェースはサブスクライバによって実装されます。このインタフェースの詳細は、「CosNotifyComm::StructuredPushConsumer::push_structured_event」を参照してください。

注意: この項で説明するCosNotificationサービスのクラスの詳細は、tuxdir/includeディレクトリにあるCosNotificationサービスIDLファイルで完全に記述されています。
注意: サポートされていないクラス・オペレーションを使用する場合は、CORBA::NO_IMPLEMENT例外が発生します。

TOBJ_SimpleEvents::Channelインタフェース

チャネル・インタフェースは次のように使用されます。

このインタフェースには、次のオペレーションがあります。

このインタフェースのCORBA IDLは次のとおりです。

module Tobj_SimpleEvents
{
typedef long SubscriptionID;
typedef string RegularExpression;
typedef string FilterExpression;
  const SubscriptionType TRANSIENT_SUBSCRIPTION = 0;
const SubscriptionType PERSISTENT_SUBSCRIPTION = 1;
interface Channel
{
void push_structured_event(
in CosNotification::StructuredEvent event);
     SubscriptionID subscribe (
in string subscription_name,
in RegularExpression domain,
in RegularExpression type,
in FilterExpression data_filter,
in CosNotification::QoSProperties qos,
in CosNotifyComm::StructuredPushConsumer push_consumer);

boolean exists( in SubscriptionID id );
     void unsubscribe( in SubscriptionID  id );
};
};

これらのオペレーションについては、次の項で説明します。

 


Channel::subscribe

CORBA IDL

SubscriptionID subscribe (
in string subscription_name,
in RegularExpression domain,
in RegularExpression type,
in FilterExpression data_filter,
// The filter expression must length 1 and the name must
// be TRANSIENT_SUBSCRIPTION or PERSISTENT_SUBSCRIPTION.
in CosNotification::QoSProperties qos,
in CosNotifyComm::StructuredPushConsumer push_consumer
);

パラメータ

このオペレーションでサポートされるパラメータの詳細は、「サブスクリプションの作成時に使用するパラメータ」を参照してください。

例外

CORBA::BAD_PARAM

次のいずれかの問題を示します。
Tobj_Events::SUB_INVALID_FILTER_EXPRESSION
Tobj_Events::SUB_UNSUPPORTED_QOS_VALUE

CORBA::IMP_LIMIT

次のいずれかの問題を示します。
Tobj_Events::SUB_DOMAIN_BEGINS_WITH_SYSEV Tobj_Events::SUB_EMPTY_DOMAIN Tobj_Events::SUB_EMPTY_TYPE Tobj_Events::SUB_DOMAIN_AND_TYPE_TOO_LONG Tobj_Events::SUB_FILTER_TOO_LONG Tobj_Events::SUB_NAME_TO_LONG Tobj_Events::TRANSIENT_ONLY_CONFIGURATION

CORBA::INV_OBJREF

次の問題を示します。 Tobj_Events::SUB_NIL_CALLBACK_REF
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

イベントをサブスクライブするには、このオペレーションを使用します。このオペレーションは、通知サービスのサブスクライバ・アプリケーションによって呼び出され、特定のイベントへのサブスクリプションが作成されます。サブスクリプション名、ドメイン名、型名、データ・フィルタ、サービスの品質、およびサブスクライバのコールバック・オブジェクトの オブジェクト参照が渡されます。コールバック・オブジェクトでは、CosNotifyComm::StructuredPushConsumer IDLインタフェースが実装されます。

注意: 停止および再起動するサブスクライバでは、subscription_idを永続ストレージに書き込む必要があります。

データのフィルタ処理を使用する場合や、Oracle Tuxedoシステム・イベントまたはOracle Tuxedoアプリケーションでポストされるイベントをサブスクライブするには、「イベントのFMLフィールド表ファイルの作成」および「Oracle Tuxedoアプリケーションとの相互運用性」を参照してください。

戻り値

一意のサブスクリプション識別子を戻します。このオペレーションの結果は即座には現れません。このオペレーションからの復帰とイベント配信の実際の開始の間には遅延が発生する場合があります。遅延時間の長さは、構成によっては大きくなる場合があります。遅延時間に影響する要因の詳細は、「データベースの同期」を参照してください。

注意: 停止と再起動を1回のみ実行する通知サービス・アプリケーションでは、subscription_idを使用することで、サブスクリプションが自動的に取り消されたか、またはシステム管理者によって取り消されたかを確認できます。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

subscription_id = channel->subscribe(
subscription_name,
"News", // domain
“Sports”, // type
"", // No data filter.
qos,
news_consumer.in()
);

 


Channel::unsubscribe

CORBA IDL

void unsubscribe( in SubscriptionID id );

パラメータ

subscription_id

サブスクリプション識別子。

例外

CORBA::BAD_PARAM

次の問題を示します。Tobj_Events::INVALID_SUBSCRIPTION_ID
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

アンサブスクライブに使用されます。サブスクライバ・アプリケーションでは、このオペレーションを使用してサブスクリプションを終了します。このオペレーションから復帰すると、それ以降にイベントは配信できません。入力パラメータは、サブスクライブ時に取得したSubscriptionIDの1つです。

注意: このオペレーションの結果は即座には現れません。このオペレーションからの復帰後も、サブスクライバでは一定の時間は継続してイベントを受信できます。この時間は、構成によっては長くなる場合があります。この時間に影響する要因の詳細は、「データベースの同期」を参照してください。

サンプル

C++サンプル・コード:

channel->unsubscribe(subscription_id);

 


Channel::push_structured_event

CORBA IDL

void push_structured_event(
in CosNotification::StructuredEvent notification
);

パラメータ

notification

このパラメータには、CosNotificationサービス仕様で定義されている構造化イベントが格納されます。

例外

CORBA_IMP_LIMIT

サブスクリプションに関する次のいずれかの問題を示します。 Tobj_Events::POST_UNSUPPORTED_VALUE_IN_ANY Tobj_Events::POST_UNSUPPORTED_PRIORITY_VALUE Tobj_Events::POST_DOMAIN_CONTAINS_SEPARATOR Tobj_Events::POST_TYPE_CONTAINS_SEPARATOR Tobj_Events::POST_SYSTEM_EVENTS_UNSUPPORTED Tobj_Events::POST_EMPTY_DOMAIN Tobj_Events::POST_EMPTY_TYPE Tobj_Events::POST_DOMAIN_AND_TYPE_TOO_LONG
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

ポスト元アプリケーションで使用され、通知サービスにイベントをポストします。

注意: このオペレーションには、トランザクションのコンテキストで使用される際のトランザクション動作があります。詳細は、「トランザクションの使用」を参照してください。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベントの作成とポスト」を参照してください。

C++サンプル・コード:

channel->push_structured_event(notification);

 


Channel::exists

CORBA IDL

boolean exists(in SubscriptionID subscription_id);

パラメータ

subscription_id

サブスクリプション識別子。

例外

CORBA::BAD_PARAM

次の問題を示します。Tobj_Events::INVALID_SUBSCRIPTION_ID
subscription_idが、CosNotificationサービスAPIを使用して作成されるサブスクリプション用の場合は、この例外が常に戻されます。
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

サブスクライバ・アプリケーションで使用され、サブスクリプションが存在するかどうかを確認します。システム管理者はサブスクリプションを手動で削除、通知サービスでは一時的なサブスクリプションを自動的に削除できるため、サブスクライバ・アプリケーションでは、必要に応じてサブスクリプションを再作成できるように、このオペレーションを使用する必要があります。このオペレーションで使用されるsubscription_idは、サブスクライブ時に取得したものと同じです。

戻り値

ブール値を戻します(サブスクリプションが存在する場合はTRUE、存在しない場合はFALSEを戻します)。

サンプル

C++サンプル・コード:

if channel->exists (subscription_id) {
// The subscription is still valid.
} else {
// The subscription no longer exists.
}

TOBJ_SimpleEvents::ChannelFactoryインタフェース

ChannelFactoryインタフェースは、イベント・チャネルの検索に使用されます。このインタフェースでは、find_channelという1つのオペレーションが提供されます。

このインタフェースのCORBA IDLは次のとおりです。

module Tobj_SimpleEvents
{
typedef long ChannelID;
interface ChannelFactory
{
Channel find_channel(
in ChannelID channel_id // Must be DEFAULT_CHANNEL
);
};
};

 


Channel_Factory::find_channel

CORBA IDL

Channel find_channel(
in ChannelID channel_id );

パラメータ

このリリースのOracle Tuxedoでは、イベント・チャネルは1つしかないため、渡されるChannelIDTobj_SimpleEvents::DEFAULT_CHANNEL (C++)に設定する必要があります。

例外

CORBA::BAD_PARAM

次の問題を示します。 Tobj_Events::INVALID_CHANNEL_ID
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

ポスト元アプリケーションおよびサブスクライバ・アプリケーションで使用されます。このオペレーションを使用すると、イベント・チャネルを検索し、それを使用してポスト元でイベントをポストし、サブスクライバでイベントをサブスクライブおよびアンサブスクライブできます。

戻り値

デフォルトのイベント・チャネルのオブジェクト参照を戻します。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベント・チャネルの取得」を参照してください。

C++サンプル・コード:

channel_factory->find_channel(
Tobj_SimpleEvents::DEFAULT_CHANNEL);

 


CosNotificationサービスAPI

この項では、Oracle Tuxedo CORBA通知サービスによって実装されるCosNotificationサービスで定義されるオペレーションについて説明します。これらのオペレーションは、オペレーションのセット全体のサブセットにすぎません。このサブセットは、Oracleシンプル・イベントAPIのかわりに使用可能な機能的に完全なAPIです。

このAPIは、Oracleシンプル・イベントAPIよりも複雑です。この理由は2つあります。1つ目は、CosNotificationサービスAPIが複雑になっていることです。2つ目は、CosNotificationサービスAPIのOracle Tuxedo実装では、サポートされるオペレーションに制約が追加されることです。このように複雑でも、パフォーマンスや柔軟性の面で利点はないため、できるかぎりOracleシンプル・イベントAPIを使用することをお薦めします。

CosNotification APIは、移植性を目的に、できるかぎり標準のAPIを使用する必要のある場合に用意されています。このAPIは、機能面でシンプル・イベントAPIの機能を超える利点はありません。このAPIを使用して開発されるアプリケーションには十分な移植性がありますが、完全ではありません。この理由は、完全な移植性を実現できるほど、CosNotificationサービスAPIが十分にサポートされていないことです。たとえば、CORBAベースの通知サービスで必要なフィルタ処理の文法は、COS Trader文法に基づいています。Oracle Tuxedoではこの文法ではなく、Oracle Tuxedo EventBroker文法に基づく別の文法をサポートしているため、フィルタ処理が必要なアプリケーションには移植性がありません。同じことがQoSでも当てはまり、CosNotificationサービスAPIでは、CORBAベースの通知サービスの標準サービスの品質ではなく、別のサービス品質がサポートされています。

サポートされているCosNotificationサービスのクラスの概要

図2-3は、このリリースのOracle Tuxedoで(完全または部分的に)に実装されているCosNotificationサービスのクラスとそれらの関係を示しています。

図2-3 実装されているCosNotificationサービスのクラス

実装されるCosNotificationサービスのクラス

各クラスでサポートされるオペレーションを次にまとめます。詳細は、「CosNotificationサービスのクラスの詳しい説明」を参照してください。

CosNotificationサービスのクラスの詳しい説明

この項では、このリリースのOracle Tuxedoで実装されるCosNotificationサービスのクラスについて説明します。これらのクラスの詳細は、tuxdir/includeディレクトリにあるCosNotificationサービスIDLファイルで完全に記述されています。

注意: サポートされていないクラス・オペレーションを使用する場合は、CORBA::NO_IMPLEMENT例外が発生します。

CosNotifyFilter::Filterクラス

このクラスは、イベント・サブスクライバ・アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyFilter
{
interface Filter {
ConstraintInfoSeq
add_constraints (
in ConstraintExpSeq constraint)
raises (InvalidConstraint);
      void destroy();
};
}; //CosNotifyFilter

 


CosNotifyFilter::Filter::add_constraints

形式

フィルタ・オブジェクトのドメイン、型およびデータ・フィルタのパラメータを設定します。

OMG IDL

ConstraintInfoSeq add_constraints (
in ConstraintExpSeq constraint)
raises (InvalidConstraint);

例外

CosNotifyFilter::InvalidConstraint

発生することはありません。

CORBA::BAD_PARAM

次の問題を示します。Tobj_Events::SUB_INVALID_FILTER_EXPRESSION.

CORBA_IMP_LIMIT

次のいずれかの問題を示します。 Tobj_Notification::SUB_ADD_CONS_ON_TIMED_OUT_FILTER Tobj_Notification::SUB_MULTIPLE_CALLS_TO_ADD_CONS Tobj_Notification::SUB_MULTIPLE_CONSTRAINTS_IN_LIST Tobj_Notification::SUB_MULTIPLE_TYPES_IN_CONSTRAINT Tobj_Notification::SUB_SYSTEM_EVENTS_UNSUPPORTED Tobj_Events::SUB_DOMAIN_BEGINS_WITH_SYSEV Tobj_Events::SUB_EMPTY_DOMAIN Tobj_Events::SUB_EMPTY_TYPE Tobj_Events::SUB_FILTER_TOO_LONG
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

サブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、サブスクライブするイベントの種類を定義します。設定するのは、フィルタ・オブジェクトのドメイン、型およびデータ・フィルタのパラメータです。これらのパラメータの詳細は、「サブスクリプションの作成時に使用するパラメータ」を参照してください。

注意: add_constraintsオペレーションのOracle Tuxedo実装は、(1) 1回のみ呼出し可能で、(2) フィルタがプロキシ・オブジェクトに追加される前に呼び出す必要があり、(3)イベント型が1つしかない単一の制約でのみ構成される必要があります。

戻り値

空のリストを戻します(呼出し側で無視することをお薦めします)。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

// set the filtering parameters
// (domain = "News", type, and no data filter)
CosNotifyFilter::ConstraintExpSeq constraints;
constraints.length(1);
constraints[0].event_types.length(1);
constraints[0].event_types[0].domain_name =
CORBA::string_dup("News");
constraints[0].event_types[0].type_name =
CORBA::string_dup (“Sports”);
// no data filter
constraints[0].constraint_expr = CORBA::string_dup(""); CosNotifyFilter::ConstraintInfoSeq_var
add_constraints_results = // ignore this returned value
filter->add_constraints(constraints);

 


CosNotifyFilter::Filter::destroy

形式

フィルタ・オブジェクトを破棄します。

OMG IDL

void destroy();

例外

CORBA::BAD_PARAM

次の問題を示します。Tobj_Events::SUB_INVALID_FILTER_EXPRESSION.
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

アンサブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、ターゲットのフィルタ・オブジェクトを破棄します。

注意: 対応するサブスクリプションを取り消す準備ができるまでは、フィルタ・オブジェクトを破棄しないでください。

CosNotifyFilter::FilterFactoryクラス

このクラスは、イベント・サブスクライバ・アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyFilter
{
interface FilterFactory {
Filter
create_filter (
in string constraint_grammar)
raises (InvalidGrammar);
destroy();
};
}; //CosNotifyFilter

 


CosNotifyFilter::FilterFactory::create_filter

形式

サブスクリプションに配信されるイベントを決定します。

OMG IDL

Filter create_filter (
in string constraint_grammar)
raises (InvalidGrammar);

例外

CosNotifyFilter::InvalidGrammar

constraint_grammarがサポートされないことを示します。

説明

サブスクライバ・アプリケーションで使用され、新しいフィルタ・オブジェクトを作成します。このフィルタは、サブスクリプションに配信されるイベントの決定に使用されます。サブスクライバでは、5分以内にフィルタを設定してプロキシに追加する必要があり、そうしないと、フィルタは破棄されます。フィルタの文法はTobj_Notification::Constraint_grammarに設定する必要があり、そうしないと、InvalidGrammar例外が発生します。

戻り値

新しいフィルタのオブジェクト参照を戻します。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

filter_factory->create_filter(
Tobj_Notification::CONSTRAINT_GRAMMAR
);

CosNotifyChannelAdmin::StructuredProxyPushSupplierクラス

このクラスは、イベント・サブスクライバ・アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyChannelAdmin
{
interface StructuredProxyPushSupplier :
ProxySupplier,
CosNotifyComm::StructuredPushSupplier {
    void connect_structured_push_consumer (
in CosNotifyComm::StructuredPushConsumer push_consumer)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );
};
// The following operations are inherited.
void set_qos(in QoSProperties qos)
raises (UnsupportedQoS);
FilterID add_filter (in Filter new_filter );
Filter get_filter( in FilterID filter )
raises ( FilterNotFound);
void disconnect_structured_push_supplier();
readonly attribute ProxyType MyType;
};
}; //CosNotifyChannelAdmin

 


CosNotifyChannelAdmin::StructuredProxyPushSupplier:: connect_structured_push_consumer

形式

サブスクリプションを完了します。

OMG IDL

void connect_structured_push_consumer (
in CosNotifyComm::StructuredPushConsumer push_consumer)
raises(CosEventChannelAdmin::AlreadyConnected,
CosEventChannelAdmin::TypeError );

例外

CosEventChannelAdmin::TypeError

発生することはありません。

CORBA::INV_OREF

Tobj_Events::SUB_NIL_CALLBACK_REF

CORBA::IMP_LIMIT

次のいずれかの問題を示します。 Tobj_Events::SUB_DOMAIN_AND_TYPE_TOO_LONG Tobj_Events::SUB_NAME_TO_LONG Tobj_Events::TRANSIENT_ONLY_CONFIGURATION Tobj_Notification::SUBSCRIPTION_DOESNT_EXIST.

CORBA::OBJECT_NOT_EXIST

プロキシが存在しません。

CosEventChannelAdmin::AlreadyConnected

connect_structured_push_consumerオペレーションがすでに呼び出されていることを示します。
注意: 例外の定義および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

このオペレーションはサブスクライブ時に使用します。このオペレーションはサブスクライバ・アプリケーションで使用され、イベントをサブスクライブします。push_consumer パラメータでは、サブスクライバのコールバック・オブジェクトを指定します。

connect_structured_push_consumerが呼び出されると、通知サービスがコールバック・オブジェクトのpush_structured_eventオペレーションを呼び出し、イベントをサブスクライバに送信します。connect_structured_push_consumerがすでに呼び出されている場合は、AlreadyConnected例外が発生します。

注意: connect_structured_push_consumerを呼び出す前に、set_qosadd_filterを呼び出す必要があります。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

subscription->connect_structured_push_consumer(
news_consumer.in()
);

 


CosNotifyChannelAdmin::StructuredProxyPushSupplier::set_qos

形式

サブスクリプションのQoSを設定します。

OMG IDL

void set_qos(in QoSProperties qos)
raises (UnsupportedQoS);

例外

UnsupportedQoS

発生することはありません。

ORBA::IMP_LIMIT

次のいずれかの問題を示します。 Tobj_Notification::SUB_MULTIPLE_CALLS_TO_SET_QOS Tobj_Notification::SUB_CANT_SET_QOS_AFTER_CONNECT Tobj_Notification::SUBSCRIPTION_DOESNT_EXIST Tobj_Notification::SUB_UNSUPPORTED_QOS_VALUE
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

サブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、サブスクリプションのQoSを設定します。サブスクライバがリクエストしているサービス品質のプロパティ設定をカプセル化する名前/値ペアのシーケンスを入力パラメータとして使用します。

QoSには、サブスクリプションのタイプとサブスクリプションの名前の2つの構成要素があります。サブスクリプションのタイプは、名前/値のペアを構成して設定され、名前はTobj_Notification::SUBSCRIPTION_TYPE、値はTobj_Notification::PERSISTENT_SUBSCRIPTIONまたはTobj_Notification::TRANSIENT_SUBSCRIPTIONのいずれかになります。使用方法の詳細は、「サービスの品質」を参照してください。

サブスクリプションの名前は、名前/値のペアを構成して設定され、名前はTobj_Notification::SUBSCRIPTION_NAME、値はユーザー定義の文字列です。

このパラメータの詳細は、「サブスクリプションの作成時に使用するパラメータ」を参照してください。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

CosNotification::QoSProperties qos;
qos.length(2);
qos[0].name =
CORBA::string_dup(Tobj_Notification::SUBSCRIPTION_NAME);
qos[0].value <<= “MySubsription”;
qos[1].name =
CORBA::string_dup(Tobj_Notification::SUBSCRIPTION_TYPE);
qos[1].value <<=
Tobj_Notification::TRANSIENT_SUBSCRIPTION;
subscription->set_qos(qos);

 


CosNotifyChannelAdmin::StructuredProxyPushSupplier::add_filter

形式

サブスクライバのコールバック・オブジェクトにフィルタ・オブジェクトを設定します。

OMG IDL

add_filter(
in Filter new_filter
);

例外

CORBA::IMP_LIMIT

次のいずれかの問題を示します。 Tobj_Notification::SUB_MULTIPLE_CALLS_TO_SET_FILTER Tobj_Notification::SUB_ADD_FILTER_AFTER_CONNECT Tobj_Notification::SUB_NIL_FILTER_REF Tobj_Notification::SUB_NO_CUSTOM_FILTERS

CORBA::OBJECT_NOT_EXIST

サブスクリプションが存在しないことを示します。
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

サブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、サブスクライバのコールバック・オブジェクトにフィルタ・オブジェクトを設定します。このオペレーションを使用するアプリケーションが停止して再起動される場合は、filter_idを永続ストレージに書き込む必要があります。

注意: このオペレーションは、(1)サブスクライバのコールバック・オブジェクトが接続された後に呼び出したり(前述のconnect_structured_push_consumerを参照)、(2)複数回呼び出すことはできず、(3)呼び出す場合は、フィルタ制約式がフィルタに存在している必要があります(CosNotifyFilter::Filter add_constraintsを参照)。
注意: 追加できるのは、イベント・チャネルのデフォルトのファクトリで作成されるフィルタのみです。

戻り値

filter_idを戻します

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

CosNotifyFilter::FilterID filter_id =
subscription->add_filter(filter.in());

 


CosNotifyChannelAdmin::StructuredProxyPushSupplier::get_filter

形式

サブスクライバのコールバック・オブジェクトに現在関連付けられているフィルタのオブジェクト参照を取得します。

OMG IDL

Filter get_filter( in FilterID filter )
raises ( FilterNotFound);

例外

CosNotifyChannelAdmin::FilterNotFound

フィルタが見つからなかったことを示します。

説明

再起動可能なサブスクライバでアンサブスクライブする場合に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、サブスクライバのコールバック・オブジェクトに現在関連付けられているフィルタのオブジェクト参照を取得します。渡されるFilterIDは、サブスクライバのStructuredProxyPushSupplierオブジェクトで有効になっている必要があります。イベント・チャネルに関連付けられているプロキシ・オブジェクトでFilterIDが有効でないと、FilterNotFound例外がスローされます。このオペレーションは、停止して再起動するサブスクライバでのみ使用されます。

制限

このオペレーションには、使用方法に関して次の制約とガイドラインが適用されます。

    1. このオペレーションから戻されるフィルタのオブジェクト参照は、比較操作に使用できません。
    2. このオペレーションから戻されるフィルタのオブジェクト参照はCosNotifyFilter::Filter::destroyオペレーションで使用できますが、変更したりプロキシ・オブジェクトに追加できないため、ほとんど使用されません。

戻り値

サブスクライバのコールバック・オブジェクトに現在関連付けられているフィルタのオブジェクト参照を戻します。

サンプル

C++サンプル・コード:

CosNotify::Filter_var filter = 
subscription->get_filter( filter_id() );

 


CosNotifyChannelAdmin::StructuredProxyPushSupplier::
disconnect_structured_push_supplier

形式

Used to unsubscribe.

OMG IDL

void disconnect_structured_push_supplier();

例外

CORBA::OBJECT_NOT_EXIST

切断するサブスクリプションが存在しないことを示します。
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

アンサブスクライブ時にサブスクライバ・アプリケーションで使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、通知サービスサブスクライバのコールバック・オブジェクト間の接続を終了します。

注意: このオペレーションでは、イベントの配信を即座に停止することはありません。このオペレーションからの復帰後も、サブスクライバでは一定の時間は継続してイベントを受信できます。

サンプル

C++サンプル・コード:

subscription->disconnect_structured_push_supplier();

 


CosNotifyChannelAdmin::StructuredProxyPushSupplier::MyType

形式

Always returns CosNotifyChannelAdmin::PUSH_STRUCTURED proxy.

OMG IDL

readonly attribute ProxyType MyType

説明

CosNotifyChannelAdmin::PUSH_STRUCTUREDプロキシを常に戻します。

CosNotifyChannelAdmin::StructuredProxyPushConsumerクラス

このクラスは、イベント・ポスト元アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyChannelAdmin
{
interface StructuredProxyPushConsumer :
ProxyConsumer,
CosNotifyComm::StructuredPushConsumer {
    void connect_structured_push_supplier (
in CosNotifyComm::StructuredPushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);
// The following operations are inherited.
readonly attribute MyType;
void push_structured_event(
in CosNotification::StructuredEvent notification )
raises( CosEventComm::Disconnected );
void disconnect_structured_push_consumer();
};
}; \\StructuredProxyPushConsumer

 


CosNotifyChannelAdmin::StructuredProxyPushConsumer::
connect_structured_push_supplier

形式

Prepares the Notification Service to receive an event.

OMG IDL

void connect_structured_push_supplier (
in CosNotifyComm::StructuredPushSupplier push_supplier)
raises(CosEventChannelAdmin::AlreadyConnected);

例外

CosEventChannelAdmin::AlreadyConnected

発生することはありません。

説明

イベントのポスト時にポスト元アプリケーションで使用されます。イベントを受信できるように通知サービスを準備するには、このオペレーションを呼び出す必要があり、このオペレーションを使用する場合は、NILを渡す必要があります。使用順序は次のとおりです。

  1. プロキシを作成します。
  2. このオペレーションを使用して、通知サービスに接続し、NILを渡します。
  3. イベントをポストします。
  4. ポスト元プログラムを終了する前に、接続を終了します。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベントの作成とポスト」を参照してください。

C++サンプル・コード:

proxy_push_consumer->connect_structured_push_supplier(
CosNotifyComm::StructuredPushSupplier::_nil()
);

 


CosNotifyChannelAdmin::StructuredProxyPushConsumer::
push_structured_event

形式

イベント・チャネルにイベントをポストします。

OMG IDL

void push_structured_event(
in CosNotification::StructuredEvent notification )
raises( CosEventComm::Disconnected );

例外

CosEventComm::Disconnected

発生することはありません。

CORBA::IMP_LIMIT

次のいずれかの問題を示します。 Tobj_Events::POST_UNSUPPORTED_VALUE_IN_ANY Tobj_Events::POST_UNSUPPORTED_PRIORITY_VALUE Tobj_Events::POST_DOMAIN_CONTAINS_SEPARATOR Tobj_Events::POST_TYPE_CONTAINS_SEPARATOR Tobj_Events::POST_SYSTEM_EVENTS_UNSUPPORTED Tobj_Events::POST_EMPTY_DOMAIN Tobj_Events::POST_EMPTY_TYPE Tobj_Events::POST_DOMAIN_AND_TYPE_TOO_LONG
注意: 例外および対応するマイナー・コードの詳細は、「例外のマイナー・コード」を参照してください。

説明

イベントのポスト時に使用されます。このオペレーションはポスト元アプリケーションで使用され、イベント・チャネルにイベントをポストします。

注意: このオペレーションは、標準のCORBA定義とは次の点で異なります。

a. イベントの変数ヘッダー・セクションの優先度(指定される場合)は、範囲が1 - 100のshort値であることが必要です。

b. フィルタ処理可能なデータによるイベントのフィルタ処理(標準定義ではドメインと型のみのフィルタ処理)が必要な場合、またはイベントがOracle Tuxedoサブスクライバで受信される場合、追加の制約が適用されます。「構造化イベントのフィールド、型、およびフィルタ」および「Oracle Tuxedoアプリケーションとの相互運用性」を参照してください。
注意: このオペレーションには、トランザクションのコンテキストで使用される際のトランザクション動作があります。詳細は、「トランザクションの使用」を参照してください。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベントの作成とポスト」を参照してください。

C++サンプル・コード:

proxy_push_consumer->push_structured_event(notification);

 


CosNotifyChannelAdmin::StructuredProxyPushConsumer::
disconnect_structured_push_consumer

形式

Stops posting events.

OMG IDL

void disconnect_structured_push_consumer();

説明

イベントのポスト時に使用されます。このオペレーションはポスト元アプリケーションで使用され、イベントのポストを停止します。入力パラメータは不要で、値は戻されません。次の順序で使用することをお薦めします。

  1. プロキシを作成します。
  2. ポスト元アプリケーションの実行ごとに接続および切断します。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベントの作成とポスト」を参照してください。

C++サンプル・コード:

proxy_push_consumer->disconnect_structured_push_consumer();

 


CosNotifyChannelAdmin::StructuredProxyPushConsumer::MyType

形式

Always returns CosNotifyChannelAmdmin::PUSH_STRUCTURED proxy.

OMG IDL

readonly attribute ProxyType MyType

説明

CosNotifyChannelAmdmin::PUSH_STRUCTUREDプロキシを常に戻します。

CosNotifyChannelAdmin::ConsumerAdminクラス

このクラスは、イベント・サブスクライバ・アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyChannelAdmin
{
interface ConsumerAdmin :
       CosNotification::QoSAdmin,
CosNotifyComm::NotifySubscribe,
CosNotifyFilter::FilterAdmin,
CosEventChannelAdmin::ConsumerAdmin {
    ProxySupplier obtain_notification_push_supplier (
in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded )
    ProxySupplier get_proxy_supplier (
in ProxyID proxy_id )
raises ( ProxyNotFound );
  }; 
}; //
CosNotifyChannelAdmin

 


CosNotifyChannelAdmin::ConsumerAdmin::
obtain_notification_push_supplier

形式

Creates proxy push supplier objects.

OMG IDL

ProxySupplier obtain_notification_push_supplier (
in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded )

例外

CosNotifyChannelAdmin::AdminLimitExceeded

発生することはありません。

CORBA::IMP_LIMIT

次の問題を示します。 Tobj_Notification::SUB_UNSUPPORTED_CLIENT_TYPE

説明

サブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、プロキシ・プッシュ・サプライヤ・オブジェクトを作成します。サポートされるのは構造化イベントです(ANY_EVENTSEQUENCE_EVENT ClientTypesはサポートされません)。このため、ClientType入力パラメータはCosNotifyComm::STRUCTURED_EVENTに設定する必要があります。サブスクライバを停止して再起動する場合で、サブスクリプションがプログラムの複数の実行にまたがって存続する場合は、このオペレーションによって戻されるProxyIDを永続的に保存する必要があります。サブスクライバでは、プロキシ・サプライヤをCosNotifyChannelAdmin::StructuredProxyPushSupplierにナロー変換する必要があります。必要なすべてのオペレーションは、5分以内に完了する必要があります。

注意: 停止と再起動を1回のみ実行する通知サービス・アプリケーションでは、proxy_idを使用することで、サブスクリプションが自動的に取り消されたか、またはシステム管理者によって取り消されたかを確認できます。

戻り値

このオペレーションでは、プロキシのオブジェクト参照が戻されます。新しいproxy_idproxy_id出力パラメータで戻されます。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「サブスクリプションの作成」を参照してください。

C++サンプル・コード:

CosNotifyChannelAdmin::ProxySupplier_var generic_proxy =
consumer_admin->obtain_notification_push_supplier(
CosNotifyChannelAdmin::STRUCTURED_EVENT,
proxy_id
);

CosNotifyChannelAdmin::StructuredProxyPushSupplier_var proxy =
CosNotifyChannelAdmin::StructuredProxyPushSupplier::_narrow(
generic_proxy.in ()
);

 


CosNotifyChannelAdmin::ConsumerAdmin::get_proxy_supplier

形式

コンシューマ管理オブジェクトのobtain_notification_push_supplierオペレーションを使用して作成されるプロキシ・プッシュ・サプライヤ・オブジェクトを戻します。

OMG IDL

    ProxySupplier get_proxy_supplier (
in ProxyID proxy_id )
raises ( ProxyNotFound );

例外

CosNotifyChannelAdmin::ProxyNotFound

ProxyIDが見つからなかったことを示します。

説明

アンサブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、コンシューマ管理オブジェクトのobtain_notification_push_supplierオペレーションを使用して作成されるプロキシ・プッシュ・サプライヤ・オブジェクトを戻します。ProxyID入力パラメータでは、プロキシ・オブジェクトを一意に識別します。呼出し側では、一時的なサブスクリプションの配信エラーまたはntsadmin管理コマンドによってプロキシ・オブジェクトが破棄される可能性があることを認識している必要があります。プロキシ・オブジェクトが破棄されると、このオブジェクトに関連付けられているProxyIDが無効になります。ProxyIDが無効になると、ProxyNotFound例外が発生します。サブスクライバでは、プロキシ・サプライヤをCosNotifyChannelAdmin::StructuredProxyPushSupplierにナロー変換する必要があります。

戻り値

既存のプロキシのオブジェクト参照を戻します。

サンプル

C++サンプル・コード:

CosNotifyChannelAdmin::ProxySupplier_var generic_proxy =
m_consumer_admin->get_proxy_supplier(
m_subscription_info.news_proxy_id()
);
CosNotifyChannelAdmin::StructuredProxyPushSupplier_var proxy =
CosNotifyChannelAdmin::StructuredProxyPushSupplier::_narrow(
generic_proxy.in()
);

CosNotifyChannelAdmin::SupplierAdminクラス

このクラスは、イベント・ポスト元アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyChannelAdmin
{
interface SupplierAdmin :
CosNotification::QoSAdmin,
CosNotifyComm::NotifyPublish,
CosNotifyFilter::FilterAdmin,
CosEventChannelAdmin::SupplierAdmin {
     ProxyConsumer obtain_notification_push_consumer (
in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );
};
}; //
SupplierAdmin

 


CosNotifyChannelAdmin::SupplierAdmin::
obtain_notification_push_consumer

形式

Creates proxy push consumer objects.

OMG IDL

ProxyConsumer obtain_notification_push_consumer (
in ClientType ctype,
out ProxyID proxy_id)
raises ( AdminLimitExceeded );

例外

CosNotifyChannelAdmin::AdminLimitExceeded

発生することはありません。

CORBA::IMP_LIMIT

次の問題を示します。 Tobj_Notification::SUB_UNSUPPORTED_CLIENT_TYPE

説明

イベントのポスト時に使用されます。このオペレーションはポスト元アプリケーションで使用され、プロキシ・プッシュ・コンシューマ・オブジェクトを作成します。ClientType"CosNotifyChannelAdmin::STRUCTURED_EVENT"に設定する必要があります。戻されるProxyIDは無視してください。プロキシ・コンシューマでは、プロキシ・サプライヤをCosNotifyChannelAdmin::StructuredProxyPushConsumerにナロー変換する必要があります。

注意: 停止と再起動を1回のみ実行する通知サービス・アプリケーションでは、proxy_idを使用することで、サブスクリプションが自動的に取り消されたか、またはシステム管理者によって取り消されたかを確認できます。

戻り値

このオペレーションでは、プロキシのオブジェクト参照が戻されます。新しいproxy_idproxy_id出力パラメータで戻されます。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベントの作成とポスト」を参照してください。

C++サンプル・コード:

CosNotifyChannelAdmin::ProxyConsumer_var generic_proxy_consumer =
supplier_admin->obtain_notification_push_consumer(
CosNotifyChannelAdmin::STRUCTURED_EVENT,
proxy_id
);
CosNotifyChannelAdmin::StructuredProxyPushConsumer_var
proxy_push_consumer =
CosNotifyChannelAdmin::StructuredProxyPushConsumer::_narrow(
generic_proxy_consumer
);

CosNotifyChannelAdmin::EventChannelクラス

このクラスは、イベント・ポスト元アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyChannelAdmin
{
interface EventChannel :
CosNotification::QoSAdmin,
CosNotification::AdminPropertiesAdmin,
CosEventChannelAdmin::EventChannel {
     readonly attribute ConsumerAdmin default_consumer_admin;
readonly attribute
SupplierAdmin default_supplier_admin;
readonly attribute CosNotifyFilter::FilterFactory
default_filter_factory;
};
}; //
CosNotifyChannelAdmin

 


CosNotifyChannelAdmin::EventChannel::
ConsumerAdmin default_consumer_admin

形式

ConsumerAdminオブジェクトを取得します。

OMG IDL

readonly attribute ConsumerAdmin default_consumer_admin;

説明

サブスクライブおよびアンサブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、ConsumerAdminオブジェクトを取得します。

戻り値

ConsumerAdminオブジェクトのオブジェクト参照を戻します。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベント・チャネル、ConsumerAdminオブジェクト、およびフィルタ・ファクトリ・オブジェクトの取得」を参照してください。

C++サンプル・コード:

channel->default_consumer_admin();

 


CosNotifyChannelAdmin::EventChannel::
ConsumerAdmin default_supplier_admin

形式

SupplierAdminオブジェクトを取得します。

OMG IDL

readonly attribute SupplierAdmin default_supplier_admin;

説明

イベントのポスト時に使用されます。このオペレーションはイベント・ポスト元アプリケーションで使用され、SupplierAdminオブジェクトを取得します。

戻り値

SupplierAdminのオブジェクト参照。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベントの作成とポスト」を参照してください。

C++サンプル・コード:

channel->default_supplier_admin();

 


CosNotifyChannelAdmin::EventChannel::default_filter_factory

形式

デフォルトのFilterFactoryオブジェクトを取得します。

OMG IDL

readonly attribute CosNotifyFilter::FilterFactory
default_filter_factory;

説明

サブスクライブ時に使用されます。このオペレーションはサブスクライバ・アプリケーションで使用され、デフォルトのFilterFactoryオブジェクトを取得します。

戻り値

デフォルトのFilterFactoryオブジェクト参照

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベント・チャネル、ConsumerAdminオブジェクト、およびフィルタ・ファクトリ・オブジェクトの取得」を参照してください。

C++サンプル・コード:

channel->default_filter_factory();

CosNotifyChannelAdmin::EventChannelFactoryクラス

このクラスは、イベント・ポスト元アプリケーションで使用されます。このクラスのOMG IDLは次のとおりです。

Module CosNotifyChannelAdmin
{
interface EventChannelFactory {
EventChannel
get_event_channel ( in ChannelID id )
raises (ChannelNotFound);
};
}; //
CosNotifyChannelAdmin

 


CosNotifyChannelAdmin::EventChannelFactory::get_event_channel

形式

Gets the EventChannel object.

OMG IDL

EventChannel get_event_channel ( in ChannelID id )
raises (ChannelNotFound);

例外

CosNotifyChannelAdmin::ChannelNotFound

チャネルが見つからないことを示します。

説明

イベントのサブスクライブ、サブスクライブ解除およびポスト時に使用されます。このオペレーションはアプリケーションで使用され、EventChannelオブジェクトを取得します。サブスクライブ時には、フィルタ・ファクトリ・オブジェクトとConsumerAdminオブジェクトを取得するためにEventChannelオブジェクトが使用されます。サブスクライブ解除時には、ConsumerAdminオブジェクトを取得するためにEventChannelオブジェクトが使用されます。イベントのポスト時には、SupplierAdminオブジェクトを取得するためにEventChannelオブジェクトが使用されます。渡されるChannelIDパラメータは、Tobj_Notification::DEFAULT_CHANNELに設定される必要があります。それ以外の場合、ChannelNotFound例外が発生します。

戻り値

デフォルトのイベント・チャネルのオブジェクト参照を戻します。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「イベント・チャネルの取得」および「イベント・チャネル、ConsumerAdminオブジェクト、およびフィルタ・ファクトリ・オブジェクトの取得」を参照してください。

C++サンプル・コード:

channel_factory->get_event_channel(
Tobj_Notification::DEFAULT_CHANNEL );

CosNotifyComm::StructuredPushConsumerインタフェース

このインタフェースは、イベントの配信を目的としてイベント・サブスクライバ・アプリケーションで使用されます。このインタフェースで通知サービスを呼び出してイベントをサブスクライバに配信できるように実装する必要があります。実装する必要のあるメソッドは3つあります。

このクラスのOMG IDLは次のとおりです。

Module CosNotifyComm
{
interface StructuredPushConsumer : NotifyPublish {
    void push_structured_event(
in CosNotification::StructuredEvent
event)
raises(CosEventComm::Disconnected);
void disconnect_structured_push_consumer:
//The following operations are inherited.
void offer_change(
in CosNotification::EventTypeSeq added,
in CosNotification::EventTypeSeq removed )
raises ( InvalidEventType );
};
}; //
CosNotifyComm

 


CosNotifyComm::StructuredPushConsumer::push_structured_event

形式

構造化イベントを配信します。

OMG IDL

void push_structured_event(
in CosNotification::StructuredEvent
event)
raises(CosEventComm::Disconnected);

例外

CosEventComm::Disconnected

この例外をサブスクライバで発生させないようにしてください。

説明

サブスクライブ時に使用されます。このオペレーションはサブスクライバのコールバック・オブジェクトで実装され、構造化イベントが配信されるたびに通知サービスによって呼び出されます。このオペレーションには、入力パラメータが1つ(構造化イベント)があります。

注意: このオペレーションはトランザクションでは呼び出されません。また、このオペレーションが復帰するまで、通知サービスでは他のサブスクライバにイベントの配信が開始されない場合があるため、このオペレーションが呼び出されて、もすぐに復帰する必要があります。

サンプル

注意: ここで紹介するサンプル・コードは全体の一部です。完全なサンプル・コードについては、「CosNotifyComm::StructuredPushConsumerインタフェースの実装」を参照してください。

C++サンプル・コード:

virtual void push_structured_event(
const CosNotification::StructuredEvent& notification );
{
// Process the event.
}

 


CosNotifyComm::StructuredPushConsumer::
disconnect_structured_push_consumer

形式

呼び出されることはありません。

OMG IDL

void disconnect_structured_push_consumer;

説明

このオペレーションが呼び出されることはありません。サブスクライバ・アプリケーションでは、このオペレーションのスタブ・アウト・バージョンを用意する必要があります。

サンプル

C++サンプル・コード:

virtual void push_structured_event(
const CosNotification::StructuredEvent& notification );
{
throw new CORBA::NO_IMPLEMENT();
}

 


CosNotifyComm::StructuredPushConsumer::Offer_change

形式

呼び出されることはありません。

OMG IDL

 void offer_change(
in CosNotification::EventTypeSeq added,
in CosNotification::EventTypeSeq removed )
raises ( InvalidEventType );

例外

CosNotifyComm::InvalidEventType

この例外をサブスクライバで発生させないようにしてください。

説明

このオペレーションが呼び出されることはありません。サブスクライバ・アプリケーションでは、このオペレーションのスタブ・アウト・バージョンを用意する必要があります。

サンプル

C++サンプル・コード:

virtual void offer_change(
const CosNotification::EventTypeSeq& added,
const CosNotification::EventTypeSeq& removed )
{
throw CORBA::NO_IMPLEMENT();
}

例外のマイナー・コード

この項では、通知サービスの例外シンボルおよびマイナー・コードについて説明します。マイナー・コードはTobj_Events.idlファイルおよびTobj_Notification.idlファイルにあります。これらのファイルは、tuxdir\includeディレクトリ(Microsoft Windowsシステムの場合)およびtuxdir/include ディレクトリ(UNIXシステムの場合)にあります。

表2-4および表2-5は、Tobj_Events例外およびTobj_Notification例外のそれぞれの例外シンボルおよび対応するマイナー・コードを示しています。CORBAシステム・イベントには、マイナー・コードがあり、それらのマイナー・コード・フィールドもこれらの表で定義されています。

注意: 表の中の例外シンボルは、高いレベルの例外(CORBA::IMP_LIMITCORBA::CORBA::BAD_PARAMCORBA::BAD_INV_ORDERCORBA::INV_OBHJREFおよびCORBA::OBJECT_NOT_EXIST)に基づいて構成されており、アルファベット順にリストされています。

表2-4 Tobj_Events例外のマイナー・コード
例外シンボル
用語の定義
マイナー・コード(16進数)
CORBA::IMP_LIMIT例外
Tobj_Events::
POST_DOMAIN_AND_TYPE_TOO_LONG
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、組み合せた長さが31文字を超るドメイン名と型名が指定されました。
5455580D
Tobj_Events::
POST_DOMAIN_CONTAINS_SEPARATOR
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、"."文字を含むドメイン名が指定されました。
54555802
Tobj_Events::POST_EMPTY_DOMAIN
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、空のドメイン名が指定されました。
5455580B
Tobj_Events::POST_EMPTY_TYPE
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、空の型名が指定されました。
5455580C
Tobj_Events::
POST_SYSTEM_EVENTS_UNSUPPORTED
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、Oracle Tuxedoシステム・イベント(ドメイン名が"TMEVT"で、型名が"."の文字で始まる)のポストが試行されました。
54555804
Tobj_Events::
POST_TYPE_CONTAINS_SEPARATOR
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、"."文字を含む型名が指定されました。
54555803
Tobj_Events::
POST_UNSUPPORTED_PRIORITY_VALUE
この例外の発生元:
  • Tobj_SimpleEvents::
    Channel::push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、変数ヘッダーに優先度フィールドが追加されました。しかし、フィールドの値が1 - 100の範囲の"short"に設定されていません。
54555801
Tobj_Events::
POST_UNSUPPORTED_VALUE_IN_ANY
この例外の発生元:
  • Tobj_SimpleEvents::
    Channel::push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
イベントのポスト時に、サポートされていない型(構造、ユニオン、シーケンスなど)を構造化イベント・フィールドのanysの1つに挿入されました。サポートされていない型は、変数ヘッダーの値フィールド、フィルタ処理可能なデータの値フィールドまたはremainder_of_bodyフィールドにあります。
54555800
Tobj_Events::
SUB_DOMAIN_AND_TYPE_TOO_LONG
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    connect_structured_push_consumer
サブスクライブ時に、組み合せた長さが255文字を超えるドメイン名と型名が指定されました。
54555809
Tobj_Events::
SUB_DOMAIN_BEGINS_WITH_SYSEV
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyFilter::Filter::
    add_constraints
サブスクライブ時に、"."文字で始まるドメイン名が指定されました。
54555805
Tobj_Events::SUB_EMPTY_DOMAIN
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyFilter::Filter::
    add_constraints
サブスクライブ時に、空のドメイン名が指定されました。
54555807
Tobj_Events::SUB_EMPTY_TYPE
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyFilter::Filter::
    add_constraints
サブスクライブ時に、空の型名が指定されました。
54555808
Tobj_Events::SUB_FILTER_TOO_LONG
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyFilter::Filter::
    add_constraints
255文字を超えるデータ・フィルタ式が指定されました。
5455580A
Tobj_Events::SUB_NAME_TO_LONG
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    push_structured_event
  • CosNotifyChannelAdmin::
    StructuredProxyPushConsumer::
    push_structured_event
サブスクライブ時に、127文字を超えるサブスクリプション名が指定されました。
5455580E
Tobj_Events::
TRANSIENT_ONLY_CONFIGURATION
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    connect_structured_push_consumer
永続的なサブスクリプションの作成を試みましたが、一時的なサブスクリプションのみをサポートするように構成されました。
54555806
CORBA::BAD_PARAM 例外
   
Tobj_Events::INVALID_CHANNEL_ID
この例外の発生元:
  • Tobj_SimpleEvents::ChannelFactory::find_channel
シンプル・イベントAPIを使用してチャネルを検索するときに、無効なチャネルID(Tobj_SimpleEvents::DEFAULT_CHANNELでないチャネルID)が指定されました。
54555813
Tobj_Events::
INVALID_SUBSCRIPTION_ID
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    unsubscribe
  • CosNotifyChannelAdmin::
    ConsumerAdmin::get_proxy_
    supplier
  • Tobj_SimpleEvents::
    Channel::exists
シンプル・イベントAPIを使用してアンサブスクライブするときに、無効なサブスクリプションID(存在しないサブスクリプションIDまたはCosNotificationサブスクリプションID)が指定されました。
CosNotificationサービスAPIを使用してサブスクリプションを検索するとき、無効なサブスクリプションID(存在しないサブスクリプションIDまたはシンプル・イベントAPIのサブスクリプションID)が指定されました。
Oracleシンプル・イベントAPIを使用してexistsオペレーションを呼び出すときに、CosNotification subscription_idが渡されました。
54555812
Tobj_Events::
SUB_INVALID_FILTER_EXPRESSION
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyFilter::Filter::
    add_constraints
サブスクライブ時に、無効なデータ・フィルタ式が指定されました。式に構文エラーがあるか、式のフィールド名の1つがFMLフィールドとして定義されていません。
データのフィルタ処理の対象となるすべてのフィールドが格納されているFMLフィールド表を正しく作成しているかを確認し、フィールド表ファイルを検索できるようにUBBCONFIGファイルが正しく設定されているかを確認してください。
54555810
Tobj_Events::
SUB_UNSUPPORTED_QOS_VALUE
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    set_qos
54555811
サブスクライブ時に、無効なサブスクリプションのサービス品質が指定されました。
シンプル・イベントAPIの場合、指定したサービスの品質が次の要件のいずれかを満たしていません。
  • シーケンスの長さは、1である必要があります。
  • 名前は、Tobj_SimpleEvents::
    SUBSCRIPTION_TYPE
    である必要があります。
  • 値は、Tobj_SimpleEvents::
    TRANSIENT_SUBSCRIPTION
    またはTobj_SimpleEvents::
    PERSISTENT_SUBSCRIPTION
    のいずれかである必要があります。
CosNotificationサービスAPIの場合、指定したサービスの品質が次の要件のいずれかを満たしていません。
  • サービスの品質には、名前がTobj_Notification::
    SUBSCRIPTION_TYPE
    で、値がTobj_Notification::
    TRANSIENT_SUBSCRIPTION
    またはTobj_Notification::
    PERSISTENT_SUBSCRIPTION
    の名前/値のペアが含まれている必要があります。
  • サービスの品質には、名前がTobj_Notification::SUBSCRIPTION_NAMEで、値がサブスクリプションの管理者名が含まれる文字列の名前/値のペアでもかまいません。
CORBA::INV_OBHJREF
Tobj_Events::
SUB_NIL_CALLBACK_REF
この例外の発生元:
  • Tobj_SimpleEvents::Channel::
    subscribe
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    connect_structured_push_consumer
サブスクライブ時に、イベントを受信するコールバック・オブジェクトのNILオブジェクト参照が指定されました。
54555830

表2-5 Tobj_Notification例外のマイナー・コード
例外シンボル
用語の定義
マイナー・コード(16進数)
CORBA::IMP_LIMIT例外
   
Tobj_Notification::
SUB_ADD_CONS_ON_TIMED_OUT_FILTER
この例外の発生元:
  • CosNotifyFilter::Filter::
    add_constraints
フィルタの作成後、CosNotificationサブスクライバがそのフィルタでadd_constraintsを呼び出すのに、5分以上待機しています。つまり、フィルタが破棄されており(タイムアウト)、サブスクライバで新しいフィルタを作成する必要があります。
54555858
Tobj_Notification::
SUB_ADD_CONS_TO_ADDED_FILTER
この例外の発生元:
  • CosNotifyFilter::Filter::
    add_constraints
プロキシにずでに追加されているフィルタで、CosNotificationサブスクライバがadd_constraintsを呼び出しました。
5455585E
Tobj_Notification::
SUB_ADDED_TIMED_OUT_FILTER
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    add_filter
フィルタを作成して、add_constraintsを呼び出した後、CosNotificationサブスクライバがadd_filterを呼び出してフィルタをプロキシに追加するのに、5分以上待機しています。つまり、フィルタが破棄されており(タイムアウト)、サブスクリプションで新しいフィルタを作成する必要があります。
5455585D
Tobj_Notification::
SUB_ADD_FILTER_AFTER_CONNECT
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    add_filter
プロキシに接続後、CosNotificationサブスクライバがadd_filterを呼び出しました。
54555852
Tobj_Notification::
SUB_CANT_SET_QOS_AFTER_CONNECT
この例外の発生元:
  • CosNotifyChannelAdmin::StructuredProxyPushSupplier::set_qos
プロキシに接続後、CosNotificationサブスクライバがset_qosを呼び出しました。
54555856
Tobj_Notification::
SUB_MULTIPLE_CALLS_TO_ADD_CONS
この例外の発生元:
  • CosNotifyFilter::Filter::
    add_constraints
CosNotificationサブスクライバがフィルタでadd_constraintsを複数回呼び出しました。
54555859
Tobj_Notification::
SUB_MULTIPLE_CALLS_TO_SET_FILTER
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    add_filter
CosNotificationサブスクライバがプロキシでadd_filterを複数回呼び出しました。
54555851
Tobj_Notification::
SUB_MULTIPLE_CALLS_TO_SET_QOS
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    set_qos
CosNotificationサブスクライバがプロキシでset_qosを複数回呼び出しました。
54555855
Tobj_Notification::
SUB_MULTIPLE_CONSTRAINTS_IN_LIST
この例外の発生元:
  • CosNotifyFilter::Filter::
    add_constraints
CosNotificationサブスクライバがフィルタでadd_constraintsを呼び出したときに、複数の項目を含む制約のリストをサブスクライバが渡しました(サブスクライバが1つのデータ・フィルタではなく、データ・フィルタのリストで送信しようとしました)。
5455585A
Tobj_Notification::
SUB_MULTIPLE_TYPES_IN_CONSTRAINT
この例外の発生元:
  • CosNotifyFilter::Filter::
    add_constraints
CosNotificationサブスクライバがフィルタでadd_constraintsを呼び出したときに、複数のドメイン/型のセットを含む制約のリストをサブスクライバが渡しました(サブスクライバが1つのイベント型ではなく、目的のイベント型のリストで送信しようとしました)。
5455585B
Tobj_Notification::
SUB_NIL_FILTER_REF
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    add_filter
CosNotificationサブスクライバがNILフィルタのオブジェクト参照をadd_filterに渡しました。
54555853
Tobj_Notification::
SUB_NO_CUSTOM_FILTERS
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    add_filter
デフォルトのフィルタ・ファクトリで作成されていないフィルタ・オブジェクトをCosNotificationサブスクライバがadd_filterに渡しました。たとえば、一種のカスタム・フィルタ処理を実行するために、CosNotificationサブスクライバがCosNotifyFilter::Filterインタフェースを実装し、それらのフィルタ・オブジェクトの1つをadd_filterに渡しました。
54555854
Tobj_Notification::
SUB_SET_FILTER_NOT_CALLED
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    connect_structured_push_
    consumer
プロキシに接続する前に、CosNotificationサブスクライバがプロキシに対するadd_filterを呼び出しませんでした。
54555850
Tobj_Notification::
SUB_SET_QOS_NOT_CALLED
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    connect_structured_push_
    consumer
プロキシに接続する前に、CosNotificationサブスクライバがプロキシに対するadd_filterを呼び出しませんでした。
54555857
Tobj_Notification::
SUB_SYSTEM_EVENTS_UNSUPPORTED
この例外の発生元:
  • CosNotifyChannelAdmin::
    StructuredProxyPushSupplier::
    set_qos
CosNotificationサブスクライバが"TMEVT"のドメイン名と"."で始まる型名を渡しました(CosNotificationサブスクライバがTuxedoシステム・イベントをサブスクライブしようとしています)。これはサポートされていません。シンプル・イベントAPIのみでサポートされています。
5455585C
Tobj_Notification::
SUB_UNSUPPORTED_CLIENT_TYPE
この例外の発生元:
  • ConsumerAdmin::
    obtain_notification_push_
    supplier
  • SupplierAdmin::
    obtain_notification_push_
    consumer
プロキシの作成時に、CosNotificationサブスクライバまたはポスト元がCosNotifyChannelAdmin::STRUCTURED_EVENT以外のクライアント型を渡しました。
5455585F
CORBA::OBJECT_NOT_EXIST例外
Tobj_Notification::
SUBSCRIPTION_DOESNT_EXIST
この例外の発生元:
  • StructuredProxyPushSupplier::
    add_filter
  • StructuredProxyPushSupplier::
    set_qos
  • StructuredProxyPushSupplier::
    connect_structured_push_
    consumer
  • StructuredProxyPushSupplier::
    disconnect_structured_push_
    supplier

注意: ユーザーがプロキシを作成し、ntsadminユーティリティを使用してサブスクリプションを削除してから、プロキシでconnect_structured_push_
consumer
を呼び出すことができるため、connect_structured_push_consumerでこの例外が発生する場合があます。

すでに破棄されているプロキシのメソッドをCosNotificationサブスクライバが呼び出しました。プロキシは、次のいずれかの操作によって破棄されています。
  • CosNotificationサブスクライバがプロキシを切断した。
  • プロキシを作成してから接続するまでCosNotificationサブスクライバが5分以上待機している(サブスクリプションの完了に5分以上を要した)。
  • 管理者がntsadminユーティリティを使用してサブスクリプションを破棄した。
54555880


  先頭に戻る       前  次