Cosminexus V11 アプリケーションサーバ Cosminexus Reliable Messaging

解説・手引・文法・操作書

3021-3-J19-40

前書き

対象製品

マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」の前書きの対象製品の説明を参照してください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI，Cosminexus，DABroker，HiRDB，OpenTP1，TPBroker，uCosminexus，XDMは，株式会社 日立製作所の商標または登録商標です。

AIXは，世界の多くの国で登録されたInternational Business Machines Corporationの商標です。

Itaniumは，Intel Corporation またはその子会社の商標です。

Linuxは，Linus Torvalds氏の米国およびその他の国における登録商標です。

Microsoft，Windows，Windows Server は，マイクロソフト 企業グループの商標です。

Oracle(R)，Java及びMySQLは，Oracle，その子会社及び関連会社の米国及びその他の国における登録商標です。

その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

謝辞

Reliable Messagingは，経済産業省が2003年度から3年間実施した「ビジネスグリッドコンピューティングプロジェクト」の技術開発の成果を含みます。

発行

2023年 6月 3021-3-J19-40

著作権

All Rights Reserved. Copyright (C) 2020, 2023, Hitachi, Ltd.

変更内容

変更内容(3021-3-J19-40) uCosminexus Application Server 11-30，uCosminexus Client 11-30，uCosminexus Developer 11-30，uCosminexus Service Architect 11-30，uCosminexus Service Platform 11-30

追加・変更内容

変更個所

コマンドの-pオプションで，パスワードを指定した場合の注意事項を追加した。

8.3.1，8.3.16

単なる誤字・脱字などはお断りなく訂正しました。

はじめに

このマニュアルをお読みになる際の前提情報については，マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」のはじめにの説明を参照してください。

1　概要

Reliable Messagingはアプリケーションサーバシステムを基盤として，アプリケーションをメッセージの非同期通信によって連携させるメッセージングミドルウェアです。

Reliable Messagingでは，永続版リソースアダプタと非永続版リソースアダプタの2種類のリソースアダプタを提供します。

この章では，Reliable Messagingの概要，必要な前提製品，システムの形態，およびシステム構築・運用の流れとマニュアルの参照先について説明します。

1.1　マニュアルの説明

このマニュアルで使用している表記について説明します。

文法の記号

このマニュアルで使用する各種の記号を説明します。

属性表示記号

ユーザ指定値の範囲などを説明する記号です。

属性表示記号

意味

〜

この記号のあとにユーザ指定値の属性を示します。

《　》

ユーザが指定を省略したときの解釈値を示します。

＜　＞

ユーザ指定値の構文要素を示します。

((　))

ユーザ指定値の指定範囲を示します。

構文要素記号

ユーザ指定値の内容を説明する記号です。

構文要素記号

意味

＜英字＞

半角のアルファベット（A〜Z，a〜z）

＜数字＞

半角の数字（0〜9）

＜英数字＞

英字と数字

＜識別子＞

先頭が英字の英数字列と＿（アンダスコア）

＜文字列＞

任意の文字の配列（ただし，2バイト文字は除く）

文法記述記号

記述形式を説明する記号です。

文法記述記号

意味

〔　〕

この記号で囲まれている項目は省略してもよいことを示します。

（例）

〔-l 最大メッセージ長〕

-lオプションとそのオペランドを指定するか，何も指定しないことを示します。

{　}

この記号で囲まれている複数の項目のうちから一つを選択することを示します。

（例）

{local｜shr_receive}

localとshr_receiveのうち，どちらかを指定することを示します。

｜

（ストローク）

この記号で区切られた項目は選択できることを示します。

（例）

{local｜shr_receive}

localとshr_receiveのうち，どちらかを指定することを示します。

<　>

この記号で囲まれている項目はユーザの環境によって異なることを表します。

（例）

<HiRDBサーバのホスト名またはIPアドレス>

ユーザの環境で使用しているHiRDBサーバのホスト名またはIPアドレスを指定することを示します。

このマニュアルで使用するディレクトリ名

このマニュアルでは，原則としてWindowsの表記を使用しています。UNIXの場合は，環境変数の頭に「$」を付加し，ディレクトリセパレータを「/」で読み替えてください。読み替えの例を次の表に示します。

Windowsの場合

UNIXの場合

%HRMDIR%¥sql

$HRMDIR/sql

リソースアダプタの違いによる機能相違点の表記

このマニュアルの対象製品は，永続版リソースアダプタと非永続版リソースアダプタの2種類のリソースアダプタを提供します。リソースアダプタによって記述を書き分ける場合，次に示す表記を使用して，それぞれの説明にリソースアダプタの種別を明記しています。

表記

意味

永続版リソースアダプタの場合

永続版リソースアダプタに該当する表記です。

非永続版リソースアダプタの場合

非永続版リソースアダプタに該当する表記です。

1.2　Reliable Messagingの概要

Reliable Messagingは，アプリケーションサーバシステム上のアプリケーションがメッセージを使用して非同期に通信するためのミドルウェアです。メッセージ通信機能をアプリケーションに提供します。

送信側アプリケーションがメッセージを送信すると，メッセージはキューに登録されます。受信側アプリケーションがメッセージを受信すると，キューからメッセージが取り出されます。

こうして，キューを介してメッセージを送受信することによって，送信側と受信側のアプリケーションを同時に動作させる必要のない非同期通信ができます。

Reliable Messagingでは，永続版リソースアダプタと非永続版リソースアダプタを提供します。永続版リソースアダプタと非永続版リソースアダプタの概要について説明します。

1.2.1　永続版リソースアダプタの概要

永続版リソースアダプタでは，メッセージやキューの属性情報，システムステータスなどをDBで管理し永続化しています。永続化とは，不揮発性の記憶媒体にデータを保存し，変化しない状態にすることです。

永続版リソースアダプタの概要を次の図に示します。

図1‒1　永続版リソースアダプタの概要

永続版リソースアダプタには，次に示す特長があります。

高信頼のメッセージ管理

Reliable Messagingがメッセージを登録するキューは，DBのテーブル上に作成されます。DBにメッセージを永続化することで，メッセージの再現性を保持し，高信頼のメッセージ管理ができます。

高信頼なメッセージ通信

確実に1回の配送保証，または順序保証のQoS（通信品質）を，ユーザが通信相手ごとに選択できます。

JMSインタフェースの採用

Reliable MessagingはアプリケーションにJMSインタフェースを提供します。JMSインタフェースは，Javaでのメッセージング通信のためのAPIです。

インターネット経由のシステム連携

通信手段としてSOAPおよびHTTPを利用します。HTTPは幅広く利用されているプロトコルです。多くの企業のファイアウォールはHTTP（80番ポート）による内外の通信を許可しているので，ファイアウォールを介した接続が比較的容易に実現できます。また，SSLを使用すると，秘密性，完全性などのセキュリティ機能を実現できます。

WS-Reliabilityによる通信のサポート

オープンで高信頼な通信プロトコルであるWS-Reliability によって，Reliable Messaging間での通信や，WS-Reliabilityに準拠した他ベンダのシステムとの通信ができます。WS-Reliabilityは標準化団体OASISで標準化された仕様です。

DB Connector for Reliable Messagingとのコネクション共有

Reliable MessagingとDB Connector for Reliable Messagingが同じDBに接続する場合，Reliable MessagingとDB Connector for Reliable Messagingのコネクションを共有することによって，DBのコネクションの有効利用とトランザクションの1相コミット化による性能向上の両方を実現できます。

1.2.2　非永続版リソースアダプタの概要

非永続版リソースアダプタでは，キューなどのシステム情報をDBで管理しないで非永続化します。非永続化とは，揮発性のメモリだけにデータを保存して，処理を実施することです。

非永続版リソースアダプタの概要を次の図に示します。

図1‒2　非永続版リソースアダプタの概要

非永続版リソースアダプタには，次に示す特長があります。

DB接続の不要

キューなどのシステム情報をDBで管理しないため，DBとの接続が不要になります。その結果，レスポンス性能の向上だけでなく，システム導入・構築，運用の簡易化とコストダウンが期待できます。

JMSインタフェースの採用

永続版リソースアダプタの場合と同様に，非永続版リソースアダプタでもアプリケーションにJMSインタフェースを提供します。JMSインタフェースは，Javaでのメッセージング通信のためのAPIです。

注意事項

非永続版リソースアダプタの場合，使用できるキューはローカルキューだけです。

1.3　ソフトウェア構成

Reliable Messagingが動作するには，幾つかの前提製品が必要です。

Reliable Messagingを使用するシステムのソフトウェア構成について，永続版リソースアダプタの場合を図1-3に，非永続版リソースアダプタの場合を図1-4に示します。

図1‒3　永続版リソースアダプタを使用する場合のシステムのソフトウェア構成

図1‒4　非永続版リソースアダプタを使用する場合のシステムのソフトウェア構成

各要素について説明します。

Developer's Kit for Java

Application Serverが提供するJava 2 SDK, Standard Editionです。

詳細については，マニュアル「アプリケーションサーバ & BPM/ESB基盤 概説」を参照してください。

Component Container

Reliable Messagingおよびアプリケーションが動作するJ2EEサーバです。

Reliable Messagingはリソースアダプタとして動作します。一つのJ2EEサーバ上で複数のReliable Messagingを動作させることができます。

J2EEサーバについては，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。

アプリケーション

ユーザが業務に合わせて作成するアプリケーションです。アプリケーションサーバシステム上で動作するアプリケーションとして，Reliable Messagingが提供するJMSインタフェースを使用して作成します。

サーブレット，JSPまたはEJBとして作成します。

キュー

アプリケーションが送信したメッセージをReliable Messagingが登録するためのキューです。

永続版リソースアダプタの場合

ユーザは，Reliable Messagingが提供するコマンド（hrmmkqueコマンド）を使用してDBのテーブル上にキューを作成します。

自システムからのメッセージの登録と取り出しだけができるローカルキュー，相手システムとの通信に使用するための共用キューなどの種類があります。詳細については，「2.2　キューの種類」を参照してください。

非永続版リソースアダプタの場合

ユーザは，キュー作成ファイルにキュー属性を定義してReliable Messaging内にキューを作成します。

非永続版リソースアダプタでは，ローカルキューだけを使用できます。

TPBroker

分散オブジェクト環境でのオブジェクト間通信やトランザクション制御を提供する製品です。

J2EEサーバはTPBrokerを利用してトランザクションマネジャとして動作します。Reliable MessagingはリソースマネジャとしてJ2EEサーバと連携します。

詳細については，マニュアル「TPBroker ユーザーズガイド」を参照してください。

DB Connector for Reliable Messaging

DBにアクセスするためのJ2EEリソースアダプタとなる，スタンドアロンモジュールです。Reliable Messaging（永続版リソースアダプタ）がDBにアクセスするときに使用します。

詳細については，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。

HiRDB/Run Time，HiRDB/Developer's KitまたはOracle JDBC Driver

他マシン上のDBにアクセスするためのクライアント機能を提供する製品です。Reliable Messaging（永続版リソースアダプタ）とDBMSを同じマシン上で運用する場合は不要です。

HiRDB/Run TimeおよびHiRDB/Developer's Kitについては，マニュアル「HiRDB UAP開発ガイド」を参照してください。Oracle JDBC Driverについては，Oracleのマニュアルを参照してください。

HiRDB SQL Executer

SQLを実行するためのクライアントプログラムです。Reliable Messaging（永続版リソースアダプタ）が使用するシステムの管理情報をDBのテーブル上に作成するときに使用します。

HiRDB SQL Executerについては，HiRDB SQL Executerのドキュメントを参照してください。

DBMS

Reliable Messaging（永続版リソースアダプタ）では，メッセージを格納するキューや管理情報をDBのテーブル上に作成します。このDBを管理するためのDBMSです。

Reliable Messagingでは，DBMSとしてHiRDBまたはOracle※を使用できます。HiRDBのシステム設計については，マニュアル「HiRDB システム導入・設計ガイド」を参照してください。Oracleのシステム構築については，Oracleのマニュアルを参照してください。

注※

トランザクションのサポートレベルがXATransactionの場合，Oracle RAC機能は使用できません。

1.4　システム形態

Reliable Messagingのシステム形態は，自システム内だけの通信であるか，システム間の通信があるかによって異なります。各システムの形態とDBサーバを共有する形態について説明します。

1.4.1　単一システムでのアプリケーション連携

自システム内のアプリケーション間で，ローカルキューを介してメッセージを送受信する形態です。この形態は，永続版リソースアダプタ，非永続版リソースアダプタ共に利用できます。

自システムの送信側アプリケーションがメッセージを送信するとき，ローカルキューにメッセージが登録されます。自システムの受信側アプリケーションがメッセージを受信するとき，ローカルキューからメッセージが取り出されます。

単一システムでのアプリケーション連携を次の図に示します。

図1‒5　単一システムでのアプリケーション連携（永続版リソースアダプタの場合）

図1‒6　単一システムでのアプリケーション連携（非永続版リソースアダプタ場合）

1.4.2　複数システム間でのアプリケーション連携

自システムと相手システムが共用キューを共有してメッセージを送受信する形態です。この形態は，永続版リソースアダプタだけが利用できます。

自システムのアプリケーションがメッセージを送信するとき，送信用共用キューにメッセージが登録されます。送信用共用キューは定義だけの仮想的なキューです。メッセージが格納される領域の実体は，相手システムにとっての受信用共用キューにあります。相手システムのアプリケーションがメッセージを受信するとき，（相手システムにとっての）受信用共用キューからメッセージが取り出されます。

自システムおよび相手システムは，Reliable Messagingで構築されたシステムです。

複数システム間でのアプリケーション連携を次の図に示します。

図1‒7　複数システム間でのアプリケーション連携

1.4.3　複数システムのキュー間でメッセージを転送するアプリケーション連携

自システムから，他システムに組み込まれているReliable Messagingまたは他ベンダのメッセージングシステムに向けてメッセージを送信する形態です。この形態は，永続版リソースアダプタだけが利用できます。

複数システムのキュー間でメッセージを転送する場合に，自システムで使用するキューを転送キューといいます。転送キューについては，「2.2.2　転送キュー」を参照してください。

転送キューを使うには，転送先の情報が必要となります。他ベンダに向けたメッセージ転送は，BytesContainerインタフェースを使用することで実現できます。BytesContainerインタフェースについては，「7.8.2　BytesContainerインタフェース」を参照してください。

アプリケーションからメッセージを他システムに転送する手順を次に示します。

転送キューにメッセージを登録します。

転送キューにメッセージが登録された時点で他システムに向けたメッセージの転送が開始されます。ただし，コマンドでサーバ間転送のメッセージ送受信を抑止することもできます。また，転送キューに登録済みのメッセージは，アプリケーションからは取り出せません。

複数システムのキュー間でメッセージを転送するアプリケーション連携を次の図に示します。

図1‒8　複数システムのキュー間でメッセージを転送するアプリケーション連携

1.4.4　DBサーバの共有

Reliable MessagingはDBサーバが動作するマシンとは異なるマシンで動作できます。この場合，マシン間をLAN回線などで接続します。DBサーバの共有は，永続版リソースアダプタだけが利用できます。

1台のマシンには一つ以上のReliable Messagingを動作させることができます。また，複数のReliable Messagingで一つのDBサーバを共有できます。

しかし，一つのReliable Messagingが複数のDBサーバに接続することはできません。

DBサーバの共有を次の図に示します。

図1‒9　DBサーバの共有

(1)　管理情報テーブルとの対応関係

Reliable Messagingは，メッセージを格納するキューや管理情報をDB上の管理情報テーブルに保存します。管理情報テーブルは，Reliable Messagingに1：1に対応する必要があります。複数のReliable Messagingで一つの管理情報テーブルを共有できません。特に，一つのJ2EEサーバ上で複数のReliable Messagingを動作させる場合はご注意ください。

管理情報テーブルはRMSystemNameプロパティ指定値によって特定のReliable Messagingと対応づけられます。複数のReliable Messagingがある場合は，システム間でRMSystemNameプロパティ指定値を一意にしてください。

管理情報テーブルの作成方法については，HiRDBの場合は「3.4.1(3)　Reliable Messagingの管理情報テーブルの作成」を，Oracleの場合は「3.4.2(3)　Reliable Messagingの管理情報テーブルの作成」を参照してください。

Reliable Messagingと管理情報テーブルの対応を次の図に示します。

図1‒10　Reliable Messagingと管理情報テーブルの対応

図中の番号（a）〜（c）について説明します。

（a）

Reliable Messaging（1）がDB上の管理情報テーブル（1）と1：1に対応しています。

（b）

Reliable Messaging（2）がDB上の管理情報テーブル（2）と1：1に対応しています。Reliable Messaging（3）がDB上の管理情報テーブル（3）と1：1に対応しています。

管理情報テーブル（2）と管理情報テーブル（3）は，同じDB上に作成されています。

（c）

Reliable Messaging（4）とReliable Messaging（5）がDB上の管理情報テーブル（4）を共有しようとしています。これはReliable Messagingがサポートしない不正な構成です。

(2)　XATransaction利用時のリソースアダプタ間でのDB共有の制限

トランザクションのサポートレベルがXATransactionで，Reliable Messagingのほかにも，DBに関連するリソースアダプタ（DB Connectorなど）が動作し，各リソースアダプタが同じDBを使用する場合は，次に示す制限があります。

(a)　一つのJ2EEサーバ内の複数のリソースアダプタが共通のDBを利用する場合

接続先DBがHiRDBのとき

XAOpen文字列の値は，リソースアダプタごとに一意となるように指定してください。Reliable Messagingでは，XAOpen文字列を連携先のDB Connectorに指定します。

接続先DBがOracleのとき

連携先のDB Connectorとの間でDBコネクションを共有するときだけDBを共有できます。この場合，一つのJ2EEサーバ上に複数のReliable Messagingをデプロイして利用できません。

一つのJ2EEサーバ上で複数のリソースアダプタを利用する場合の，リソースアダプタのDB共有を次の図に示します。

図1‒11　リソースアダプタのDB共有（J2EEサーバが一つの場合）

(b)　複数のJ2EEサーバ内の複数のリソースアダプタが共通のDBを利用する場合

接続先DBがHiRDBのとき

XAOpen文字列の値は，リソースアダプタごとに一意となるように指定してください。Reliable Messagingでは，XAOpen文字列を連携先のDB Connectorに指定します。

接続先DBがOracleのとき

特に制限はありません。

複数のJ2EEサーバ上で複数のリソースアダプタを利用する場合の，リソースアダプタのDB共有を次の図に示します。

図1‒12　リソースアダプタのDB共有（J2EEサーバが複数の場合）

1.5　システム構築・運用の流れとマニュアルの参照先

システム構築・運用の流れとマニュアルでの説明個所の対応について説明します。また，Reliable Messagingの機能とマニュアルでの説明個所の対応についても説明します。

1.5.1　システム構築・運用の流れとマニュアルでの説明個所の対応

Reliable Messagingのシステム構築・運用の流れとマニュアルでの説明個所の対応を次の図に示します。

図1‒13　システム構築・運用の流れとマニュアルでの説明個所の対応

概要

Reliable Messagingの概要を把握します。

機能

Reliable Messagingの機能を把握します。

永続版リソースアダプタと非永続版リソースアダプタでは，利用できる機能が異なります。詳細は「1.5.2　Reliable Messagingの機能とマニュアルでの説明個所の対応」を参照してください。

システム構築

Reliable Messagingのシステムを構築します。

永続版リソースアダプタと非永続版リソースアダプタでは，システムの構築手順が異なります。図1-13で示すマニュアルでの説明個所に従ってシステムを構築してください。

コンフィグレーションプロパティ

環境に合わせてコンフィグレーションプロパティを設定します。

永続版リソースアダプタと非永続版リソースアダプタでは，設定するプロパティが異なります。詳細は「6.1　Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

インタフェース

Reliable Messagingが提供するインタフェースを使用してアプリケーションを実装します。

非永続版リソースアダプタでは，転送データ相互接続用インタフェースは使用できません。転送データ相互接続用インタフェースについては，永続版リソースアダプタの場合だけ参照してください。

運用

Reliable Messagingを運用します。

永続版リソースアダプタの場合は「4.　Reliable Messaging（永続版リソースアダプタ）の運用」を，非永続版リソースアダプタの場合は，「5.　Reliable Messaging（非永続版リソースアダプタ）の運用」を参照してください。

コマンドリファレンス

コマンドを入力することによってReliable Messagingを運用します。

永続版リソースアダプタと非永続版リソースアダプタでは，使用できるコマンドが異なります。詳細は「8.2　コマンドの一覧」を参照してください。

障害対策

Reliable Messagingの障害に対応します。

1.5.2　Reliable Messagingの機能とマニュアルでの説明個所の対応

Reliable Messagingの機能とマニュアルでの説明個所の対応を次の表に示します。

表1‒1　Reliable Messagingの機能とマニュアルでの説明個所の対応

項番

機能

機能詳細

永続版リソースアダプタ

非永続版リソースアダプタ

マニュアルでの説明個所

1

キューの種類

ローカルキュー

○

△※1

2.2.1

転送キュー

受信用共用キュー

送信用共用キュー

デッドメッセージキュー

○

×※2

2.2.2，2.2.3，2.2.4，2.2.5

2

キューの永続性

永続キュー属性

○

×

2.3.1

非永続キュー属性

○

○

3

メッセージの受信制御

プライオリティでの順序

FIFOでの順序

メッセージセレクタでの順序

○

○

2.6.1，2.6.2

4

メッセージ取り出しモード

シリアル取り出し属性

パラレル取り出し属性

パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）

○

○

2.3.2

5

メッセージの作成

JMSインタフェース

○

○

7章

6

メッセージの受け渡し方式

値渡し方式

参照渡し方式

○

○

2.3.3

7

サーバ間転送

WS-Reliability（SOAP）によるサーバ間転送

OpenTP1システム（TP1/EE）とのサーバ間転送

○

×

2.4

8

Message-driven Beanとの連携

Message-driven Beanによるメッセージの配信

○

○

2.6.3

9

コマンド

運用コマンド

○

△※3

8章

10

DB Connector for Reliable Messagingの機能

DB Connector for Reliable Messagingとのコネクション共有（トランザクションの1相コミット化）

ステートメントキャンセル

障害調査用SQLの出力

軽微な障害時のコネクション再利用

コネクションIDの取得

○

×

2.7

11

J2EEインタフェース（JMS，JCA／JTA）

ローカルトランザクションの利用

トランザクションマネジャでのトランザクションの利用

○※4

○※4

2.6.6

コンテナ管理によるセキュリティ認証（コンテナ認証）

コンポーネント管理によるセキュリティ認証（アプリケーション認証）

○

×※5

2.6.5

シェアリングによるコネクションの共有

アソシエーションによるコネクションの共有

○

○

2.6.7，

マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」

12

転送データ相互接続用API

転送データ相互接続用インタフェース（BytesContainer）

○

×

7章

13

キューの抑止制御

キューのメッセージの送受信を抑止

○

△※6

4.2.5，5.2.2，8.3.27

14

キューの障害閉塞

不整合となったキューの部分閉塞

○

×

9.4

15

J2EEサーバ（Application Server）の機能

リソースへの接続テスト

コネクションの障害検知

コネクションプーリング

○

○※7

マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」

16

ログとトレース

開始停止メッセージログ

Application Server用メッセージログ

メソッドトレース

PRFトレース

○

○

9.1，9.3

共用キューイベントトレース

回線トレース

○

×

17

キューのJNDIネーミングサービスへの登録

キュー定義ファイルの使用

キュー定義ファイルの未使用（キュー作成時の表示名の使用）

○

○※8

3.4.4，3.5.2

（凡例）

○：使用できます。

△：一部使用できます。

×：使用できません。

注※1

非永続キュー属性のローカルキューだけ使用できます。また，キュー間転送によるメッセージの受信はできません。

注※2

永続版リソースアダプタでデッドメッセージキューに登録されるメッセージは，非永続版リソースアダプタでは，即削除されます。

注※3

管理状態だけで実行できるコマンド，キュー間転送で使用するコマンドなどは使用できません。

注※4

トランザクションサポートレベルには，NoTransaction，LocalTransaction，およびXATransactionを指定できます。

注※5

認証情報を指定しても無視されます。

注※6

メッセージの送受信抑止だけできます。キュー間転送関連の送受信抑止は使用できません。また，Reliable Messagingの再開始後，キューの抑止状態は引き継がれません。

注※7

リソースへの接続テスト，およびコネクションの障害検知は常に成功します。また，プールされるコネクション中にJDBCリソースは保持されません。

注※8

キュー定義ファイル未使用時のキューの表示名は，キュー作成ファイルで定義します。

2　機能

Reliable Messagingは，JMSのPTPメッセージングモデルに基づく要素でシステムを構成します。要素には，キュー，メッセージおよびアプリケーションがあります。

この章では，PTPメッセージングモデルの概要を示したあとで，各要素の機能について説明します。さらに，DB Connector for Reliable Messagingの機能について説明します。

2.1　メッセージングモデル

メッセージングモデルは，メッセージ通信に関係する構成要素と動作を規定したものです。Reliable Messagingがサポートするメッセージングモデルについて説明します。

2.1.1　PTPメッセージングモデル

Reliable Messagingが実装するJMSインタフェースは，JMS Version 1.0.2bのPTP（ポイントツーポイント）メッセージングモデルに基づきます。

送信側アプリケーションは特定のキューに対してメッセージを送信します。受信側アプリケーションはキューからメッセージを受信します。

PTPメッセージングモデルの概要を次の図に示します。

図2‒1　PTPメッセージングモデルの概要

2.2　キューの種類

アプリケーションが送受信するメッセージは，Reliable Messagingが管理するキューに登録されます。永続版リソースアダプタの場合と非永続版リソースアダプタの場合とで，キューの作成や削除などの方法が異なります。

永続版リソースアダプタの場合

キューは，hrmmkqueコマンドによってDB上のテーブルに作成されます。キュー作成時に指定する-tオプション指定値によって，目的ごとにキューの種類を作り分けできます。

hrmmkqueのコマンドオプションには，格納メッセージの管理方法や格納できるメッセージ数などの属性を指定します。属性はhrmlsqueコマンドで確認でき，hrmchgqueコマンドで変更できます。不要なキューは，hrmdelqueコマンドによって削除できます。

非永続版リソースアダプタの場合

キュー定義文（定義の先頭にhrmmkqueを記述）を指定して，キュー作成ファイルを作成します。キュー作成ファイルに指定したキュー定義文を基に，Reliable Messaging開始時にキューが作成されます。非永続版リソースアダプタの場合，作成されるキューは非永続キュー属性のローカルキューだけです。また，キューはDBで管理されません。

キュー定義文のオプションには，格納メッセージの管理方法や格納できるメッセージ数などの属性を指定します。属性はhrmlsqueコマンドで確認できます。属性を変更する場合，および不要なキューを削除する場合は，キュー作成ファイルを編集します。

2.2.1　ローカルキュー

ローカルキューは，自システムのアプリケーション間で送受信するメッセージ，またはサーバ間転送のために受信したメッセージを登録するキューです。自システムのアプリケーションは，ローカルキューを指定してメッセージを送信したり，受信したりします。なお，hrmstopqueコマンドを使用して，アプリケーションのメッセージの送受信，およびサーバ間転送のメッセージの送受信を抑止できます。サーバ間転送の詳細は，「2.4　メッセージのキュー間転送」を参照してください。

ローカルキューは，永続版リソースアダプタ，非永続版リソースアダプタのどちらの場合も使用できます。永続版リソースアダプタ，非永続版リソースアダプタのローカルキューの概要をそれぞれ説明します。

(1)　永続版リソースアダプタの場合

永続版リソースアダプタのローカルキューの概要を次の図に示します。

図2‒2　ローカルキューの概要（永続版リソースアダプタの場合）

作成方法

永続版リソースアダプタのローカルキューを作成するには，hrmmkqueコマンドの-tオプションにlocalを指定します。

送受信できるメッセージ種別

永続版リソースアダプタのローカルキューには，アプリケーションは次に示すメッセージインタフェースを使用してメッセージを送受信できます。

Message

BytesMessage

ObjectMessage

TextMessage

なお，送受信するメッセージはReliable Messagingが提供するQueueSessionインタフェースのメソッドで生成したオブジェクトです。

(2)　非永続版リソースアダプタの場合

非永続版リソースアダプタの場合，使用できるのは非永続キュー属性のローカルキューだけです。また，サーバ間転送によるメッセージ受信はできません。

非永続版リソースアダプタのローカルキューの概要を次の図に示します。

図2‒3　ローカルキューの概要（非永続版リソースアダプタの場合）

作成方法

キュー定義文（定義の先頭にhrmmkqueを記述）を指定して，キュー作成ファイルを作成します。キュー作成ファイルに指定したキュー定義文を基に，Reliable Messaging開始時に非永続キュー属性のローカルキューが作成されます。

送受信できるメッセージ種別

非永続版リソースアダプタのローカルキューには，アプリケーションは次に示すメッセージインタフェースを使用してメッセージを送受信できます。

Message

BytesMessage

ObjectMessage（ペイロードにBytesContainerは格納できない）

TextMessage

なお，送受信するメッセージはReliable Messagingが提供するQueueSessionインタフェースのメソッドで生成したオブジェクトです。

2.2.2　転送キュー

転送キューは，他システムに存在するReliable Messagingまたは他ベンダのメッセージングシステムに向けてメッセージを送信するためのキューです。転送キューを使うには，転送先の情報が必要になります。他ベンダに向けたメッセージ転送は，BytesContainerを使用することで実現できます。

メッセージをアプリケーションから他システムに転送したい場合は，自システムの転送キューにメッセージを登録します。

他システムに向けたメッセージの転送は，転送キューにメッセージが登録された時点で開始します。ただし，hrmstopqueコマンドでサーバ間転送のメッセージ送受信を抑止することもできます。また，アプリケーションは転送キューから登録済みのメッセージを取り出すことはできません。

転送キューによるメッセージ転送は，永続版リソースアダプタの場合だけ利用できます。

転送キューの概要を次の図に示します。

図2‒4　転送キューの概要

作成方法

転送キューを作成するには，hrmmkqueコマンドの-tオプションにtransmitを指定し，事前にhrmmkaddrコマンドで登録しておいたあて先情報を-aオプションに指定します。

送信できるメッセージ種別

転送キューには，アプリケーションは次に示すメッセージインタフェースを使用してメッセージを送信できます。

送信先がReliable Messagingの場合

ローカルキューと同じ

送信先が他システムの場合

ObjectMessage（ボディにBytesContainerを含む）

2.2.3　受信用共用キュー

受信用共用キューは，共用キューを使用して複数システム間でのアプリケーション連携をする場合に，メッセージを取り出すためのキューです。受信側アプリケーションは受信用共用キューを指定してメッセージを受信します。また，自システムのアプリケーションから受信用共用キューを指定してメッセージを送信することもできます。さらに，hrmstopqueコマンドを使用して，アプリケーションのメッセージの送受信を抑止できます。

受信用共用キューによるメッセージの受信は，永続版リソースアダプタの場合だけ利用できます。

受信用共用キューの概要を次の図に示します。

図2‒5　受信用共用キューの概要

作成方法

受信用共用キューを作成するには，hrmmkqueコマンドの-tオプションにshr_receiveを指定します。

受信できるメッセージ種別

受信用共用キューから，アプリケーションは次に示すメッセージインタフェースを使用してメッセージを受信できます。

BytesMessage

ただし，メッセージのペイロードだけを取り出しできます。メッセージのペイロードについては，「2.5.1　JMSメッセージの構成」を参照してください。

なお，受信するメッセージはReliable Messagingが提供するQueueSessionインタフェースのメソッドで生成したオブジェクトです。

注意

受信用共用キューは，接続先のデータベースの種別がHiRDBの場合だけ作成できます。接続先のデータベースの種別がOracleの場合に受信用共用キューを作成するとエラーが発生します。

共用キューを作成する場合，同一スキーマ定義内に，送信側システムの管理情報テーブルと受信側システムの管理情報テーブルを定義してください。管理情報テーブルの作成については，「3.4.1(3)　Reliable Messagingの管理情報テーブルの作成」を参照してください。

2.2.4　送信用共用キュー

送信用共用キューは，共用キューを使用して複数システム間でのアプリケーション連携をする場合に，メッセージのあて先として指定するキューです。

送信用共用キューは定義だけのキューです。メッセージが格納されるメモリやディスク領域などの実体は，受信側システムの受信用共用キューです。アプリケーションが（送信側システムにとっての）送信用共用キューにメッセージを登録すると，実体上は（受信側システムにとっての）受信用共用キューに登録されます。

（送信側システムにとっての）送信用共用キューは（受信側システムにとっての）受信用共用キューとn：1（n：任意の整数）に対応づけることができます。そのため，受信側システムでは，複数の送信側システムから送信されたメッセージを一つの受信用共用キューに格納するような構成にできます。

送信用共用キューによるメッセージの送信は，永続版リソースアダプタの場合だけ利用できます。

送信用共用キューの概要を次の図に示します。

図2‒6　送信用共用キューの概要

作成方法

送信用共用キューを作成するには，hrmmkqueコマンドの-tオプションにshr_sendを指定します。-bオプションには，相手システムの受信用共用キューに基づく名前を指定します。キュー属性の多くは，（受信側システムにとっての）受信用共用キューに指定された値に従います。

送信できるメッセージ種別

送信用共用キューには，アプリケーションは次に示すメッセージインタフェースを使用してメッセージを送信できます。

BytesMessage

ただし，メッセージのペイロードだけが保存されます。メッセージのペイロードについては，「2.5.1　JMSメッセージの構成」を参照してください。

なお，送信するメッセージはReliable Messagingが提供するQueueSessionインタフェースのメソッドで生成したオブジェクトです。

注意

送信用共用キューは，接続先のデータベースの種別がHiRDBのときだけ作成できます。接続先のデータベースの種別がOracleのときに送信用共用キューを作成するとエラーが発生します。

2.2.5　デッドメッセージキュー

デッドメッセージキューは，有効期限に達したメッセージなどが移動される特別なローカルキューです。システム内に一つだけ指定できます。自システムのアプリケーションは，ローカルキューと同様にデッドメッセージキューから該当するメッセージを受信できますが，デッドメッセージキューにメッセージを送信することはできません。また，デッドメッセージキューに移動したメッセージは，移動前のキューに新しいメッセージとして再登録できます。さらに，hrmstopqueを使用して，アプリケーションのメッセージの受信を抑止することもできます。

デッドメッセージキューは，永続版リソースアダプタの場合だけ利用できます。永続版リソースアダプタでデッドメッセージキューに移動されるメッセージは，非永続版リソースアダプタでは，即削除されます。

デッドメッセージキューの概要を次の図に示します。

図2‒7　デッドメッセージキューの概要

作成方法

デッドメッセージキューを作成する方法は，ローカルキューと同じです。ただし，RMDeadMessageQueueNameプロパティにキュー名を指定する必要があります。

(1)　デッドメッセージキューへの登録

サーバ間転送以外の通信では，次に示す場合に，メッセージはデッドメッセージキューに登録されます。サーバ間転送の場合のデッドメッセージキューへの登録については，「2.2.5(2)　サーバ間転送でのデッドメッセージキューへの登録」を参照してください。

メッセージが有効期限に達した場合

キューに登録されているメッセージが有効期限に達した場合，そのメッセージはデッドメッセージキューに移動されます。ただし，デッドメッセージキューに登録されているメッセージは，有効期限をチェックされないので対象外です。

また，次に示すときメッセージはデッドメッセージキューに移動されないで削除されます。

(a)RMDeadMessageQueueNameプロパティの指定がないとき

(b)RMDeadMessageQueueNameプロパティに指定されたキューがないとき

(c)メッセージ数超過やDB障害などの要因によって，デッドメッセージキューへの登録に失敗したとき

メッセージの配送回数が最大値に達した場合

receive()またはreceiveNoWait()メソッドを発行してメッセージを受信するアプリケーションやMessage-driven Beanでメッセージの配信を受けるアプリケーションに，Reliable Messagingがキューから取り出したメッセージを渡すことを配送といいます。

Reliable Messagingが処理するメッセージの配送回数の最大値はRMMaxDeliveryNumプロパティで指定します。

キューに登録されているメッセージの配送回数が最大値に達した場合，そのメッセージはデッドメッセージキューに移動されます。ただし，デッドメッセージキューに登録されているメッセージは，配送回数をチェックされないので対象外です。また，次に示すときメッセージはデッドメッセージキューに移動されないで，配送できる状態になります。

(a)RMDeadMessageQueueNameプロパティの指定がないとき

(b)RMDeadMessageQueueNameプロパティに指定されたキューがないとき

(c)メッセージ数超過やDB障害などの要因によって，デッドメッセージキューへの登録に失敗したとき

(2)　サーバ間転送でのデッドメッセージキューへの登録

サーバ間転送では，次に示す場合に，メッセージはデッドメッセージキューに登録されます。

メッセージの転送中に通信の有効期限に達した場合

メッセージの転送中に通信の有効期限に達した場合，そのメッセージはデッドメッセージキューに登録されます。転送中に通信の有効期限に達する場合の例を次に示します。

(a)転送されてきたメッセージが通信の有効期限に達していたとき

(b)順序保証をしていて，順序が前のメッセージが転送される前に順序があとのメッセージが転送されて，順序が前のメッセージの到達待ちの間に通信の有効期限に達したとき

(a)のときは受信に失敗するため，送信側システムのデッドメッセージキューに登録されます。(b)のとき，順序保証のため滞留している順序があとのメッセージは，ローカルキューには登録されないで，受信側システムのデッドメッセージキューに登録されます。順序保証については，「2.4.4　キュー間転送のQoS」を参照してください。

メッセージ数の超過やDB障害などの要因によってデッドメッセージキューへの登録に失敗した場合は，デッドメッセージキューへの登録をリトライし続けます。

通信の有効期限に達した場合の処理を次の図に示します。

図2‒8　メッセージの転送中に通信の有効期限に達した場合の処理

電文不正などの障害でメッセージの受信に失敗し，かつ再送もできない場合

電文不正などの障害でメッセージの受信に失敗し，かつ再送もできない場合は，そのメッセージは送信側システムのデッドメッセージキューに登録されます。

また，受信に失敗したメッセージが順序保証をしていて，かつすでに受信側システムには順序保証のために滞留しているメッセージがあった場合，滞留しているメッセージはすべて受信側システムのデッドメッセージキューに登録されます。

メッセージ数の超過やDB障害などの要因によってデッドメッセージキューへの登録に失敗した場合は，デッドメッセージキューへの登録をリトライし続けます。

メッセージの転送ができない場合の処理を，受信側システムに滞留しているメッセージがない場合と滞留しているメッセージがある場合に分けて，次の図に示します。

図2‒9　電文不正などの障害でメッセージの受信に失敗した場合の処理

2.3　メッセージの管理

Reliable Messagingのアプリケーションが送受信するメッセージを管理するときに注意が必要な点について説明します。

2.3.1　キューの永続性

永続版リソースアダプタの場合，キューの作成時には，hrmmkqueコマンドの-mオプションにキューの永続性を指定できます。永続性には次に示す属性があり，メッセージの管理が異なります。

永続キュー属性（-mオプションにpersistentを指定）

送信側アプリケーションが送信したメッセージは，受信側アプリケーションが受信するまでキューのあるDB上で永続的に管理されます。DB障害以外によってメッセージが消滅しないため，通常は永続キュー属性を指定することをお勧めします。

メッセージを送信する際には，DBへの書き込みと同時にReliable Messagingが管理するメモリ上にメッセージがキャッシュされます。同一メッセージの受信の際はメモリ上からメッセージが読み取られるため，取り出し処理のレスポンスが向上します。

非永続キュー属性（-mオプションにnon_persistentを指定）

送信側アプリケーションが送信したメッセージは，Reliable Messagingのメモリ上でだけ管理され，DB上では管理されません。永続キュー属性を指定する場合と比較すると，DBへの書き込みが発生しない分だけレスポンスが良くなりますが，障害発生時やReliable Messagingを再度開始するときにメッセージは消滅します。

キューに指定できる永続性を次の表に示します。

表2‒1　キューに指定できる永続性

項番

キューの種類

永続キュー属性

非永続キュー属性

1

ローカルキュー

○

○

2

転送キュー

○

△※

3

受信用共用キュー

○

×

4

送信用共用キュー

×

×

5

デッドメッセージキュー

○

○

（凡例）

○：指定できます。

△：制限付きで指定できます。

×：指定できません。

注※

順序保証を指定している場合は指定できません。

非永続版リソースアダプタの場合，キューの永続性は非永続キュー属性だけになります。Reliable Messagingの開始時に非永続キュー属性のローカルキューが作成されるため，キューの永続性は指定できません。

2.3.2　メッセージ取り出しモード

キューの作成時には，次のようにメッセージ取り出しモードを指定できます。

永続版リソースアダプタの場合

hrmmkqueコマンドの-dオプションにメッセージ取り出しモードを指定して，コマンドを実行します。

非永続版リソースアダプタの場合

キュー定義文の-dオプションにメッセージ取り出しモードを指定して，キュー作成ファイルを作成します。

メッセージ取り出しモードには次に示す属性があり，アプリケーションがキューからメッセージを受信するときの多重化制御が異なります。

シリアル取り出し属性（-dオプションにserialを指定）

アプリケーションがトランザクション内でキューからメッセージを受信したあと，トランザクションが未決着な状態であるとき，異なるアプリケーション（または異なるスレッドのトランザクション）での次メッセージの取り出しが抑止されます。トランザクションが決着してから受信できるようになります。

つまり，同一トランザクション内でのメッセージの連続的な受信だけができます。

複数のアプリケーション（または複数のスレッドのトランザクション）でメッセージを受信する場合に，メッセージが送信されたときの順序を保持する必要があるときに指定します。

シリアル取り出し属性の概要を次の図に示します。

図2‒10　シリアル取り出し属性の概要

パラレル取り出し属性（-dオプションにparallelを指定）

アプリケーションがトランザクション内でキューからメッセージを受信したあと，トランザクションが未決着な状態であるとき，異なるアプリケーション（または異なるスレッドのトランザクション）での次メッセージの受信ができます。

複数のアプリケーション（または複数のスレッドのトランザクション）でメッセージを受信する場合に，メッセージが送信されたときの順序を保持する必要がないときに指定します。シリアル取り出し属性よりもメッセージ受信時のスループットが優れます。

パラレル取り出し属性の概要を次の図に示します。

図2‒11　パラレル取り出し属性の概要

パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）（-dオプションにparallel_unit_orderを指定）

MDBへのメッセージ配信時に，アプリケーションで設定したメッセージのユニット識別子ごとに順序性を保証します。キューに含まれる特定のメッセージ間では順序性を保証し，それ以外の場合には多重度を確保してMDBを実行できます。

ユニット識別子での配信順序制御では，MDBへのメッセージ配信時にメッセージのユニット識別子を調べ，配信中のメッセージと同一のユニット識別子の場合はメッセージを配信しないように抑止します。この場合，同一MDBの他のスレッドに対してもメッセージの配信は抑止されます。配信が抑止されたメッセージは，MDBで行っているメッセージ配信が完了すると配信対象となります。

配信中のメッセージとは異なるユニット識別子が設定されたメッセージがキューに存在すれば，そのメッセージは配信されます。また，ユニット識別子が設定されていないメッセージも抑止されずに配信されます。

ユニット識別子の配信順序制御はMDBに対してのみ有効です。アプリケーションからメッセージを送受信する場合は，パラレル取り出し属性と同じ振る舞いとなります。

ユニット識別子の配信順序制御の概要を次の図に示します。

図2‒12　ユニット識別子の配信順序制御の概要

(1)　ユニット識別子の設定

アプリケーションは送信対象のメッセージに対して，Reliable Messaging固有のプロパティJMS_HITACHI_UnitID（String型）を利用して，メッセージのユニット識別子を設定できます。

ユニット識別子のプロパティ名は大文字小文字を区別します。プロパティ名，型を間違えて設定した場合，アプリケーション指定のプロパティとして扱われます。この場合，ユニット識別子による配信順序制御は行われません。また，空文字やNULLをメッセージ識別子として設定した場合も，メッセージはユニット識別子による配信順序制御の対象とはなりません。

キューに格納されたメッセージのユニット識別子は，メッセージの表示コマンドで参照できます。コマンドの詳細については，「8.　コマンドリファレンス」を参照してください。

(2)　キューのメッセージ取り出しモードの設定

ユニット識別子による配信順序制御は，キューの作成時にメッセージ取り出しモードとして指定できます。ただし，キューの永続性が非永続キュー属性である必要があります。永続属性のキューに対して，-dオプションとしてparallel_unit_orderを指定すると例外が発生し，キューの作成に失敗します。

また，キューの属性変更コマンドを利用して，キューの取り出しモードをパラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）に変更することもできます。

(3)　注意事項

シリアル／パラレルのメッセージ取り出しモードの場合は，ユニット識別子が指定されていてもMDBへの配信でユニット識別子による配信順序制御は行われません。

ユニット識別子が設定されない，あるいは，空文字/NULLが指定されている場合，メッセージはパラレル取り出しにより，MDBに配信されます。

以下の場合，取り出しモードがユニット識別子による配信順序制御で，メッセージにユニット識別子が付与されていてもユニット識別子による配信順序制御は行われません。

メッセージがキュー間転送機能によってキューに格納された場合

キューがデッドメッセージキューである場合

メッセージがデッドメッセージの再登録によって，キューに格納された場合

これらの場合，メッセージにユニット識別子が指定されていると，メッセージのプロパティにはユニット識別子は含まれますが，メッセージはパラレル取り出しにより，MDBに配信されます。

また，メッセージの参照コマンドを実行した場合，デッドメッセージキューおよびデッドメッセージを再登録したメッセージについては，ユニット識別子は表示されません。

転送機能によってメッセージがキューに格納された場合，メッセージのユニット識別子はメッセージの参照コマンドで参照できますが，ユニット識別子による配信順序制御の対象とはなりません。

2.3.3　メッセージの受け渡し

Reliable Messagingは，アプリケーションとキューとの間でメッセージの受け渡しをします。

(1)　メッセージの受け渡し方式

アプリケーションとキューとの間でメッセージを受け渡す方式には，値渡し方式と参照渡し方式の二つ方法があります。それぞれの方法について説明します。

(a)　値渡し方式

値渡し方式は，Reliable Messagingで扱うメッセージとアプリケーションが保持するメッセージを分離する方式です。そのため，アプリケーションが1度登録したメッセージを変更したり，取り出したメッセージを再び登録したりできます。Reliable Messagingは，メッセージの登録時および取り出し時にメッセージをコピーします。

値渡し方式を利用したメッセージの受け渡しの概要を次の図に示します。

図2‒13　値渡し方式を利用したメッセージの受け渡しの概要

(b)　参照渡し方式

参照渡し方式は，アプリケーションが保持するメッセージをそのままReliable Messagingで扱う方式です。アプリケーションがReliable Messagingと同じメッセージのインスタンスを参照するため，アプリケーションでメッセージを利用するときに，メッセージの再利用ができないなどの制限があります。しかし，値渡し方式よりも高速にメッセージを送受信できます。

参照渡し方式を利用する場合，RMPassByReferenceプロパティにtrueを指定します。

参照渡し方式を利用したメッセージの受け渡しの概要を次の図に示します。

図2‒14　参照渡し方式を利用したメッセージの受け渡しの概要

(2)　参照渡し方式を利用した場合の動作

参照渡し方式では，送信側アプリケーションが保持するメッセージと受信側アプリケーション（受信をロールバックした場合，ロールバックする前の受信側アプリケーションを含む）が保持するメッセージが同じインスタンスとなります。そのため，最後の受信側アプリケーションがメッセージを受信すると，送信側アプリケーションと以前の受信側アプリケーションが保持するメッセージは，最後の受信側アプリケーションのメッセージと同じ状態となります。

参照渡し方式を利用した場合の動作を次の図に示します。

図2‒15　参照渡し方式を利用した場合の動作

図2-14に示すように，送信側アプリケーションと受信側アプリケーションでは次の状態となります。

送信側アプリケーションと以前の受信側アプリケーション（受信側アプリケーション（1））が保持し続けているメッセージから取得できる情報は，最後の受信側アプリケーション（受信側アプリケーション（2））が保持するメッセージと等しくなる。

送信側アプリケーションと以前の受信側アプリケーション（受信側アプリケーション（1））がMessage.acknowledge()メソッドを呼び出すと，最後の受信アプリケーション（受信側アプリケーション（2））が保持するメッセージの受信を承認したことになる。

(3)　参照渡し方式を利用した場合のメッセージの再利用

参照渡し方式を利用した場合，Reliable Messagingが持つメッセージのインスタンスをアプリケーションも保持していることがあります。そのため，アプリケーションによるメッセージの再利用は行えません。メッセージの再利用とは，Reliable Messagingのキューに登録されたメッセージまたは登録を試みたメッセージを，再び登録することやそのメッセージに設定した情報を変更することです。アプリケーションによってメッセージを再利用した場合はエラーが発生します。再利用できないメッセージを次に示します。

QueueSenderインタフェースを使用して登録したメッセージ（登録失敗およびロールバックしたメッセージを含む）

QueueReceiverインタフェースを使用して取り出したメッセージ

MDBによって配信されたメッセージ

QueueBrowserインタフェースを使用して参照したメッセージ

2.3.4　メッセージの削除

Reliable Messagingは，アプリケーションによるメッセージの取り出しなどで不要になったキュー内のメッセージを削除します。

(1)　メッセージの削除方法

メッセージを削除する方法には，遅延削除と即時削除の二つ方法があります。それぞれの方法について説明します。

(a)　遅延削除

遅延削除は，メッセージが不要になった時点で削除せず配信済みの状態にしておき，RMSweepTimerIntervalプロパティ指定値の間隔で一括に削除する方法です。遅延削除はメッセージの取り出しの延長でメッセージを削除しないため，即時削除よりもスループットが優れる場合があります。

なお，非永続リソースアダプタの場合，遅延削除は利用できません。

遅延削除を利用したメッセージの削除の概要を次の図に示します。

図2‒16　遅延削除を利用したメッセージの削除の概要

永続キューで遅延削除を使用する場合の注意事項

永続キューで遅延削除を使用する場合，以下に注意する必要があります。

遅延削除処理中※1にDB側に高負荷がかかっていないか

RMSweepTimerIntervalの値

HiRDBクライアント環境変数「PDCWAITTIME」の値（HiRDBを使用する場合）

これは運用上，以下の問題が発生するのを防止するためです。

【問題】

キュー内の遅延削除対象のメッセージが削除されず，滞留し続ける。滞留が発生した場合，永続キューへのメッセージ送受信処理のスループットが低下する可能性がある※2。

【原因】

遅延削除対象のメッセージが滞留し続ける問題について

多量のメッセージを一括削除する場合，削除実行時にDB側で多量の行削除が行われます。

このときDB側に一時的に高負荷がかかり，遅延削除のDB更新完了に時間がかかる場合があります。DB更新完了に時間が掛かることにより，タイムアウトし，ロールバックが行われると，メッセージが削除されずキュー内に遅延削除対象メッセージが滞留することとなります※3。

更に次回以降の遅延削除処理でも，前回の遅延削除で削除できなかったメッセージと新しく削除対象となるメッセージが削除対象となるため，再度タイムアウトが発生し，メッセージの削除ができない可能性が高く，その結果削除対象のメッセージが滞留し続けることとなります。

永続キューへのメッセージ送受信処理のスループットが低下する問題について

遅延削除対象のメッセージが滞留し続ける場合，遅延削除処理中にはDB側に高負荷がかかります。そのため，遅延削除処理中に永続キューに対するメッセージ送受信を行うと，送受信のDB更新完了に時間がかかる可能性があり，送受信処理のスループットが低下する可能性があります。

上記の問題を発生させないためには，DBサーバへ高負荷が発生しないように，RMSweepTimerIntervalをチューニングし，多量のメッセージが一括削除されないようにする必要があります※4。

また，HiRDBを使用する場合，遅延削除処理でタイムアウトが発生しないように，HiRDBクライアント環境変数「PDCWAITTIME」の値をチューニングする必要があります※5。

ただしRMSweepTimerIntervalの値を短くし，プロパティに指定できる最小値を指定しても問題が発生する場合は，即時削除の使用を推奨します。

注※1

遅延削除処理実行中かどうかはDBのSQLトレースより確認できます。

以下に，Reliable Messagingが遅延削除で発行する削除SQLを示します。

DELETE FROM <DBへの接続ユーザ名>.<RMSystemNameプロパティ指定値>_MSG_<キュー名称>
                                           WHERE GROUP_NAME=' ' AND DELETE_FLAG=?

注※2

キュー内の削除対象のメッセージ数，および未配信のメッセージ数が多いほど，またメッセージのサイズが大きいほど発生するリスクは高まります。

注※3

遅延削除処理がロールバックしたかどうかは，キュー内の遅延削除対象のメッセージ数が減少しているかで判断できます。「hrmlsqueコマンド」のオプションに-qオプションを指定し実行した後，「total message count」の値から「message count」の値を引いた値が遅延削除対象のメッセージ数となります。遅延削除対象のメッセージ数が減少しない場合は，遅延削除処理がロールバックしている可能性があります。

注※4

チューニングは本番稼動環境と同等の環境で行う必要があります。

更に遅延削除処理にかかる時間が最大となるように，以下の環境でチューニングを行う必要があります。

システムへの負荷（メッセージの送受信処理など）が最大となるような環境

キュー内の遅延削除対象となるメッセージ数，配信済み状態ではないメッセージ数，メッセージのサイズが最大となる環境

注※5

PDCWAITTIMEのチューニングについては，「3.4.1(2)(b)　HiRDBの環境変数グループの登録」を参照してください。

(b)　即時削除

即時削除は，メッセージが不要になった時点で削除する方法です。そのため，遅延削除よりも一時的に使用するメモリの量を削減できます。即時削除は，アプリケーションによるメッセージの取り出しでのコミット時や，hrmdelmsgコマンド実行時のタイミングで実施されます。

ローカルキューまたはデッドメッセージキュー内のメッセージに即時削除を利用する場合，RMDeleteMessageImmediatelyプロパティにtrueを指定します。

即時削除を利用したメッセージの削除の概要を次の図に示します。

図2‒17　即時削除を利用したメッセージの削除の概要

(2)　キューの種類と利用できる削除方法

キューの種類によって利用できる削除方法が異なります。

キューの種類と利用できる削除方法を次の表に示します。

表2‒2　キューの種類と利用できる削除方法

項番

キューの種類

遅延削除

即時削除

1

ローカルキュー

○

○※1※2

2

転送キュー

○

×

3

受信用共用キュー

×

○

4

送信用共用キュー

−

−

5

デッドメッセージキュー

○

○※1

（凡例）

○：利用できます。

×：利用できません。

−：対象外です。

注※1

RMDeleteMessageImmediatelyプロパティにtrueを指定した場合だけ即時削除を行います。

注※2

キュー間転送では，メッセージの順序を保証するため，アプリケーションによって受信されたメッセージでも削除できないことがあります。そのため，キュー間転送で受信したメッセージは即時削除を行いません。

2.3.5　メッセージの有効期間

キューの作成時には，次のようにメッセージの有効期間を指定できます。

永続版リソースアダプタの場合

hrmmkqueコマンドの-eオプションにメッセージの有効期間を指定して，コマンドを実行します。

非永続版リソースアダプタの場合

キュー定義文の-eオプションにメッセージの有効期間を指定して，キュー作成ファイルを作成します。

メッセージの有効期間は，キューに登録されたメッセージがシステム内で有効な時間を秒単位で表します。

Reliable MessagingはRMSweepTimerIntervalプロパティ指定値の間隔（単位：秒）でメッセージの有効期間を確認し，有効期間に達しているメッセージの削除処理を実行します。有効期間に達している場合，デッドメッセージキューがあるときには，メッセージはデッドメッセージキューに移動されます。デッドメッセージキューがないときには，メッセージは破棄されます。

メッセージの有効期間に0が指定されたローカルキューのメッセージの有効期間は無限です。

2.4　メッセージのキュー間転送

メッセージのキュー間転送について説明します。

2.4.1　キュー間転送の概要

転送キューは，メッセージのキュー間転送をするための送信側のキューです。転送キューを使用してキュー間転送をすることで，ネットワークを介した複数システム間でのアプリケーション連携ができるようになります。

転送キューには，受信側システムのアドレスとローカルキュー名を指定します。転送キューに登録したメッセージは，指定された受信側システムのローカルキューに向けて転送されます。

送信側システムの転送キューは，受信側システムのローカルキューと，n：1（n：任意の整数）に対応づけることができます。このため，受信側では，複数の送信側システムから受信するメッセージを一つのローカルキューに格納する形でシステムを構成できます。

転送キューからメッセージを取り出すことはできません。転送キューに登録されたメッセージは，転送が成功し，転送先のローカルキューにメッセージが登録されたことが確認されたあとに削除されます。

転送キューによるキュー間転送の概要を次の図に示します。

図2‒18　転送キューによるキュー間転送の概要

2.4.2　キュー間転送のあて先指定

Reliable Messagingは，キュー間転送用のWebアプリケーションを使用してメッセージを受信します。

メッセージを転送するときは，転送先のアドレスとして，受信側システムのキュー間転送用Webアプリケーションのアドレスを指定します。このアドレス情報は，hrmmkaddrコマンドを使ってあて先情報テーブルに登録します。BASIC認証使用時には，あて先情報テーブルにBASIC認証用のユーザ名とパスワードも登録できます。

転送先のローカルキューの識別には，受信側システムのアドレスを表すあて先名と，転送先のキュー名が使用されます。この情報は，転送キューに登録します。

送信側システムAの転送キューTQ1から，受信側システムBのローカルキューLQ1にメッセージを転送する場合のあて先指定の仕組みを次の図に示します。

図2‒19　転送キューによるキュー間転送のあて先指定の仕組み

図に示すように，あて先情報テーブルには，転送先Reliable Messagingのキュー間転送用Webアプリケーションのアドレス「http://system-B/uCosminexusRM/services/HRMReceiver/」を登録します。登録したアドレスは，あて先名「SB」で識別されます。

転送キューには，あて先名「SB」と転送先のローカルキュー名「LQ1」を登録します。

この場合の実際の送信アドレスは，「http://system-B/uCosminexusRM/services/HRMReceiver/LQ1」です。

(1)　あて先アドレスの形式

送信側システムに登録するあて先アドレスは，次に示すどちらかの形式で指定してください。

http://<ホスト名>:<ポート番号>/<コンテキストルート>/services/HRMReceiver/
https://<ホスト名>:<ポート番号>/<コンテキストルート>/services/HRMReceiver/

ホスト名

受信側システムのホスト名，またはIPアドレス

ポート番号

受信側システムのHTTP(S)通信用のポート番号

コンテキストルート

受信側Reliable Messagingのキュー間転送用Webアプリケーションのコンテキストルート

サービス名：services/HRMReceiver（固定）

受信側Reliable Messagingのキュー間転送用Webアプリケーションのサービス名

(2)　注意事項

BASIC認証を使用する場合は，hrmmkaddrコマンドによるあて先アドレス登録時に，BASIC認証用のユーザ名とパスワードを設定してください。

リバースプロキシやリダイレクタ（互換機能）を使用する場合は，キュー間転送用Webアプリケーションのコンテキストルートに適切にリダイレクトされるように設定してください。

2.4.3　キュー間転送の通信モデル

Reliable Messagingがサポートする通信モデルには，次に示す二つの層があります。

アプリケーションが扱うキューの層

キューのメッセージを取り出して通信を行う通信層

ここでは通信層の詳細を説明します。

(1)　通信層のメッセージとグループ

通信層では「グループ」をメッセージ管理の単位とします。グループは，グローバルに一意の識別子を持ち，複数のメッセージが属する集合です。また，順序保証などのQoS（通信品質）を保証する範囲でもあります。

各メッセージは，グループの識別子とグループ内の通し番号によって一意に識別されます。送信側のグループは，転送キューの作成時にReliable Messagingが生成します。受信側のグループは，グループ内で最初のメッセージの受信時にReliable Messagingが生成します。

(2)　メッセージとグループの有効期間

通信層のメッセージとグループに対して有効期間を設定できます。どちらも有効期間を超過した場合の通信は失敗します。

メッセージの有効期間

メッセージの有効期間は，メッセージの送信時刻から，転送キューに指定した通信層のメッセージ有効期限に達するまでの間です。

グループの有効期間

通信で使用するグループは転送キューの作成時に生成されます。有効期間は，グループの生成時刻から，転送キューに指定したグループの有効期限に達するまでの間です。グループの有効期間に達すると，自動的に次のグループが作成されて次のグループに切り替わります。

2.4.4　キュー間転送のQoS

Reliable Messagingで保証するQoSには，配送保証と順序保証の2種類があります。

(1)　配送保証

Reliable Messagingは，受信側システムから受信の成功が通知されるまでメッセージを再送し続けることで，高信頼なキュー間転送を実現します。また，再送によって同じメッセージを複数回受信した場合も，識別子を用いてメッセージの重複を判断し，重複してキューに登録されることを防止します。

次の図は，送信側システムがA1，A2，A3のメッセージを送信し，受信側システムでキューに正常に登録できたため，A1，A2，A3の受信成功が通知された場合を示しています。1.〜5.は，処理の順序を示します。

受信成功が通知されると，送信側システムのキューのメッセージは削除されます。受信成功が一定の期間通知されない場合は，A1，A2，A3を再送します。

図2‒20　配送保証の仕組み

(2)　順序保証

順序保証が指定された転送キューから送信されたメッセージは，送信された順序で受信側システムのキューに登録します。順序どおりでないメッセージを受信した場合はメッセージを永続化して保持しておき，順序が回復した時点でキューに登録します。

次の図は，A1→A2→A3の順序で順序保証が指定されている場合の処理の仕組みを示しています。1.〜4.は，処理の順序を示します。

A1，A3の順序でメッセージを受信しましたが，A3は順序不正のためローカルキューに登録されません。その後，A2を受信した時点で，A2，A3がローカルキューに登録されます。

図2‒21　順序保証の仕組み

順序保証を行う場合の滞留メッセージの監視と，メッセージ障害時の動作について説明します。

(a)　滞留メッセージの監視

例えば図2-21で，障害などが原因でA2のメッセージが受信されない場合，A3以降のメッセージはアプリケーションに配送されないメッセージとして滞留します。この場合，A3以降のメッセージは，通信の有効期限に達してデッドメッセージキューに移動されるまで，滞留したままとなります。

この対処として，Reliable Messagingは，定期的に滞留メッセージを監視します。滞留メッセージの監視時間は，RMTRPendingNotifyIntervalプロパティに指定します。メッセージの監視中に，このプロパティに指定した時間より長く滞留しているメッセージが存在する場合は，ログを出力して通知します。

滞留したメッセージを待ち合わせる必要がない場合は，hrmskipmsgコマンドによってA2のメッセージをスキップし，A3以降のメッセージをアプリケーションに配送できます。また，スキップしたメッセージをスキップしたあとに受信すると，そのメッセージの受信は失敗します。

(b)　メッセージ障害時の動作

受信側システムから受信失敗が通知されると，送信側システムでは新しいグループで，以降のメッセージを送信します。そのため，受信側システムでは，新しいグループで送信されたメッセージがキューに登録されます。また，受信側システムで，障害が発生したグループ内のキューに登録しないで保持していたメッセージは，デッドメッセージキューに登録されます。

2.4.5　メッセージの再送

キュー間転送でメッセージを再送するときの間隔は，3種類のプロパティで指定します。Reliable Messagingは，2種類のプロパティに指定した再送間隔と，別のプロパティに指定したそれらを切り替えるタイミング（再送回数）を使用してメッセージの再送間隔を調整します。

メッセージの再送の間隔を調整するためのプロパティを次の表に示します。

表2‒3　メッセージの再送の間隔を指定するプロパティ

項番

プロパティ

意味

1

RMTRResendInterval1

再送間隔1（軽微なネットワーク障害などの短期的な障害を想定）

2

RMTRResendInterval2

再送間隔2（受信側システムのサーバダウンなどの長期的な障害を想定）

3

RMTRResendInterval1Num

再送間隔を切り替えるタイミング（RMTRResendInterval1プロパティの指定値で再送する回数）

Reliable Messagingがメッセージを再送する処理の流れは次のとおりです。

RMTRResendInterval1プロパティに指定した間隔でメッセージの再送を行います。

RMTRResendInterval1プロパティの指定値での再送を，RMTRResendInterval1Numプロパティに指定した回数分繰り返します。初回の送信は，RMTRResendInterval1Numプロパティで指定した再送回数に，1回分として含まれます。

RMTRResendInterval2プロパティに指定した間隔での再送に切り替えて，メッセージの再送を続けます。

2.4.6　キュー間転送の互換通信

送信側システムと受信側システムのReliable Messagingのバージョンの違いによって，次のようにメッセージを送受信します。

メッセージを送信する場合

受信側システムのReliable Messagingのバージョンに合わせた形式のメッセージを送信します。ユーザは受信側システムのReliable Messagingのバージョンに合わせて，送信するメッセージの形式を選択する必要があります。送信するメッセージの形式の選択については，「2.4.6(1)　送信するメッセージの形式の選択」を参照してください。

メッセージを受信する場合

送信側システムのReliable Messagingのバージョンの形式でメッセージを受信します。

Reliable Messagingのバージョンの違いによるメッセージの送受信の概要を次の図に示します。

図2‒22　Reliable Messagingのバージョンの違いによるメッセージの送受信の概要

(1)　送信するメッセージの形式の選択

送信側システムのReliable Messagingでは，受信側システムのReliable Messagingのバージョンのメッセージ形式に合わせて，次のように転送モードを選択します。

受信側システムのReliable Messagingのバージョンが01-03以降の場合

hrmmkqueコマンドで転送キューを作成する，またはhrmchgqueコマンドで転送キューの属性を変更するときに，-iオプションにnormal（通常モード）を指定します。

受信側システムのReliable Messagingのバージョンが01-02以前の場合

hrmmkqueコマンドで転送キューを作成する，またはhrmchgqueコマンドで転送キューの属性を変更するときに，-iオプションにcompatible（互換モード）を指定します。

なお，01-02以前のバージョンのReliable Messagingに対して通常モードでObjectMessageを送信した場合，ペイロードにnullが指定されたObjectMessageとして受信されます。

(2)　注意事項

(a)　01-02以前のバージョンのReliable Messagingと通信する場合

01-03以降のバージョンのReliable Messagingが01-02以前のバージョンのReliable Messagingとメッセージ送受信する場合の注意事項を次に示します。

送信側システムのReliable Messagingのバージョンが01-03以降の場合

互換モードの転送キューを使用してユーザ定義クラスを設定したObjectMessageを送信する場合は，コンテナ拡張ライブラリとしてユーザ定義クラスを指定する必要があります。

受信側システムのReliable Messagingのバージョンが01-03以降の場合

01-02以前のバージョンのReliable Messagingからユーザ定義クラスを設定したObjectMessageを受信する場合は，コンテナ拡張ライブラリとしてユーザ定義クラスを指定する必要があります。

(b)　01-03以降のバージョンのReliable Messagingと通信する場合

互換モードの転送キューを使用してユーザ定義クラスを設定したObjectMessageを送信する場合は，コンテナ拡張ライブラリとしてユーザ定義クラスを指定する必要があります。

(c)　送受信できるReliable Messagingのバージョン

送受信できるReliable Messagingのバージョンを転送モードごとに次の表に示します。

表2‒4　送受信できるReliable Messagingのバージョン

送信側システムのReliable Messagingのバージョン

転送モード

受信側システムのReliable Messagingのバージョン

01-02以前

01-03以降

01-02以前

−

△

△

01-03以降

互換モード

△

△

通常モード

×

○

（凡例）

○：送受信できます。

△：送受信できます。ただし，ユーザ定義クラスを設定したObjectMessageを送信する場合は，送信側システムおよび受信側システムでコンテナ拡張ライブラリとしてユーザ定義クラスを指定する必要があります。

×：送受信できません。

−：該当しません。

2.4.7　キュー間転送の障害時の動作

受信側システムで受信したメッセージに，致命的な障害がある場合やメッセージの有効期間を超過していた場合，Reliable Messagingは，送信側システムに受信の失敗を通知します。受信の失敗が通知されたメッセージは，送信側システムのデッドメッセージキューに登録されます。さらに，送信側システムでは新しいグループを作成し，障害以降に送信されたメッセージを新しいグループで送信します。

次の図は，送信側システムがA1，A2のメッセージを送信し，受信側システムでA2に障害が発生したため，A2の受信失敗が通知された場合を示しています。1.〜9.は，処理の順序を示します。

受信失敗が通知されると，送信側システムのA2はデッドメッセージキューに登録され，次のメッセージは新しいグループのB1として送信されます。

図2‒23　キュー間転送の障害時の動作

2.4.8　キュー間転送の注意事項

デッドメッセージキューに関する注意事項

送信側システムが送信したメッセージが，受信側システムに受信されたにもかかわらず，何らかの原因で受信成功が通知されない場合，または通知されるのが遅れた場合，そのあとに再送されたメッセージが有効期限に達していて受信失敗が送信側システムに通知されると，そのメッセージは次のように処理されることがあります。

受信側システムに受信されたメッセージが滞留していたときは，送信側システムと受信側システムの両方のデッドメッセージキューに登録される。

受信側システムに受信されたメッセージがキューに登録されていたときは，送信側システムのデッドメッセージキューに登録されているメッセージが，受信側システムで配送される。

非永続キューに関する注意事項

受信側システムのキューが非永続キューの場合，受信側システムのキューに作成されたグループは再起動時に無効になります。つまり，受信側システムのReliable Messagingが，一つでもメッセージを受信するとグループが作成されます。その後，受信側システムのReliable Messagingを再起動すると，以降再起動前に作られたグループによるメッセージの受信は失敗します。受信に失敗したメッセージは，受信の失敗を通知することによって，送信側システムのデッドメッセージキューに登録されます。登録先のデッドメッセージキューは，RMDeadMessageQueueNameプロパティで指定します。

2.4.9　SOAPプロトコル

転送キューを使用した複数システム間でのメッセージの送受信には，SOAPプロトコルをベースとするWS-Reliabilityを採用しています。メッセージの送受信にはSOAPメッセージを使います。Reliable Messagingがメッセージ送信時に設定するSOAPメッセージの構成要素およびメッセージ受信時の使用方法を次の表に示します。

表2‒5　Reliable MessagingのSOAPメッセージ使用方法

項番

構成要素名

SOAPメッセージの使用方法

送信

受信

1

SOAPエンベロープ

SOAPヘッダ

WS-Reliability1.1プロトコルのヘッダ情報を設定

WS-Reliability1.1プロトコルのヘッダ情報を取得※1

2

SOAPボディ

設定しない

無視する

3

SOAPアタッチメント

メッセージ本体※2を設定

メッセージ本体を取得

注※1

WS-Reliability以外のプロトコルのヘッダ情報が設定されていた場合，Reliable Messagingはそのプロトコルのヘッダ情報を無視します。

注※2

メッセージ本体は，Reliable Messaging固有のメッセージオブジェクトをシリアライズしたデータ，またはプリミティブなバイト配列で設定されています。

Reliable Messagingで扱うSOAPメッセージの構成を次の図に示します。

図2‒24　SOAPメッセージの構成

2.5　メッセージの構成

Reliable Messagingのアプリケーションが送受信するメッセージは，JMSメッセージの形式に従います。JMSメッセージはMessageインタフェースをルートインタフェースとするオブジェクトです。

Reliable Messagingで使用するメッセージの構成について説明します。

2.5.1　JMSメッセージの構成

Reliable Messagingは，JMSメッセージを送受信することでアプリケーション連携します。JMSメッセージは，ヘッダ，プロパティおよびペイロードの三つの要素で構成されます。

JMSメッセージの構成を次の図に示します。

図2‒25　JMSメッセージの構成

(1)　JMSメッセージのヘッダ

JMSメッセージのヘッダは，アプリケーションやシステムに，メッセージのあて先や識別子などの制御情報を提供するためのフィールドです。

ヘッダの一覧を次の表に示します。

表2‒6　ヘッダの一覧

項番

ヘッダ

型

説明

1

JMSDestination

javax.jms.Destination

メッセージが送信されるあて先です。

2

JMSDeliveryMode

int

メッセージの永続性を示す値です。

3

JMSMessageID

java.lang.String

プロバイダによって送信される各メッセージを一意に識別するメッセージ識別子です。このヘッダの値はRMSystemNameプロパティ指定値と現在時刻および通番によって構成されます。

RMSystemNameプロパティ指定値によって，JMSMessageIDの一意性は，Reliable Messagingをわたります。

4

JMSTimestamp

long

メッセージの送信時刻を表す値（単位：ミリ秒）です。値はミリ秒で測定した現在時刻と協定世界時のUTC1970年1月1日午前0時との差です。

なお，メッセージのトランザクションやそのほかの受信側のキューイングによって実際の送信はあとから行われるため，メッセージが実際に送信された時刻ではありません。

5

JMSExpiration

long

メッセージの有効期間となる時刻を表す値（単位：ミリ秒）です。値はミリ秒で測定した現在時刻と協定世界時のUTC1970年1月1日午前0時との差です。

このヘッダの値はhrmmkqueコマンドの-eオプション指定値を基に決定されます。

6

JMSRedelivered

boolean

メッセージが再配送中であるかどうかを示す値です。値がtrueのとき，メッセージが再配送中であることを示します。

7

JMSPriority

int

メッセージのプライオリティです。JMSはいちばん低い優先度の0からいちばん高い優先度の9まで，10のレベルのプライオリティを定義しています。

8

JMSReplyTo

javax.jms.Destination

応答先のあて先です。このヘッダが設定されたメッセージを受信したアプリケーションが，該当するあて先へメッセージを送信するかどうかは任意です。

9

JMSCorrelationID

java.lang.String

あるメッセージをほかのメッセージと関連づけるための相関識別子です。一般的には，応答メッセージをその要求メッセージと関連づけるために参照されます。

10

JMSType

java.lang.String

メッセージが送信されるときに，アプリケーションによって提供されるメッセージタイプです。

ヘッダの設定タイミングと取得タイミングを次の表に示します。

表2‒7　ヘッダの設定タイミングと取得タイミング

項番

ヘッダ

設定タイミング

取得タイミング※

1

JMSDestination

QueueSession.createSender(Queue queue)メソッド発行時に，指定したキューの名前が設定されます。

Message.setJMSDestination()メソッドでこのヘッダを設定できません。

メッセージ送信完了後に取得できます。

2

JMSDeliveryMode

メッセージ送信時にReliable Messagingがhrmmkqueコマンドの-mオプション指定値に従って設定します。

Message.setJMSDeliveryMode()メソッドでこのヘッダを設定できません。

メッセージ受信後に取得できます。

3

JMSMessageID

メッセージ送信時にReliable Messagingが設定します。また，デッドメッセージ再登録時にReliable Messagingが再設定します。

Message.setJMSMessageID()メソッドでこのヘッダを設定できません。

メッセージ送信完了後に取得できます。

4

JMSTimestamp

メッセージ送信時にReliable Messagingが設定します。また，デッドメッセージ再登録時にReliable Messagingが再設定します。

Message.setJMSTimestamp()メソッドでこのヘッダを設定できません。

メッセージ送信完了後に取得できます。

5

JMSExpiration

送信側と受信側で，設定のタイミングが異なります。

送信側の場合，メッセージ送信時にReliable Messagingがキュー属性（メッセージ有効期間）に従って設定します。また，デッドメッセージの再登録時にReliable Messagingが登録するキューの属性（メッセージ有効期間）に従って再設定します。

キュー間転送を実施する場合，受信側では，受信側ローカルキューの属性の設定によって次のように異なります。

メッセージ有効期間の選択が受信側となっている場合は，受信側のキュー属性（メッセージ有効期間）に従って再設定されます。

メッセージ有効期間の選択が送信側となっている場合は，送信側で設定された値となり，受信側では再設定しません。

なお，MessageインタフェースのsetJMSExpirationメソッドでは，このヘッダの値を設定できません。setJMSExpirationメソッドの詳細については「7.4.4　Messageインタフェース」を参照してください。

メッセージ送信完了後に取得できます。

6

JMSRedelivered

メッセージをアプリケーションに配送したが，リカバーされたなどでもう一度配送する必要があるときにtrueに設定されます。

Message.setJMSRedelivered()メソッドでこのヘッダを設定できません。

Reliable Messagingを再度開始すると，falseに設定されます。

メッセージ受信後に取得できます。

7

JMSPriority

QueueSender.setPriority()メソッドまたはQueueSender.send()メソッドで指定したpriorityの値が設定されます。両方のメソッドでpriorityが指定されている場合は，QueueSender.send()メソッドで指定した値が優先されます。

Message.setJMSPriority()メソッドでこのヘッダを設定できません。

メッセージ送信完了後に取得できます。

8

JMSReplyTo

Message.setJMSReplyTo()メソッド発行時に，指定値が設定されます。設定は任意です。

受信側からのメッセージ返信を必要とする場合，送信側のユーザがこのヘッダにあて先を設定します。

設定タイミング後に取得できます。

9

JMSCorrelationID

Message.setJMSCorrelationID()メソッド発行時に，指定値が設定されます。設定は任意です。

設定タイミング後に取得できます。

10

JMSType

Message.setJMSType()メソッド発行時に，指定値が設定されます。設定は任意です。

設定タイミング後に取得できます。

注※

表中に示したタイミング以外でヘッダの値を取得した場合，ヘッダが設定されていないときの値が返されます。詳細については，「7.4.4　Messageインタフェース」を参照してください。

ObjectMessage（ペイロードにBytesContainerを含む）を送受信した場合のヘッダの設定タイミングと取得タイミングを次の表に示します。

表2‒8　ObjectMessage（ペイロードにBytesContainerを含む）を送受信した場合のヘッダの設定タイミングと取得タイミング

項番

ヘッダ

設定タイミング

取得タイミング※

1

JMSDestination

QueueSession.createSender(Queue queue)メソッド発行時に，指定したキューの名前が設定されます。

Message.setJMSDestination()メソッドでこのヘッダを設定できません。

送信側ではメッセージ送信完了後に取得できます。受信側では取得できません。

2

JMSDeliveryMode

メッセージ送信時にReliable Messagingがhrmmkqueコマンドの-mオプション指定値に従って設定します。

Message.setJMSDeliveryMode()メソッドでこのヘッダを設定できません。

メッセージ受信後に取得できます。

3

JMSMessageID

メッセージ送信時にReliable Messagingが設定します。また，デッドメッセージ再登録時にReliable Messagingが再設定します。

Message.setJMSMessageID()メソッドでこのヘッダを設定できません。

送信側ではメッセージ送信完了後に取得できます。受信側では取得できません。

4

JMSTimestamp

メッセージ送信時にReliable Messagingが設定します。また，デッドメッセージ再登録時にReliable Messagingが再設定します。

Message.setJMSTimestamp()メソッドでこのヘッダを設定できません。

送信側ではメッセージ送信完了後に取得できます。受信側では取得できません。

5

JMSExpiration

送信側ではメッセージ送信時にReliable Messagingがキュー属性（メッセージ有効期間）に従って設定します。ローカルキュー送信の場合も同様です。また，デッドメッセージの再登録時にReliable Messagingが登録するキューの属性（メッセージ有効期間）に従って再設定します。

キュー間転送を実施した場合，受信側では，受信側ローカルキューの属性の設定によって次のように異なります。

メッセージ有効期間の選択が受信側となっている場合は，受信側のキュー属性（メッセージ有効期間）に従って設定されます。

メッセージ有効期間の選択が送信側となっている場合は，WS-Reliability電文のExpiryTimeタグと同じ値が設定されます。

キュー間転送の場合，送信側ではメッセージ送信完了後に取得できます。受信側では別の値が取得できます。

6

JMSRedelivered

メッセージをアプリケーションに配送したが，リカバーされたなどでもう一度配送する必要があるときにtrueに設定されます。

Message.setJMSRedelivered()メソッドでこのヘッダを設定できません。

Reliable Messagingを再度開始すると，falseに設定されます。

メッセージ受信後に取得できます。

7

JMSPriority

送信側ではQueueSender.setPriority()メソッドまたはQueueSender.send()メソッドで指定したpriorityの値が設定されます。両方のメソッドでpriorityが指定されている場合は，QueueSender.send()メソッドで指定した値が優先されます。

キュー間転送を実施した場合，受信側で受信メッセージが永続される前に，デフォルト値が設定されます。

Message.setJMSPriority()メソッドでこのヘッダを設定できません。

キュー間転送の場合，送信側ではメッセージ送信完了後に取得できます。受信側では別の値が取得できます。

8

JMSReplyTo

Message.setJMSReplyTo()メソッド発行時に，指定値が設定されます。設定は任意です。

受信側からのメッセージ返信を必要とする場合，送信側のユーザがこのヘッダにあて先を設定します。

送信側では設定タイミング後に取得できます。受信側では取得できません。

9

JMSCorrelationID

Message.setJMSCorrelationID()メソッド発行時に，指定値が設定されます。設定は任意です。

送信側では設定タイミング後に取得できます。受信側では取得できません。

10

JMSType

Message.setJMSType()メソッド発行時に，指定値が設定されます。設定は任意です。

送信側では設定タイミング後に取得できます。受信側では取得できません。

注※

表中に示したタイミング以外でヘッダの値を取得した場合，ヘッダが設定されていないときの値が返されます。詳細については，「7.4.4　Messageインタフェース」を参照してください。

(2)　JMSメッセージのプロパティ

JMSメッセージのプロパティは，ヘッダに追加する制御情報が格納されたフィールドです。次に示す種類があります。

JMS定義のプロパティ

JMSが定義するプロパティです。これらのプロパティの完全なセットは，JMS仕様で定義されています。

半角英字だけで定義され，大文字と小文字は区別されます。

Reliable Messaging固有のプロパティ

Reliable Messagingが独自に提供するプロパティです。

半角英字だけで定義され，大文字と小文字は区別されます。

アプリケーション指定のプロパティ

ユーザが必要に応じて定義するプロパティです。ただし，使用できるプロパティ名には制限があります。

プロパティ名には半角および全角を使用できます。また，大文字と小文字は区別されます。

(a)　JMS定義のプロパティ

JMS定義のプロパティの一覧を次の表に示します。

表2‒9　JMS定義のプロパティの一覧

項番

プロパティ

型

説明

1

JMSXUserID

java.lang.String

メッセージを送信するユーザのユーザ識別子です。

このプロパティは未サポートです。

2

JMSXAppID

java.lang.String

メッセージを送信するアプリケーションのアプリケーション識別子です。

このプロパティは未サポートです。

3

JMSXConsumerTXID

java.lang.String

メッセージが受信および承認されたトランザクションのトランザクション識別子です。

このプロパティは未サポートです。

4

JMSXProducerTXID

java.lang.String

メッセージが生成されたトランザクションのトランザクション識別子です。

このプロパティは未サポートです。

5

JMSXRcvTimestamp

long

メッセージがコンシューマに配送された配送時刻です。

時刻の値はミリ秒で測定した現在時刻と協定世界時のUTC1970年1月1日午前0時との差です。

6

JMSXDeliveryCount

int

メッセージ配送回数です。

7

JMSXState

int

コンシューマから送信されたメッセージの各コピーの状態を示す値です。

このプロパティは未サポートです。

8

JMSXGroupID

java.lang.String

メッセージが属しているグループのグループ識別子です。

9

JMSXGroupSeq

int

メッセージが属しているグループのシーケンス番号です。

JMS定義のプロパティの設定タイミングと取得タイミングを次の表に示します。

表2‒10　JMS定義のプロパティの設定タイミングと取得タイミング

項番

プロパティ

設定タイミング

取得タイミング

1

JMSXUserID

−

−

2

JMSXAppID

−

−

3

JMSXConsumerTXID

−

−

4

JMSXProducerTXID

−

−

5

JMSXRcvTimestamp

メッセージをコンシューマに配送した際に，Reliable Messagingが設定します。

メッセージ受信後に取得できます。

6

JMSXDeliveryCount

メッセージ承認時にReliable Messagingが設定します。Reliable Messagingを再度開始すると，この値は0に設定されます。

メッセージ受信後に取得できます。

7

JMSXState

−

−

8

JMSXGroupID

Message.setStringProperty("JMSXGroupID", groupID)またはsetObjectProperty("JMSXGroupID", groupID)メソッド発行時に，指定したgroupIDの値が設定されます。設定は任意です。ユーザが設定できる文字数は半角全角を問わないで512文字以下です。

設定タイミング後に取得できます。

9

JMSXGroupSeq

Message.setIntProperty("JMSXGroupSeq", seq)メソッド発行時に，指定したseqの値が設定されます。設定は任意です。

ユーザが設定できる値は0以上です。

設定タイミング後に取得できます。

（凡例）

−：未サポートのため該当しません。

また，ObjectMessage（ペイロードにBytesContainerを含む）を送受信した場合のJMS定義のプロパティの設定タイミングと取得タイミングを次の表に示します。

表2‒11　ObjectMessage（ペイロードにBytesContainerを含む）を送受信した場合のJMS定義のプロパティの設定タイミングと取得タイミング

項番

プロパティ

設定タイミング

取得タイミング

1

JMSXUserID

−

−

2

JMSXAppID

−

−

3

JMSXConsumerTXID

−

−

4

JMSXProducerTXID

−

−

5

JMSXRcvTimestamp

メッセージをコンシューマに配送した際に，Reliable Messagingが設定します。

メッセージ受信後に取得できます。

6

JMSXDeliveryCount

メッセージ承認時にReliable Messagingが設定します。Reliable Messagingを再度開始すると，この値は0に設定されます。

メッセージ受信後に取得できます。

7

JMSXState

−

−

8

JMSXGroupID

Message.setStringProperty("JMSXGroupID", groupID)またはsetObjectProperty("JMSXGroupID", groupID)メソッド発行時に，指定したgroupIDの値が設定されます。設定は任意です。ユーザが設定できる文字数は半角全角を問わないで512文字以下です。

送信側では設定タイミング後に取得できます。受信側では取得できません。

9

JMSXGroupSeq

Message.setIntProperty("JMSXGroupSeq", seq)メソッド発行時に，指定したseqの値が設定されます。設定は任意です。

ユーザが設定できる値は0以上です。

送信側では設定タイミング後に取得できます。受信側では取得できません。

（凡例）

−：未サポートのため該当しません。

(b)　Reliable Messaging固有のプロパティ

Reliable Messaging固有のプロパティの一覧を次の表に示します。

表2‒12　Reliable Messaging固有のプロパティの一覧

項番

プロパティ

型

説明

1

JMS_HITACHI_DeadMessageTimestamp

long

メッセージがデッドメッセージキューに移動された時刻を示す値（単位：ミリ秒）です。

時刻の値はミリ秒で測定した現在時刻と協定世界時のUTC1970年1月1日午前0時との差です。

2

JMS_HITACHI_DeadMessageCause

java.lang.String

メッセージがデッドメッセージキューに移動された原因を示す文字列※です。

3

JMS_HITACHI_DeadMessageOriginalQueueName

java.lang.String

メッセージがデッドメッセージキューに移動される前に保存されていたキュー名です。

4

JMS_HITACHI_DeadMessageID

java.lang.String

デッドメッセージを一意に識別するための値です。このプロパティの値は，コンフィグレーションプロパティのRMSystemNameプロパティの値と現在時刻および通番によって決定されます。

5

JMS_HITACHI_UnitID

java.lang.String

パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）で利用するユニット識別子の値です。このプロパティの値は，ユーザがアプリケーションで送信するメッセージに対して設定します。

注※

次の表に示す文字列のどれかが設定されます。

表2‒13　デッドメッセージキューに移動された原因を示す文字列

項番

文字列

説明

1

DMQCAUSE-001

メッセージが有効期限に達しました。

2

DMQCAUSE-002

メッセージの配送回数が最大値に達しました。

3

DMQCAUSE-003

順序制御のために滞留しているメッセージが有効期限に達しました。または，滞留しているメッセージの属しているグループが閉鎖しました。

4

DMQCAUSE-004

メッセージの受信に失敗した通知を受け取りました。

Reliable Messaging固有のプロパティ固有のプロパティの設定タイミングと取得タイミングを次の表に示します。

表2‒14　Reliable Messaging固有のプロパティの設定タイミングと取得タイミング

項番

プロパティ

設定タイミング

取得タイミング

1

JMS_HITACHI_DeadMessageTimestamp

メッセージがデッドメッセージキューに保存される際に，Reliable Messagingが設定します。

なお，デッドメッセージが再登録される際に削除します。

デッドメッセージキューからメッセージを受信したあとで取得できます。

2

JMS_HITACHI_DeadMessageCause

メッセージがデッドメッセージキューに保存される際に，Reliable Messagingが設定します。

なお，デッドメッセージが再登録される際に削除します。

デッドメッセージキューからメッセージを受信したあとで取得できます。

3

JMS_HITACHI_DeadMessageOriginalQueueName

メッセージがデッドメッセージキューに保存される際に，Reliable Messagingが設定します。

なお，デッドメッセージが再登録される際に削除します。

デッドメッセージキューからメッセージを受信したあとで取得できます。

4

JMS_HITACHI_DeadMessageID

メッセージがデッドメッセージキューに保存される際に，Reliable Messagingが設定します。なお，デッドメッセージが再登録される際に削除します。

デッドメッセージキューからメッセージを受信したあとで取得できます。

5

JMS_HITACHI_UnitID

ユーザがMessage.setStringProperty("JMS_HITACHI_UnitID", unitID)メソッド発行時に，指定したunitIDの値が設定されます。設定は任意です。ユーザが設定できる文字数は半角全角を問わないで512文字以下です。

設定タイミング後に取得できます。

(c)　アプリケーション指定のプロパティ

ユーザが必要に応じて定義するプロパティです。

ユーザは，メッセージインタフェースのset<型名>Property()メソッドのname引数に任意のプロパティ名を指定してプロパティに値を設定します。get<型名>Property()メソッドのname引数にsetメソッドと同じ名前を指定してプロパティから値を取得します。

プロパティ名はユーザの実装に依存します。ただし，次に示す名前は使用できません。

JMS定義のプロパティが使用する接頭語（JMSX）で始まるプロパティ名

Reliable Messaging固有のプロパティが使用する接頭語（JMS_）で始まるプロパティ名

メッセージセレクタで使用する予約語（NOT，AND，OR，BETWEEN，LIKE，IN，IS，NULL，TRUEおよびFALSE）と同じプロパティ名

(d)　プロパティの型変換

Reliable Messaging固有のプロパティとアプリケーション指定のプロパティに設定できる型は，boolean，byte，short，int，long，float，doubleおよびStringです。書き込まれたときと異なる型でプロパティを読み取る場合，型は変換されます。

プロパティの型変換を次の表に示します。

表2‒15　プロパティの型変換

書き込み時の型

読み取り時の型

boolean

byte

short

int

long

float

double

String

boolean

○

○

byte

○

○

○

○

○

short

○

○

○

○

int

○

○

○

long

○

○

float

○

○

○

double

○

○

String

○

○

○

○

○

○

○

○

（凡例）

○：型が変換されます。

空白：型が変換されません。読み取り時にJMSException（MessageFormatException）が発生します。

注

String型で書き込まれた文字列をString以外の型に変換して読み取る場合，書き込まれた文字列を，変換後の型でラッパークラスのvalueOfメソッドによって解釈できないとき，java.lang.NumberFormatExceptionが発生します。

(3)　JMSメッセージのペイロード

JMSメッセージのペイロードは，メッセージ本体のフィールドです。

Reliable Messagingは，次に示すメッセージインタフェースを提供します。各メッセージインタフェースのペイロードを次の表に示します。

表2‒16　メッセージインタフェースのペイロード

項番

インタフェース名

ペイロードの説明

1

Message

ペイロードがありません。

2

BytesMessage

ペイロードがプリミティブなバイトの配列です。

3

ObjectMessage※

ペイロードがシリアライズできるJavaオブジェクトです（BytesContainerおよびユーザが定義したクラスのオブジェクトを格納できます）。

4

TextMessage

ペイロードがjava.lang.String型です。

注※

非永続版リソースアダプタの場合，ObjectMessageのペイロードにBytesContainerは格納できません。

(a)　ObjectMessageのペイロードにBytesContainerを格納する場合

永続版リソースアダプタの場合，ObjectMessageオブジェクトのsetObjectメソッドの引数にBytesContainerオブジェクトを指定することで，BytesContainerを含むObjectMessageを送信できます。詳細は「7.7　転送データ相互接続用インタフェースの使い方」を参照してください。

(b)　ObjectMessageのペイロードにユーザが定義したクラスのオブジェクトを格納する場合

ObjectMessageのペイロードにユーザが定義したクラスのオブジェクトを格納する場合は，送受信するアプリケーションにユーザが定義したクラスを含める必要があります。アプリケーションにユーザが定義したクラスを含めない場合は，Application ServerのJ2EEサーバ用オプション定義ファイルにユーザが定義したクラスまたはクラスが含まれるJARのクラスパスを，コンテナ拡張ライブラリとして指定する必要があります。

これらの設定や指定をしていない場合，取り出したメッセージからペイロードを取得するときに例外が発生します。ペイロードの取得で例外が発生した場合でも，取り出したメッセージのトランザクションが決着すると，メッセージが配信済みになるので注意してください。

また，Reliable Messaging 01-02以前でキューに登録したメッセージを移行した場合や，Reliable Messaging 01-02以前とキュー間転送する場合も，Application ServerのJ2EEサーバ用オプション定義ファイルにユーザが定義したクラスまたはクラスが含まれるJARのクラスパスを，コンテナ拡張ライブラリとして指定する必要があります。

Application ServerのJ2EEサーバ用オプション定義ファイル（usrconf.cfg）は，次に示す場所に格納されています。

<Application Serverのインストールディレクトリ>¥CC¥server¥usrconf¥ejb¥<サーバ名>¥usrconf.cfg

usrconf.cfgファイルをテキストエディタで開き，次の行を追加します。

add.class.path=<コンテナ拡張ライブラリ用のclassまたはJARのクラスパス>

J2EEサーバ用オプション定義ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

2.5.2　メッセージ要素のアクセスモード

JMSメッセージのメッセージ要素（ヘッダ，プロパティ，およびペイロード）の値を取得したり，設定したりするには，メッセージインタフェースが提供するメソッドを使用します。各要素には，次に示すアクセスモードがあります。

読み取り書き込み両用モード（Read／Write mode）

読み取りも書き込みもできるモードです。ヘッダ，プロパティおよびペイロードで発生するモードです。

読み取り専用モード（Read Only mode）

情報の読み取りだけができるモードです。このモードのときにメッセージ要素に情報を書き込もうとするとMessageNotWriteableExceptionが発生します。プロパティとペイロードで発生するモードです。

書き込み専用モード（Write Only mode）

情報の書き込みだけができるモードです。このモードのときにメッセージ要素から情報を読み取ろうとするとMessageNotReadableExceptionが発生します。ペイロードで発生するモードです。

メッセージ要素とアクセスモードの関係を次の表に示します。

表2‒17　メッセージ要素とアクセスモードの関係

項番

メッセージ要素

読み取り書き込み両用モード

読み取り専用モード

書き込み専用モード

1

ヘッダ

○

×

×

2

プロパティ

○

○

×

3

ペイロード

○

○

○

（凡例）

○：あります。

×：ありません。

(1)　メッセージ生成時のアクセスモード

メッセージインタフェースのインスタンスは，次に示すメソッドの発行によって生成します。

QueueSession.createMessage()メソッド：Messageインタフェースの場合

QueueSession.createBytesMessage()メソッド：BytesMessageインタフェースの場合

QueueSession.createObjectMessage()メソッド：ObjectMessageインタフェースの場合

QueueSession.createTextMessage()メソッド：TextMessageインタフェースの場合

メッセージ生成時のメッセージ要素のアクセスモードを次の表に示します。

表2‒18　メッセージ生成時のメッセージ要素のアクセスモード

項番

インタフェース

メッセージ要素

モード

1

Message

ヘッダ

読み取り書き込み両用モード

2

プロパティ

3

BytesMessage

ヘッダ

読み取り書き込み両用モード

4

プロパティ

5

ペイロード

書き込み専用モード

6

ObjectMessage

ヘッダ

読み取り書き込み両用モード

7

プロパティ

8

ペイロード

9

TextMessage

ヘッダ

10

プロパティ

11

ペイロード

(2)　メッセージ受信時のアクセスモード

受信側アプリケーションは，QueueReceiver.receive()またはreceiveNoWait()メソッドの戻り値として，メッセージを受信します。

メッセージ受信時のメッセージ要素のアクセスモードを次の表に示します。

表2‒19　メッセージ受信時のメッセージ要素のアクセスモード

項番

インタフェース

メッセージ要素

モード

1

Message

ヘッダ

読み取り書き込み両用モード

2

プロパティ

読み取り専用モード

3

BytesMessage

ヘッダ

読み取り書き込み両用モード

4

プロパティ

読み取り専用モード

5

ペイロード

6

ObjectMessage

ヘッダ

読み取り書き込み両用モード

7

プロパティ

読み取り専用モード

8

ペイロード

9

TextMessage

ヘッダ

読み取り書き込み両用モード

10

プロパティ

読み取り専用モード

11

ペイロード

また，メッセージ要素のアクセスモードは，メッセージ受信後に特定のタイミングによって移行することがあります。アクセスモードが移行するタイミングを次の表に示します。

表2‒20　アクセスモードが移行するタイミング

項番

タイミング

メッセージ要素

移行前

移行後

1

Message.clearProperties()メソッドの発行

プロパティ

読み取り専用モード

読み取り書き込み両用モード

2

ObjectMessage.clearBody()メソッドの発行

TextMessage.clearBody()メソッドの発行

ペイロード

3

BytesMessage.clearBody()メソッドの発行

書き込み専用モード

4

BytesMessage.reset()メソッドの発行

書き込み専用モード

読み取り専用モード

2.5.3　メッセージとキューの関係

Reliable Messagingのキューは，種類によって格納できるメッセージインタフェースが異なります。また，キュー作成時の指定値によってメッセージの管理方法が異なります。

(1)　メッセージインタフェースとキューの種類

使用するメッセージインタフェースによって，そのメッセージを格納できるキューの種類は異なります。

メッセージインタフェースと格納できるキューの種類を次の表に示します。

表2‒21　メッセージインタフェースと格納できるキューの種類

項番

インタフェース

格納できるキューの種類

1

Message

ローカルキュー

転送キュー

2

BytesMessage

ローカルキュー

転送キュー

送信用共用キュー（ただし，ペイロードだけ）

受信用共用キュー（ただし，ペイロードだけ）

3

ObjectMessage

ローカルキュー※

転送キュー

4

TextMessage

ローカルキュー

転送キュー

注※

BytesContainerをObjectMessageのペイロードに設定して送信する処理では，ペイロードに設定したBytesContainerのデータだけを送信します。

(2)　キュー作成時の指定値とメッセージのヘッダ

キューの作成は，永続版リソースアダプタの場合と非永続版リソースアダプタの場合とで作成方法が異なります。

永続版リソースアダプタの場合

hrmmkqueコマンドによって作成されます。

非永続版リソースアダプタの場合

キュー定義文（定義の先頭にhrmmkqueを記述）を指定して，キュー作成ファイルを作成します。キュー作成ファイルに指定されたキュー定義文を基に，Reliable Messaging開始時にローカルキューが作成されます。

作成時の指定値によって，そのキューに格納されるメッセージの管理方法は異なります。

特に，次に示すオプション指定値はメッセージのヘッダに影響します。

キューの永続性（永続版リソースアダプタの場合，-mオプション指定値）

送信されたメッセージが永続キュー属性のキューに登録されるとき，そのメッセージは永続メッセージになります。アプリケーションが永続メッセージを受信するとき，メッセージのJMSDeliveryModeヘッダはDeliveryMode.PERSISTENTに設定されています。

送信されたメッセージが非永続キュー属性のキューに登録されるとき，そのメッセージは非永続メッセージになります。アプリケーションが非永続メッセージを受信するとき，メッセージのJMSDeliveryModeヘッダはDeliveryMode.NON_PERSISTENTに設定されています。

なお，非永続版リソースアダプタの場合は，非永続メッセージしか扱いません。そのため，作成されるキューは非永続キュー属性のキューだけになります。

永続メッセージと非永続メッセージが，各属性のキューでどのように管理されるかについては，「2.3.1　キューの永続性」を参照してください。

メッセージの有効期間（-eオプション指定値）

送信されたメッセージがキューに登録されるとき，メッセージの有効期間が秒単位で設定されます。アプリケーションがメッセージを受信するとき，メッセージのJMSExpirationヘッダに有効期間が設定されています。

有効期間が指定されたメッセージが，どのように管理されるかについては，「2.3.5　メッセージの有効期間」を参照してください。

2.5.4　メッセージサイズを見積もる方法

Reliable Messagingで送受信するメッセージのメッセージサイズを見積もるための計算式は次のとおりです。

ローカルキューまたは転送キューを使用する場合

7500＋N＋M＋L＋S（単位：バイト）

N＝ユーザが設定できるJMSヘッダの設定サイズ

設定するヘッダによって，次の値を加算します。

JMSReplyTo：シリアライズしたオブジェクトのサイズ

JMSCorrelationID：半角文字数＋全角文字数×3

JMSType：半角文字数＋全角文字数×3

M＝JMS定義プロパティの設定サイズ

設定するプロパティによって，次の値を加算します。

JMSXGroupID：半角文字数＋全角文字数×3

JMSXGroupSeq：100

L＝l＋m

l：ユーザ定義プロパティ名のサイズ（（半角文字数＋全角文字数×3）×プロパティ数）

m：ユーザ定義プロパティ値のサイズ

プロパティの型によって，次の値を加算します。

java.lang.String：（半角文字数＋全角文字数×3）×プロパティ数

java.lang.String以外：100×プロパティ数

S＝JMSメッセージのペイロード設定サイズ

メッセージインタフェースによって，次の値を加算します。

TextMessage：半角文字数＋全角文字数×3

BytesMessage：半角文字数＋全角文字数×2

ObjectMessage：シリアライズしたオブジェクトのサイズ

共用キューを使用する場合

1500＋半角文字数＋全角文字数×2（単位：バイト）

2.6　アプリケーションからのメッセージ操作

Reliable Messagingのアプリケーションは，JMSインタフェースまたは転送データ相互接続用インタフェースを使用してメッセージを操作します。ここでは，アプリケーション作成時に留意しなくてはならない点について説明します。

2.6.1　メッセージの受信制御

アプリケーションが複数のメッセージを受信するとき，メッセージの受信順序はプライオリティ，FIFOおよびメッセージセレクタによって決定されます。

プライオリティでの順序

送信側アプリケーションがQueueSender.setPriority()またはsend()メソッドで設定したプライオリティの高い順で，受信側アプリケーションはメッセージを受信します。同じプライオリティのメッセージはFIFOでの順序で受信します。

FIFOでの順序

送信側アプリケーションがすべてのメッセージにプライオリティを設定しなかった場合，またはすべてのメッセージに同じプライオリティを設定した場合，受信側アプリケーションは，メッセージが送信またはコミットされた順序で受信します。

ただし，送信側アプリケーションが複数のスレッドから同時に同じキューにメッセージを送信した場合，メッセージを受信する順序は保証されません。

メッセージセレクタでの順序

受信側アプリケーションがメッセージセレクタを指定すると，キューに登録されたメッセージの中から，特定の条件に合うメッセージだけを受信できます。複数のメッセージが条件に合う場合は，プライオリティでの順序またはFIFOでの順序でメッセージを受信できます。

メッセージセレクタについては，「2.6.2　メッセージセレクタ」を参照してください。

2.6.2　メッセージセレクタ

QueueSession.createReceiver()またはcreateBrowser()メソッドの引数に，メッセージセレクタを指定できます。メッセージセレクタは，受信するメッセージの条件を指定するためのjava.lang.String型の構文です。受信側アプリケーションはメッセージセレクタを使用することによって，構文の条件に合うヘッダおよびプロパティの値を持つメッセージをキューから受信できます。

注意

受信用共用キューからメッセージを受信または閲覧する場合は，メッセージセレクタは使用できません。

メッセージセレクタには，識別子，比較演算子，リテラルおよび論理演算子を組み合わせた構文を指定します。

(1)　識別子

次に示す識別子を指定できます。識別子は半角英字であり，大文字と小文字が区別されます。

不正な識別子を指定した場合はInvalidSelectorExceptionが発生します。

ヘッダのJMSCorrelationID

プロパティのJMSXGroupID

プロパティのJMSXGroupSeq

(2)　比較演算子

等号（=）だけを指定できます。比較演算子は半角記号です。

不正な比較演算子を指定した場合はInvalidSelectorExceptionが発生します。

(3)　リテラル

指定できるリテラルは識別子によって異なります。各識別子に指定できるリテラルを次に示します。

不正なリテラルを指定した場合はInvalidSelectorExceptionが発生します。

ヘッダのJMSCorrelationIDまたはプロパティのJMSXGroupIDの場合

文字列リテラルを指定できます。

文字列リテラルはアポストロフィ（'）で囲んでください。文字列リテラルにアポストロフィ（'）を含む場合はアポストロフィ（'）を二つ記述します。例えば"literal's"を指定する場合は，次に示すとおり記述します。

'literal''s'

プロパティのJMSXGroupSeqの場合

厳密な数値リテラルを指定できます。

数値リテラルは半角数字と半角記号です。intの範囲の値を指定できます。0以上の整数値（57，＋62など）を指定してください。負数は指定しないでください。

(4)　論理演算子

ANDだけを指定できます。論理演算子は半角英字であり，大文字だけを指定できます。

JMSXGroupIDについての式とJMSXGroupSeqについての式の組み合わせだけが有効で，論理演算子の前後には空白が必要です。

ORやNOTを使用したり，JMSCorrelationIDについての式が含まれる場合はInvalidSelectorExceptionが発生します。

(5)　指定できる構文の例

メッセージセレクタに指定できる構文の例を次に示します。

JMSCorrelationID = 'aaa'
JMSXGroupID = 'bbb'
JMSXGroupSeq = 1
JMSXGroupID = 'bbb' AND JMSXGroupSeq = 2
JMSXGroupSeq = 3 AND JMSXGroupID = 'ccc'

2.6.3　Message-driven Beanとの連携

受信用のキューにメッセージが登録されたことを契機に，Message-driven Beanを実装したアプリケーションはメッセージの配信を受けることができます。

メッセージの配信を受けるには，アプリケーションで次に示すインタフェースを実装するクラスを定義し，MessageListenerのonMessage()メソッドをオーバライドしてください。

javax.ejb.MessageDrivenBean

javax.jms.MessageListener

キューにメッセージが登録されると，それを契機にReliable MessagingはonMessage()メソッドを呼び出し，その引数としてメッセージを渡します。ユーザはonMessage()メソッドの内部を実装し，業務に合わせてメッセージを処理するコードを作成してください。

Message-driven Bean実装時の注意事項については，マニュアル「アプリケーションサーバ アプリケーション開発ガイド」を参照してください。また，キューのリファレンスの解決方法については，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

2.6.4　共用キューでのメッセージ受信時の処理の流れ

共用キューを使用して複数システム間でのアプリケーション連携をする場合について，メッセージ受信の処理の流れを説明します。

共用キューを使用して複数システム間でのアプリケーション連携をする場合に受信側アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行してメッセージを受信するには，Reliable Messaging内部で受信準備を完了しておく必要があります。受信準備はイベントの受信，またはリカバリスレッドでのメッセージ登録の検出を契機として開始されます。

共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信処理の流れを次の図に示します。

図2‒26　共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信処理の流れ

図中の番号について，説明します。

イベントの送信

送信側システムは送信用共用キューへのメッセージ登録が完了したあと，受信側システムにイベントを送信します。

送信時のあて先として受信用共用キューに定義されているホスト名とポート番号が使用されます。

イベントの受信

イベントを受信した受信側システムでは，Reliable Messagingが受信準備を開始します。受信準備では，DBにアクセスしてメッセージオブジェクトを生成したり，トランザクションの制御元にメッセージの有効化を連絡したりします。

受信用共用キューを使用する場合にはRMSHConnectFlagプロパティにtrueを指定してください。また，RMSHPortプロパティにイベントを受信するためのポート番号を指定してください。

リカバリスレッドでのメッセージの検出

イベントの受信に失敗したときのために，Reliable Messagingは内部にリカバリスレッドを動作させています。リカバリスレッドはRMSHRecoveryTimerIntervalプロパティ指定値（単位：秒）で自システムの受信用共用キューを監視します。メッセージが登録されていても受信準備が開始されていないキューを検出すると，準備処理が開始されます。

アプリケーションでのメッセージの受信

受信準備が完了したあと，アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行すると，Reliable Messagingはキューから取り出したメッセージをアプリケーションに配送します。

2.6.5　DBアクセス時の認証

アプリケーションが取得するコネクション（QueueSessionオブジェクト）には，JDBCコネクションが関連づけられます。

アプリケーションがコネクションを要求すると，Reliable MessagingはApplication Serverのコネクションプーリング機能と連携し，プーリングされているJDBCコネクションを再利用します。JDBCコネクションがプールにないときは，DBMSから新しいJDBCコネクションを取得します。このときDBMSの接続ユーザの認証にはアプリケーションで指定した認証方法（コンテナ認証またはアプリケーション認証）が使用されます。認証情報の設定については，「3.4.5　Reliable Messagingのプロパティ定義（永続版リソースアダプタの場合）」を参照してください。

また，アプリケーションがコネクションを解放するときは，Application Serverのコネクションプーリング機能を経由して処理されます。コネクションプーリング数（Application Serverでの定義値）に空きがあるとJDBCコネクションは解放されないでプールされます。

アプリケーションからのコネクション取得の概要を次の図に示します。

図2‒27　アプリケーションからのコネクション取得の概要

図中の番号について，説明します。

コネクションの要求

アプリケーションがQueueConnection.createQueueSession()メソッドを発行し，コネクションを要求します。

コネクションの要求通知

Reliable MessagingがApplication Serverにコネクションの要求通知をします。

JDBCコネクションの再利用

Application Server内にプーリング中のコネクションがある場合はプール中のJDBCコネクションが再利用されます。

JDBCコネクションの要求

プーリング中のコネクションがない場合，Reliable MessagingはDBMSに要求してJDBCコネクションを取得します。コンテナ認証の場合は，リソースアダプタのプロパティで指定した認証情報が利用されます。また，アプリケーション認証の場合は，アプリケーションで指定した認証情報が利用されます。

QueueSessionオブジェクトとの関連づけ

Reliable Messagingはアプリケーションに返却するQueueSessionオブジェクトを生成し，3.または4.で取得したJDBCコネクションと関連づけます。

QueueSessionオブジェクトの返却

Reliable MessagingはアプリケーションにQueueSessionオブジェクトを返します。

2.6.6　トランザクション制御

Reliable Messagingのアプリケーションはトランザクションマネジャでのトランザクション，およびローカルトランザクションを利用できます。ただし，トランザクションマネジャでのトランザクションとローカルトランザクションとを並行して利用することはできません。

例えば，トランザクションマネジャが制御しているときに次に示す状態のQueueSessionオブジェクトを，トランザクション属性がNotSupportedのメソッド内で利用しようとした場合，ローカルトランザクションを並行して利用することになるため例外が発生します。

QueueConnection.createQueueSession()メソッドのtransacted引数にtrueを指定したQueueSessionオブジェクト

QueueConnection.createQueueSession()メソッドのacknowledgeMode引数にCLIENT_ACKNOWLEDGEを指定したQueueSessionオブジェクト

(1)　ローカルトランザクションの利用

キューセッションでのローカルトランザクションを利用する場合，QueueConnection.createQueueSession()メソッドのtransacted引数にtrueを指定します。

ローカルトランザクションの場合，Reliable Messagingのメッセージ送受信だけがトランザクションの対象になります。他製品が提供するリソースに対する操作は対象になりません。

(2)　トランザクションマネジャでのトランザクションの利用

Reliable Messagingでは，トランザクションマネジャでのトランザクションを利用できます。次に示す場合，トランザクションマネジャでのトランザクションが発生します。

Application ServerのBMT使用時：javax.transaction.UserTransaction.begin()発行

Application ServerのCMT使用時：Enterprise Beanのビジネスメソッド呼び出し

トランザクションマネジャでのトランザクションの場合，Reliable Messagingのメッセージ送受信だけでなく，他製品が提供するリソースに対する操作を含めたトランザクションが使用できます。

トランザクションマネジャでのトランザクションを使用する場合，Connector属性ファイルの<transaction-support>タグにLocalTransactionまたはXATransactionを指定してください。ただし，LocalTransactionを指定した場合，他製品が提供するリソースに対する操作を含めたトランザクションを使用できません。NoTransactionを指定した場合，トランザクションマネジャでのトランザクションを使用できません。Connector属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

(3)　トランザクションとメッセージ送信

メッセージ送信時のQueueSender.send()メソッドの動作について，トランザクションマネジャによってトランザクションが制御されていない場合と制御されている場合に分けて説明します。

トランザクションマネジャによって制御されていない場合

トランザクションマネジャによってトランザクションが制御されていない場合，QueueSender.send()メソッドの動作はQueueConnection.createQueueSession()メソッドのtransacted引数指定値によって異なります。

トランザクションマネジャによってトランザクションが制御されていない場合のsend()メソッドの動作を次の表に示します。

表2‒22　トランザクションマネジャによってトランザクションが制御されていない場合のsend()メソッドの動作

項番

transacted引数

動作内容

1

true

QueueSender.send()メソッドを発行するとキューセッションでのローカルトランザクションが開始されます。QueueSession.commit()メソッドを発行したときにメッセージ送信がコミットされます。

ローカルトランザクションが未決着の状態で，トランザクションマネジャでのトランザクションを開始すると例外が発生します。ローカルトランザクションが開始されていない状態であるなら，トランザクションを開始できます。

2

false

QueueSender.send()メソッドを発行すると，メッセージを正常に送信完了したときに自動的にコミットされます。

注

コミット済みのメッセージを再度送信する場合，プロパティが再設定されて送信されます。

トランザクションマネジャによって制御されている場合

トランザクションマネジャによってトランザクションが制御されている場合，QueueSender.send()メソッドでのメッセージ送信はトランザクションマネジャでのトランザクションに含まれます。QueueSession.commit()またはrollback()メソッドを発行すると例外が発生します。

(4)　トランザクションとメッセージ受信

メッセージの受信方式には，同期受信および非同期受信があります。

同期受信

アプリケーションがQueueReceiver.receive()またはreceiveNoWait()メソッドを発行したタイミングでメッセージを受信します。

非同期受信

Message-driven Beanがキューを監視し，キューにメッセージが到着したタイミングでメッセージを受信します。

onMessage()メソッドのmessage引数によってメッセージを受信できます。この場合は，QueueConnection.createQueueSession()メソッドのacknowledgeMode引数にSession.AUTO_ACKNOWLEDGEを指定したときのQueueReceiver.receive()またはreceiveNoWait()メソッドの動作と同じ動作内容になります。Message-driven Beanとの連携については，「2.6.3　Message-driven Beanとの連携」を参照してください。

以降では，同期受信についてトランザクションマネジャによってトランザクションが制御されていない場合と制御されている場合に分けて説明します。

トランザクションマネジャによって制御されていない場合

トランザクションマネジャによってトランザクションが制御されていない場合，receive()およびreceiveNoWait()メソッドの動作はQueueConnection.createQueueSession()メソッドのtransactedおよびacknowledgeMode引数指定値によって異なります。

トランザクションマネジャによってトランザクションが制御されていない場合のreceive()およびreceiveNoWait()メソッドの動作を次の表に示します。

表2‒23　トランザクションマネジャによってトランザクションが制御されていない場合のreceive()およびreceiveNoWait()メソッドの動作

項番

transacted引数

acknowledgeMode引数

動作内容

1

true

−

QueueReceiver.receive()またはreceiveNoWait()メソッドを発行するとキューセッションでのローカルトランザクションが開始されます。QueueSession.commit()メソッドを発行したときにメッセージ受信が承認されます。

ローカルトランザクションが未決着の状態で，トランザクションマネジャでのトランザクションを開始すると例外が発生します。ローカルトランザクションが開始されていない状態であるなら，トランザクションマネジャでのトランザクションを開始できます。

2

false

AUTO_ACKNOWLEDGE

メッセージを正常に受信完了したとき，メッセージは自動的に承認されます。

3

DUPS_OK_ACKNOWLEDGE

4

CLIENT_ACKNOWLEDGE

Queue.Receiver()およびreceiveNoWait()メソッドでのメッセージの受信はローカルトランザクションに含まれます。

Message.acknowledge()メソッドを発行すると，同一のセッションで以前に受信して承認していないすべてのメッセージおよび現在のメッセージが承認されます。

QueueSession.recover()メソッドを発行すると，配送済みのメッセージが再度配送できるようになります。

Message.acknowledge()またはQueueSession.recover()メソッドを発行しないかぎり，トランザクションマネジャでのトランザクションを開始できません。

（凡例）

−：該当しません。

トランザクションマネジャによって制御されている場合

トランザクションマネジャによってトランザクションが制御されている場合，QueueReceiver.receive()およびreceiveNoWait()メソッドの動作はQueueConnection.createQueueSession()メソッドのtransactedおよびacknowledgeMode引数指定値によって異なります。

トランザクションマネジャによってトランザクションが制御されている場合のreceive()およびreceiveNoWait()メソッドの動作を次の表に示します。

表2‒24　トランザクションマネジャによってトランザクションが制御されている場合のreceive()およびreceiveNoWait()メソッドの動作

項番

transacted引数

acknowledgeMode引数

動作内容

1

true

−

QueueReceiver.receive()またはreceiveNoWait()メソッドでのメッセージの受信はトランザクションマネジャでのトランザクションに含まれます。

QueueSession.commit()またはrollback()メソッドを発行すると例外が発生します。

2

false

AUTO_ACKNOWLEDGE

3

DUPS_OK_ACKNOWLEDGE

4

CLIENT_ACKNOWLEDGE

QueueReceiver.receive()またはreceiveNoWait()メソッドでのメッセージの受信はトランザクションマネジャでのトランザクションに含まれます。

Message.acknowledge()またはQueueSession.recover()メソッドを発行すると例外が発生します。

（凡例）

−：該当しません。

(5)　Application Serverのアウトプロセストランザクションサービスの利用

Application Serverのアウトプロセストランザクションサービスを使用し，XID再利用で最適化を行った場合，グローバルトランザクションで異なる二つのリソースアダプタ（別々にデプロイされた二つのReliable Messaging，Reliable MessagingとDB Connectorなど）から同一のDBに接続するコネクションを使用しないでください。

この構成にすると，リソースマネジャでエラーが発生する，または応答が返らないおそれがあります。XID再利用による最適化については，マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

2.6.7　アプリケーション作成時の注意事項

Reliable Messagingのアプリケーションを作成するときの注意事項を次に示します。

なお，非永続版リソースアダプタの場合は，(2)，(6)，(8)，および(9)の注意事項には該当しません。

(1)　スレッド間でのオブジェクトの共有

QueueSessionオブジェクトおよびQueueSessionオブジェクトを使用して生成したオブジェクトを複数のスレッドやアプリケーションで共有できません。共有した場合の動作は保証されません。

(2)　JDBCコネクション

(a)　JDBCコネクションの消費

アプリケーションのリソースアダプタリファレンスの解決時に，サーブレットおよびJSPやEnterprise Beanの属性ファイルの<res-sharing-scope>タグに"Shareable"が指定されていない場合，Reliable MessagingではQueueSessionオブジェクトが一つ生成されるたびに，JDBCコネクションが一つ消費されます。このため，アプリケーションで使用しなくなったQueueSessionオブジェクトについては，必ずQueueSession.close()メソッドを発行してリソースを解放するようにしてください。属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

ただし，Application Serverのコネクションプーリング機能を使用する場合はQueueSessionオブジェクト生成時にJDBCコネクションは再利用されます。QueueSession.close()メソッドで解放してもJDBCコネクションは継続して使用されます。

Message-driven Beanを使用する場合は，メッセージが配信されるとき，Message-driven Beanのインスタンスごとに一つのJDBCコネクションが消費されます。メッセージの配信が終了すると，リソースは解放されます。コネクションプーリング機能を使用している場合は，JDBCコネクションは解放されないでプールされます。

(b)　トランザクションマネジャ内でのJDBCコネクションの利用

トランザクションマネジャでのトランザクション内では，最初にトランザクションに参加したJDBCコネクションが常に利用されます。つまり，2番目以降のJDBCコネクションに対する処理も，最初のJDBCコネクションを利用して行われるので注意が必要です。

(3)　コネクションシェアリング時の指定

アプリケーションのリソースアダプタリファレンスの解決時に，サーブレットおよびJSPやEnterprise Beanの属性ファイルの<res-sharing-scope>タグに"Shareable"を指定し，かつ論理コネクション（java.sql.Connection，QueueSessionオブジェクト）を複数生成する場合は，QueueSessionオブジェクト生成時のtransacted引数にfalseを，acknowledgeMode引数にAUTO_ACKNOWLEDGEを指定してください。属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

異なる引数を指定してQueueSessionオブジェクトを生成した場合，コネクションシェアリングが動作する契機で例外が発生します。

注意事項

アプリケーションがMessage-driven Beanの場合，アプリケーション内で1つだけ論理コネクションを生成する場合でも，コネクションシェアリングが動作する可能性があります。

Message-driven Beanではメッセージを配信する契機で論理コネクション（配信用コネクション）を1つ生成します。

この配信用コネクションとMessage-driven Bean内で生成される論理コネクションでシェアリングが行なわれる可能性があります。

配信用コネクションとコネクションシェアリングが行なわれる条件については，「付録G.1(1)　MDBの場合」を参照してください。

(4)　Message-driven Beanの監視対象のキュー

Message-driven Beanで監視するキューがシリアル取り出し属性の場合は，Message-driven Beanの多重度を2以上にしても性能面での効果はありません。多重度を上げてメッセージを配送する場合は監視するキューをパラレル取り出し属性にすることをお勧めします。

また，Message-driven Beanで監視するキューがシリアル取り出し属性の場合は，同一のキューに対するQueueReceiver.receive()メソッドを発行しないでください。発行するとデッドロックが発生します。

(5)　Message-driven Bean使用時のトランザクションの指定

Message-driven Beanを使用する場合，Connector属性ファイルの<transaction-support>タグにXATransactionまたはLocalTransactionを指定してください。XATransactionまたはLocalTransaction以外を指定するとMessage-driven Beanアプリケーションのデプロイに失敗します。Connector属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

(6)　Message-driven BeanをBMTで使用するときのDB Connectorのステートメントプールの指定

Message-driven BeanをBMTで使用する場合，接続先がHiRDBで，かつXATransactionモードのときは，DB Connectorのステートメントプールを使用しないでください。DB Connectorのステートメントプール使用した場合，エラーメッセージとともにSQLException例外が発生することがあります。

(7)　Message-driven Bean使用時のコネクションプーリング数の指定

Message-driven Beanを使用する場合，コネクションプーリング数がMessage-driven Beanの多重度よりも少ないと，性能が劣化することがあります。コネクションプーリング数は，Message-driven Beanの多重度よりも多くすることをお勧めします。

(8)　共用キュー

(a)　共用キューのアクセス順序

一つのトランザクション内で複数の共用キューにアクセスする場合，各アプリケーションでキューにアクセスする順序を統一する必要があります。異なる順序で共用キューにアクセスしようとすると，デッドロックが発生するおそれがあります。

(b)　受信用共用キューの利用

一つのトランザクション内で，同一の受信用共用キューに対する受信と送信を混在させないようにしてください。

(9)　メッセージのサイズ制限

キュー間転送を行う場合，SOAP通信基盤のSOAPアタッチメントに関する仕様によって，転送するメッセージのサイズに制限が掛かる条件があります。制限の内容および制限が掛かる条件についてはSOAP通信基盤のドキュメントを参照してください。

(10)　参照渡し方式利用時のJMSメッセージの再利用

参照渡し方式を利用する場合，1度でも登録，取り出し，または参照したJMSメッセージに対しては，次の操作を実行しないでください。

メッセージの登録

登録したメッセージの再登録

登録したメッセージの更新メソッドおよびacknowledge()メソッドの呼び出し

登録したメッセージがBytesMessageの場合，ペイロードの参照メソッドの呼び出し

メッセージの取り出し

取り出したメッセージの登録

取り出したメッセージの更新メソッドの呼び出し

取り出しをコミットしたメッセージのacknowledge()メソッドの呼び出し

取り出しをロールバックしたメッセージのすべてのメソッドの呼び出し

メッセージの参照

参照したメッセージの登録

参照したメッセージの更新メソッドおよびacknowledge()メソッドの呼び出し

参照渡し方式利用時のJMSメッセージのメソッドの呼び出し可否を次の表に示します。

表2‒25　JMSメッセージのメソッドの呼び出し可否

JMSメッセージのメソッドを呼び出すタイミング

JMSメッセージのメソッドの呼び出し可否

参照メソッド

更新メソッド

acknowledge()メソッド

登録後

send()メソッドの発行後

○※

×

×

commit()メソッドの発行後

○※

×

×

rollback()メソッドの発行後

○※

×

×

取り出し後

receive()メソッドの発行またはMDB配信後

○

×

○

commit()メソッドまたはacknowledge()メソッドの発行後

○

×

×

rollback()メソッドまたはrecover()メソッドの発行後

×

×

×

参照後

○

×

×

（凡例）

○：呼び出せます。

×：呼び出せません。

注※

BytesMessageの場合，ペイロードの参照メソッドは呼び出せません。

登録，取り出し，または参照したJMSメッセージに対して，呼び出せないメソッドを呼び出した場合の動作は保証できません。呼び出せないメソッドを呼び出した場合，ほかのセッションで取り出したメッセージの受信を承認（acknowledge）してしまう，メッセージデータが不正になる，例外が発生するなどの状態になることがあります。

登録に失敗したメッセージを再び登録したい場合は， 新たにJMSメッセージを作成し，作成したメッセージに，登録に失敗したメッセージに設定していた情報を設定し直して，登録してください。

(11)　参照渡し方式利用時のJMSメッセージの排他

参照渡し方式を利用する場合，JMSメッセージに対してsynchronizedによる排他を取らないでください。JMSメッセージで排他を取得した場合，デッドロックが発生するおそれがあります。

(12)　JMSインターフェースの範囲

Reliable MessagingはJMS1.0.2で提供されているインタフェースの範囲で利用してください。JMS1.1で追加されたインタフェースを使用すると予期しない例外が発生するおそれがあります。

2.7　DB Connector for Reliable Messagingの機能

Reliable Messagingは，システム状態やユーザから送られてきたメッセージをDB上のテーブルに永続化します。その場合，DBへのアクセスにはDB Connector for Reliable Messagingを利用します。

2.7.1　Reliable MessagingとDB Connector for Reliable Messagingの関係

Reliable MessagingとDB Connector for Reliable Messagingの関係を次の図に示します。

図2‒28　Reliable MessagingとDB Connector for Reliable Messagingの関係

DB Connector for Reliable Messagingはデータベースにアクセスするためのリソースアダプタです。Reliable Messagingは，DB Connector for Reliable MessagingのJDBCコネクションを取得し，JDBCインタフェースを利用してデータベースにアクセスします。

Reliable MessagingとDB Connector for Reliable Messagingは1：1に対応づける必要があります。そのため，Reliable MessagingのRMLinkedDBConnectorNameプロパティにDB Connector for Reliable Messagingの表示名を指定します。同様に，DB Connector for Reliable MessagingからReliable Messagingへの対応づけも必要です。

なお，DB Connector for Reliable Messagingと連携できるのは，永続版リソースアダプタのReliable Messagingだけです。

(1)　リソースアダプタ間の依存関係

Reliable Messagingは，DB Connector for Reliable MessagingのJDBCコネクションを利用してDBにアクセスします。したがって，Reliable Messagingの稼働時には，DB Connector for Reliable Messagingも稼働している必要があります。

Component Containerは，Reliable Messagingの開始時に，連携するDB Connector for Reliable Messagingが稼働中かどうかをチェックし，稼働していない場合はエラーを返します。また，DB Connector for Reliable Messagingの停止時には，連携するReliable Messagingが停止済みかどうかをチェックし，停止していない場合はエラーを返します。

リソースアダプタの状態と開始または停止の依存関係を次の表に示します。

表2‒26　DB Connector for Reliable Messagingの状態とReliable Messagingの開始または停止の関係

DB Connector for Reliable Messagingの状態

連携するReliable Messagingの動作

稼働中

開始できる

停止できる

停止中

開始できない

表2‒27　Reliable Messagingの状態とDB Connector for Reliable Messagingの開始または停止の関係

Reliable Messagingの状態

連携するDB Connector for Reliable Messagingの動作

稼働中

停止できない

停止中

開始できる

停止できる

リソースアダプタの開始時には，Component ContainerがReliable MessagingとDB Connector for Reliable Messagingの対応づけをチェックします。Reliable Messagingの開始時にDB Connector for Reliable Messagingと正しく対応づけられなかった場合は，Reliable Messagingは開始できません。

(2)　リソースアダプタの設定

リソースアダプタの設定情報のうち，コネクションプールに関する情報や認証情報は，Reliable Messagingのプロパティに設定します。また，DBへの接続情報はDB Connector for Reliable Messagingのプロパティに設定します。

リソースアダプタの設定情報の分類を次の表に示します。

表2‒28　リソースアダプタの設定情報の分類

設定情報

DB Connector for Reliable Messaging

Reliable Messaging

コンフィグレーションプロパティ

Reliable Messaging固有の情報

−

○

DB Connector for Reliable Messaging固有の情報（ステートメントプールなど）

○

−

ログ取得情報

○

○

連携先リソースアダプタ名

○

○

認証情報（ユーザ名，パスワード）※1※2

○

○

コネクションプールサイズ※2

○

○

コネクション障害検知※2

○

○

コネクション取得リトライ※2

○

○

トランザクションサポートレベル※2

○

○

データベース接続定義

○

−

（凡例）

○：設定が必要です。

−：設定項目がありません。

注※1

コンテナ認証時のDBへの接続ユーザ名およびパスワードとして使用されます。

注※2

DB Connector for Reliable MessagingとReliable Messagingで同じ値を設定してください。

2.7.2　DB Connector for Reliable Messagingの機能一覧

DB Connectorの機能の中には，DB Connector for Reliable Messagingで使用できる機能と使用できない機能があります。DB Connector for Reliable Messagingで使用できるDB Connectorの機能を次の表に示します。なお，各機能の詳細については，「2.7.3　DB Connector for Reliable Messaging連携時のコネクションとSQLの運用」，およびマニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。

表2‒29　DB Connector for Reliable Messagingで使用できるDB Connectorの機能

項番

DB Connectorの機能

DB Connector for Reliable Messagingでの使用可否

1

コネクションプーリング

○

2

コネクションプールのウォーミングアップ

○

3

コネクションシェアリング・アソシエーション

○

4

ステートメントプーリング

○

5

ステートメントキャンセル

○

6

DataSourceオブジェクトのキャッシング

○

7

DB Connectorのコンテナ管理でのサインオンの最適化

○

8

コネクションの障害検知

○

9

コネクションの障害検知のタイムアウト

○

10

コネクション枯渇時のコネクション取得待ち

○

11

コネクションの取得リトライ

○

12

コネクションプールの情報表示

○

13

コネクションプールのクリア

○

14

コネクションの自動クローズ

○

15

コネクションスイーパ

○

16

接続テスト

○

17

コネクション数調節機能

○

18

コネクションプールの情報表示

○

19

コネクションプールの一時停止

×

20

コネクションプールの再開

×

21

J2EEリソースのオプショナル名機能

○

22

コネクションIDの取得

○

23

障害調査用SQLの出力

◎

24

軽微な障害時のコネクション再利用

○

（凡例）

◎：必ず有効になります。

○：使用できます。

×：使用できません。

2.7.3　DB Connector for Reliable Messaging連携時のコネクションとSQLの運用

Reliable MessagingとDB Connector for Reliable Messagingが連携するときのコネクションとSQLの運用について説明します。

(1)　コネクションの共有

DB Connector for Reliable MessagingとReliable Messagingは，共にJDBCコネクションを利用します。同一トランザクション内でJDBCとJMSのアクセスを行う場合は，JDBCコネクションを共有できます。

DB Connector for Reliable MessagingとReliable Messagingの間でコネクションを共有するには，次の条件を満たす必要があります。

DB Connector for Reliable MessagingとReliable Messagingが使用するDBが同一であること。

Reliable MessagingのRMAssociateJDBCFlagプロパティにtrueが指定されていること。

アプリケーションのリソースアダプタリファレンスの解決時に，データソースとキューコネクションファクトリのSession Bean属性ファイル，Entity Bean属性ファイル，WAR属性ファイル，またはMessageDrivenBean属性ファイルの<res-sharing-scope>タグに"Shareable"を指定していること（各属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください）。

認証情報（ユーザ名，パスワード）が同一であること。

認証方法（コンテナ認証またはアプリケーション認証）が同一であること。

Reliable MessagingのQueueSessionが，すべてAutoAcknowledgeモードであること（AutoAcknowledgeモード以外のQueueSessionとの間でコネクションを共有しようとすると，論理コネクション（java.sql.Connection, QueueSession）の取得に失敗します）。

コネクション共有の条件を満たさない場合は，別のJDBCコネクションが取得されます。この場合も，トランザクションマネジャでのトランザクション内では最初にトランザクションに参加したJDBCコネクションが常に利用されます。つまり，2番目以降のJDBCコネクションに対する処理も，最初のJDBCコネクションを利用して行われるので注意が必要です。

なお，コネクション共有を利用するかどうかに関係なく，JDBCコネクションはReliable Messagingのコネクションとしてプール管理されます。一方，DB Connector for Reliable Messagingのコネクションはプール管理されません。コネクション取得時にはReliable MessagingのコネクションプールからJDBCコネクションを取得します。

(2)　ステートメントキャンセル

DB Connector for Reliable Messagingと連携する場合，実行中のSQL処理が返ってこない状態でトランザクションのタイムアウトが発生すると，ステートメントがキャンセルされます。

Reliable Messagingのステートメントキャンセルで注意する点を次に示します。

ステートメントキャンセルは，ユーザがJDBCを利用して行う処理に対してだけ有効です。ユーザがJMS，またはJDBCとJMSとの間でコネクションシェアリングを利用する場合，ステートメントキャンセルはJDBCの処理に対してだけ有効となります。このとき，JMSを通して行われる処理に対しては，ステートメントがキャンセルされません。

トランザクションのサポートレベルがXATransactionでDABrokerを利用してHiRDBと接続する場合，ステートメントはキャンセルされません。

(3)　障害調査用SQLの出力

デッドロックやスローダウンなどの障害が発生した場合，発行したSQLが障害の要因となった可能性があります。そこで，発行したSQLをログに出力することによって，障害要因の解析が容易になります。ログに出力されるSQLの情報を障害調査用SQLと呼びます。障害調査用SQLの詳細については，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。

Reliable Messagingの障害調査用SQLの出力で注意する点を次に示します。

障害調査用SQLの出力は，ユーザがJDBCを利用して行う処理に対してだけ有効です。ただし，ユーザがリソースアダプタ管理のトランザクション（リソース固有のAPIによって，ユーザが直接トランザクションを管理する方法）でJDBCとJMSとの間でコネクションシェアリングを利用する場合，JMSを通して行われる処理に対しての障害調査用SQLが出力されることがあります。

ステートメントキャンセルと障害調査用SQLの出力は，まず障害調査用SQLの出力が実行され，そのあとにステートメントキャンセルが実行されます。

障害調査用SQLは，DB Connector for Reliable Messagingの稼働ログ，および性能解析トレースに出力されます。

DB Connector for Reliable Messagingの稼働ログ

<Application Serverのログディレクトリ>¥connectors

性能解析トレース

<Application Serverのインストールディレクトリ>¥PRF¥spool¥utt¥prf¥PRF_ID¥dcopltrc

(4)　軽微な障害時のコネクション再利用

コネクション利用時に発生したエラーが，テーブルの一意性に違反したSQLの発行など軽微な障害の場合，コネクションを再利用します。

Reliable Messagingの軽微な障害時のコネクション再利用で注意する点を次に示します。

軽微な障害時のコネクション再利用は，ローカルトランザクションの場合だけ有効です。トランザクションを使用していない，またはトランザクションのサポートレベルがXATransactionの場合，コネクションは破棄されます。

(5)　コネクションIDの取得

DB Connector for Reliable Messagingと連携した場合，接続先DBのコネクションIDを取得できます。コネクションIDとは，DBとの接続に使用しているコネクションを一意に識別するための接続情報です。コネクションIDの取得の詳細については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

Reliable MessagingのコネクションIDの取得で注意する点を次に示します。

Reliable Messagingは，一つのトランザクション内の場合，アプリケーションは同じDB Connector for Reliable Messagingのコネクションを利用します。そのため，一つのトランザクション内で複数のコネクションを利用しているときにcjlistpoolコマンドを実行すると，同じコネクションIDが二つあるように見えます。

(6)　コネクションの接続テスト

Component Containerが提供するReliable Messagingの接続テストを行うには，連携するDB Connector for Reliable Messagingが稼働中であることが前提となります。また，DB Connector for Reliable Messagingの接続テストでは，Reliable MessagingとDB Connector for Reliable Messagingの両方が稼働中であることを前提とします。

接続テストに失敗した場合は，メッセージの内容に応じて要因を取り除いてください。

2.7.4　DB Connector for Reliable Messaging連携時の注意事項

Reliable Messagingが管理状態または閉塞状態のときには，DB Connector for Reliable Messagingを利用して，トランザクションマネジャでのトランザクションの利用はできません。

DBだけを利用する場合は，通常のDB Connectorを利用してください。DB Connector for Reliable Messagingは，コネクション共有機能のオーバヘッドがあるため，性能が劣化します。

DB Connector for Reliable Messagingを利用している場合，java.sql.ConnectionのsetAutoCommit()メソッドは利用できません。したがって，JDBC固有のトランザクション制御はできません。なお，コネクション共有を行い，トランザクションマネジャのトランザクションを利用していない場合，JDBCのコネクションはAutoCommit=trueとなります。また，JMSのQueueSessionはAUTO_ACKNOWLEDGEモードとなります。

Oracleを利用してJDBCとJMSのアクセスを行う場合は，コネクション共有機能を使うことが前提となります。Reliable Messagingでは，同一DBに対して，異なるリソースアダプタとの間の2相コミットはできません。

java.sql.Connectionからの生成物（例：java.sql.Statement）を，トランザクションの範囲を超えて使用することはできません。

3　システム構築

この章ではReliable Messagingのシステムを構築する手順について説明します。

なお，Reliable Messagingのシステム構築は，永続版リソースアダプタを使用する場合と非永続版リソースアダプタを使用する場合とで手順が異なります。

3.1　システム構築の流れ

3.1.1　Reliable Messagingのシステム構築の流れ

Reliable Messagingのシステム構築の流れを次の図に示します。

図3‒1　Reliable Messagingのシステム構築の流れ

図中の番号について説明します。

(1)　インストール

Application ServerやDBMSなどの前提製品をインストールしたあと，Reliable Messagingをアプリケーションサーバシステムが動作するマシンにインストールします。Windowsの場合はインストーラを，UNIXの場合はPPインストーラを使用してインストールしてください。また，インストール後に格納されるファイルについては，「3.2.2　Reliable Messagingをインストールすると格納されるファイル」を参照してください。

(2)　システム構築の準備

システム名として，RMSystemNameプロパティに指定する値（先頭が英字の1〜3文字の大文字英字または数字）を決定します。また，Reliable Messagingが使用する環境変数を設定します。

システム名の決定については，「3.3.1　Reliable Messagingのシステム名の決定」を，環境変数の設定については，「3.3.2　環境変数の設定」を参照してください。

(3)　システム構築

システム構築の手順は，永続版リソースアダプタを使用する場合と，非永続版リソースアダプタを使用する場合で異なります。

永続版リソースアダプタを使用する場合は，「3.4　Reliable Messagingのシステム構築（永続版リソースアダプタの場合）」を，非永続版リソースアダプタを使用する場合は，「3.5　Reliable Messagingのシステム構築（非永続版リソースアダプタの場合）」を参照してください。

なお，キュー定義ファイルの作成以降の作業については，コマンドでシステムを構築しています。コマンド以外にも，GUI（プラグイン）やManagement Serverを利用してシステムを構築することもできます。GUI（プラグイン）またはManagement Serverを利用したシステム構築方法については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」およびマニュアル「アプリケーションサーバ アプリケーション開発ガイド」を参照してください。

また，Reliable MessagingおよびDB Connector for Reliable Messagingのプロパティは，ユーザが環境に合わせて定義します。プロパティ定義の流れを次に示します。

J2EEサーバの開始

Application Serverを開始します。また，アプリケーションの要件に合わせて，必要なApplication Serverのサービスを開始してください。

プロパティの定義

DB Connector for Reliable MessagingおよびReliable Messagingのプロパティを定義します。Reliable Messagingで提供するConnector属性ファイルのテンプレートを任意のディレクトリにコピーして，コピーしたファイルを編集してください。

認証情報（UserおよびPassword）にはReliable MessagingがHiRDBまたはOracleにアクセスするために利用する接続ユーザのユーザ名，パスワードを指定してください。

なお，非永続版リソースアダプタでは認証情報（UserおよびPassword）は，指定しても無視されます。

DB Connector for Reliable MessagingおよびReliable Messagingのインポート

サーバ管理コマンドを使用して，リソースアダプタとしてDB Connector for Reliable MessagingおよびReliable Messagingをインポートします。

プロパティの設定

サーバ管理コマンドを使用して，DB Connector for Reliable MessagingおよびReliable Messagingのプロパティを設定します。

DB Connector for Reliable MessagingおよびReliable Messagingのデプロイ

サーバ管理コマンドを使用して，DB Connector for Reliable MessagingおよびReliable Messagingをデプロイします。

J2EEサーバの停止

必要に応じてJ2EEサーバ（Component Container）を停止します。引き続きReliable Messagingを開始する場合は，J2EEサーバを停止しないで，永続版リソースアダプタを使用するときは「4.1　Reliable Messagingとアプリケーションの開始と停止（永続版リソースアダプタの場合）」を，非永続版リソースアダプタを使用するときは「5.1　Reliable Messagingとアプリケーションの開始と停止（非永続版リソースアダプタの場合）」を参照してください。

なお，Reliable MessagingおよびDB Connector for Reliable Messagingのシステムを構築するサンプル手順については，「付録C.1　環境構築のサンプル手順」を参照してください。

3.2　Reliable Messagingのインストール

Reliable Messagingは，Windowsの場合はインストーラを，UNIXの場合はPPインストーラを使用してインストールします。インストールは，インストーラ，またはPPインストーラの指示に従ってください。なお，Reliable Messagingのインストールは，前提製品をインストールしたあとに実施します。前提製品のインストールについては，「3.2.1　前提製品のインストール」を参照してください。

3.2.1　前提製品のインストール

Reliable Messagingをインストールする前に，Application ServerやDBMS（永続版リソースアダプタを使用する場合だけ）などの前提製品をインストールする必要があります。前提製品のインストールの方法については，この章で説明する内容に加えて各製品が提供するマニュアルを参照してください。

(1)　Application Serverのインストール

Reliable MessagingはJ2EEサーバ上で動作します。Reliable Messagingが動作するマシンに，次に示す製品をインストールしてください。

Component Container

DABroker Library

DB Connector for Reliable MessagingでDABroker Libraryを使用する場合だけ必要です。

Developer's Kit for Java

TPBroker

Performance Tracer

PRFトレースを取得する場合だけ必要です。

インストールしたあと，アプリケーションで実行する業務に合わせてアプリケーションサーバシステムを構築してください。構築方法については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

(2)　DBMSのインストール

永続版リソースアダプタを使用する場合，DBMSとしてHiRDBまたはOracleをインストールしてください。

(3)　DBクライアントのインストール

永続版リソースアダプタを使用する場合で，DBMSとしてHiRDBを使用するとき，次に示す製品をインストールしてください。

HiRDB/Run TimeまたはHiRDB/Developer's Kit

詳細については，マニュアル「HiRDB UAP開発ガイド」を参照してください。

HiRDB SQL Executer

詳細については，HiRDB SQL Executerのドキュメントを参照してください。

3.2.2　Reliable Messagingをインストールすると格納されるファイル

Reliable Messagingをインストールすると，次に示すファイルが格納されます。Reliable Messagingのインストール内容を次の表に示します。

表3‒1　Reliable Messagingのインストール内容

項番

名称

ディレクトリ

ファイル名

1

永続版リソースアダプタ

%HRMDIR%¥lib

reliablemessaging.rar

2

非永続版リソースアダプタ

%HRMDIR%¥lib

reliablemessagingNP.rar

3

ライブラリ

%HRMDIR%¥lib

reliablemessaging-api.jar

4

クラスライブラリ

%HRMDIR%¥lib

hrmcommand.jar

5

EAR

%HRMDIR%¥lib

hrmqueue-transmit.ear

6

コマンド

%HRMDIR%¥bin

Windowsの場合

hrm*.bat

UNIXの場合

hrm*

7

クライアント定義ファイル

%HRMDIR%¥conf

c4webcl.properties

8

テーブル作成用SQLファイル

%HRMDIR%¥sql

createtableshirdb.sql

createtablesoracle.sql

9

テーブル削除用SQLファイル

%HRMDIR%¥sql

deletetableshirdb.sql

deletetablesoracle.sql

10

共用キューバージョンアップ用SQL

%HRMDIR%¥sql

shqupdate_V1toV2.sql

11

Connector属性ファイルのテンプレート

%HRMDIR%¥conf

rm_prop.xml

rmnp_prop.xml

12

クライアントログファイル

%HRMDIR%¥logs¥cmd¥clt

−

13

サンプルアプリケーション

%HRMDIR%¥samples¥

SessionBean1

JMSSample1.java

JMSSample1Client.java

JMSSample1EJB.java

JMSSample1Home.java

QueueConfig.properties

QueueConfigNP.properties

QueueMake.properties

config.xml

Windowsの場合

compileBean.bat

compileClient.bat

testClient.bat

deployApp.bat

unDeployApp.bat

UNIXの場合

compileBean

compileClient

testClient

deployApp

unDeployApp

14

%HRMDIR%¥samples¥

SessionBean1¥DD_EJB¥META-INF

ejb-jar.xml

15

%HRMDIR%¥samples¥

SessionBean1¥DD_APP¥META-INF

application.xml

16

%HRMDIR%¥samples¥

SessionBean2¥Receive

JMSSample2Receive.java

JMSSample2ReceiveClient.java

JMSSample2ReceiveEJB.java

JMSSample2ReceiveHome.java

QueueConfig.properties

config.xml

Windowsの場合

compileBean.bat

compileClient.bat

testReceiveClient.bat

deployApp.bat

unDeployApp.bat

UNIXの場合

compileBean

compileClient

testReceiveClient

deployApp

unDeployApp

17

%HRMDIR%¥samples¥

SessionBean2¥Receive¥DD_EJB¥META-INF

ejb-jar.xml

18

%HRMDIR%¥samples¥

SessionBean2¥Receive¥DD_APP¥META-INF

application.xml

19

%HRMDIR%¥samples¥

SessionBean2¥Send

JMSSample2Send.java

JMSSample2SendClient.java

JMSSample2SendEJB.java

JMSSample2SendHome.java

QueueConfig.properties

config.xml

Windowsの場合

compileBean.bat

compileClient.bat

testSendClient.bat

deployApp.bat

unDeployApp.bat

UNIXの場合

compileBean

compileClient

testSendClient

deployApp

unDeployApp

20

%HRMDIR%¥samples¥

SessionBean2¥Send¥DD_EJB¥META-INF

ejb-jar.xml

21

%HRMDIR%¥samples¥

SessionBean2¥Send¥DD_APP¥META-INF

application.xml

（凡例）

−：インストール直後はファイルがありません。

注

%HRMDIR%はReliable Messagingがインストールされたディレクトリを表します。

3.3　システム構築の準備

システムを構築する前の準備について説明します。

3.3.1　Reliable Messagingのシステム名の決定

システム名として，システム間で一意となる値（先頭が英字の1〜3文字の大文字英字または数字）を決定します。決定した値は環境変数，RMSystemNameプロパティなどに指定します。

3.3.2　環境変数の設定

Reliable Messagingが動作するマシンで，次に示す環境変数を設定してください。

HRMDIR

Reliable Messagingがインストールされたディレクトリのパスを指定します。

HRM_SYSTEM_NAME

Reliable Messagingが提供するコマンドを実行する際に操作の対象となるシステム名を指定する環境変数です。「3.3.1　Reliable Messagingのシステム名の決定」で決定した値を指定します。

HRM_CMD_HOST

CORBAネーミングサービスのホスト名です。Reliable MessagingのコマンドがCORBAネーミングサービスを使用するときのホスト名またはIPアドレスを指定します。

CORBAネーミングサービスはJNDIの機能を実現します。ユーザがReliable Messagingのコマンドを使用したり，アプリケーションがキューをlookupするときに動作している必要があります。

IPアドレスを二つ以上持つマシン上で明示的にネーミングサービスのアドレスを指定したい場合などには，このプロパティを指定してください。

CORBAネーミングサービスを自動起動モード（J2EEサーバ用ユーザプロパティファイルのejbserver.naming.startupModeにautomaticまたはinprocessを指定）で使用し，EJBコンテナのIPアドレスを固定（J2EEサーバ用ユーザプロパティファイルのvbroker.se.iiop_tp.hostを指定）した場合は，このプロパティに固定したIPアドレスを指定してください。

HRM_CMD_PORT

CORBAネーミングサービス（nameserv）のポート番号です。Reliable MessagingのコマンドがCORBAネーミングサービス（nameserv）を使用するときのポート番号を指定します。

ユーザが特に変更していない場合は，デフォルト値である900を指定してください。

PATH

Reliable Messagingが提供するコマンドが格納されたディレクトリを指定します。%HRMDIR%¥binを追加してください。

3.4　Reliable Messagingのシステム構築（永続版リソースアダプタの場合）

永続版リソースアダプタを使用する場合のReliable Messagingのシステム構築について説明します。

3.4.1　DBMSの設定（HiRDBを使用する場合）

HiRDBを使用する場合のDBMSの設定について説明します。説明する以外の設定内容や手順については，HiRDBのマニュアルを参照してください。

(1)　DBMSの初期設定（HiRDBを使用する場合）

(a)　HiRDBの初期設定

HiRDBをインストールしたら，環境設定をします。Reliable Messagingの管理情報テーブルを格納するためのRDエリアを作成してください。HiRDBの環境設定については，マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

なお，HiRDBを環境設定するときに使用する文字コードは，DABroker Libraryに設定した漢字コードセットに合わせてください。文字コードの選択については，マニュアル「HiRDB システム導入・設計ガイド」を参照してください。

(b)　HiRDBのユーザ権限の付与

HiRDBでは"ユーザの作成"という操作がなく，ユーザ権限の一つであるCONNECT権限をユーザに付与することによってユーザが作成されます。ユーザ権限については，マニュアル「HiRDB システム運用ガイド」を参照してください。

Reliable MessagingはHiRDBの接続ユーザを使用してHiRDBにアクセスします。Reliable Messagingで使用する接続ユーザには，次に示すユーザ権限を付与してください。

CONNECT権限

スキーマ定義権限

ユーザ権限を付与するには，データベース定義ユティリティ（pddef）またはHiRDB SQL Executerを使用します。ここでは，データベース定義ユティリティ（pddef）を使用してユーザ権限を付与する場合の手順を説明します。Reliable Messagingが動作するマシンまたはHiRDBが動作するマシンで，次に示す手順を実行してください。データベース定義ユティリティ（pddef）の使用方法については，マニュアル「HiRDB コマンドリファレンス」を参照してください。

環境変数の設定

次に示す環境変数を設定します。

Windowsの場合

SET PDHOST = <HiRDBサーバのホスト名またはIPアドレス>
SET PDNAMEPORT = <HiRDBサーバのポート番号>
SET PDUSER = <DBA権限を持つユーザ名>/<パスワード>

UNIX（csh）の場合

setenv PDHOST <HiRDBサーバのホスト名またはIPアドレス>
setenv PDNAMEPORT <HiRDBサーバのポート番号>
setenv PDUSER <DBA権限を持つユーザ名>/<パスワード>

UNIX（sh）の場合

PDHOST=<HiRDBサーバのホスト名またはIPアドレス>
PDNAMEPORT=<HiRDBサーバのポート番号>
PDUSER=<DBA権限を持つユーザ名>/<パスワード>
export PDHOST
export PDNAMEPORT
export PDUSER

データベース定義ユティリティ（pddef）の開始

次に示すとおりコマンドを入力して，データベース定義ユティリティ（pddef）を開始します。

pddef

SQL文の実行

次に示すSQL文を実行します。

GRANT  CONNECT  TO  <権限を付与する接続ユーザ名>※
              IDENTIFIED  BY  <パスワード>;
GRANT  SCHEMA   TO  <権限を付与する接続ユーザ名>※;

注※

Reliable Messagingが使用する接続ユーザの名前です。HiRDBのクライアント環境変数グループに登録したPDUSER環境変数と同じ値になります。PDUSER環境変数については，「3.4.1(2)(b)　HiRDBの環境変数グループの登録」を参照してください。

データベース定義ユティリティ（pddef）の終了

データベース定義ユティリティ（pddef）を終了するには，

Windowsの場合

CtrlキーとZキーを同時に押したあと，Enterキーを押してください。

UNIXの場合

CtrlキーとDキーを同時に押してください。

(c)　HiRDBのスキーマの定義

Reliable Messagingの管理情報テーブル用のスキーマを定義します。

スキーマを定義するには，データベース定義ユティリティ（pddef）またはHiRDB SQL Executerを使用します。ここでは，データベース定義ユティリティ（pddef）を使用してスキーマ定義する場合の手順を説明します。Reliable Messagingが動作するマシンまたはHiRDBが動作するマシンで，次に示す手順を実行してください。データベース定義ユティリティ（pddef）の使用方法については，マニュアル「HiRDB コマンドリファレンス」を参照してください。

環境変数の設定

次に示す環境変数を設定します。

Windowsの場合

SET PDHOST = <HiRDBサーバのホスト名またはIPアドレス>
SET PDNAMEPORT = <HiRDBサーバのポート番号>
SET PDUSER = <接続ユーザ名>/<パスワード>※

UNIX（csh）の場合

setenv PDHOST <HiRDBサーバのホスト名またはIPアドレス>
setenv PDNAMEPORT <HiRDBサーバのポート番号>
setenv PDUSER <接続ユーザ名>/<パスワード>※

UNIX（sh）の場合

PDHOST=<HiRDBサーバのホスト名またはIPアドレス>
PDNAMEPORT=<HiRDBサーバのポート番号>
PDUSER=<接続ユーザ名>/<パスワード>※
export PDHOST
export PDNAMEPORT
export PDUSER

注※

接続ユーザ名には，権限を付与した接続ユーザ名を指定します。詳細については，「3.4.1(1)(b)　HiRDBのユーザ権限の付与」を参照してください。

データベース定義ユティリティ（pddef）の開始

次に示すとおりコマンドを入力して，データベース定義ユティリティ（pddef）を開始します。

pddef

SQL文の実行

次に示すSQL文を実行します。

CREATE SCHEMA;

データベース定義ユティリティ（pddef）の終了

データベース定義ユティリティ（pddef）を終了するには，

Windowsの場合

CtrlキーとZキーを同時に押したあと，Enterキーを押してください。

UNIXの場合

CtrlキーとDキーを同時に押してください。

(d)　HiRDBのRDエリアの準備

Reliable Messagingの管理情報テーブルを格納するために，必要に応じてRDエリアを作成します。RDエリアの作成方法については，マニュアル「HiRDB システム運用ガイド」を参照してください。

複数のユーザでReliable Messagingにアクセスする際にアプリケーション認証を使用する場合は，公用RDエリアを作成し，その公用RDエリアにReliable Messagingの管理情報テーブルを作成します。

(e)　HiRDBの排他資源と同時アクセス可能実表数の見積もり

HiRDBの排他資源および同時アクセス可能実表数の見積もりについては，「付録F　HiRDBの見積もり」を参照してください。

(2)　DBクライアントの設定

次に示す製品をインストールしたら，Reliable Messagingが動作するマシンで設定をします。

HiRDB/Run TimeまたはHiRDB/Developer's Kit

HiRDB SQL Executer

(a)　HiRDBの環境変数の設定

次に示す環境変数を設定します。

PDXAMODE

1を指定します。

PDTXACANUM

Reliable Messagingが使用するDBコネクション数の最大値を指定します。この場合の最大値は，Reliable Messaging本体およびアプリケーションが使用するDBコネクションの合計です。Reliable MessagingがDBコネクションを使用するタイミングと，使用するコネクションの数を次の表に示します。

表3‒2　Reliable MessagingがDBコネクションを使用するタイミングと使用するコネクションの数

項番

Reliable Messagingの機能

DBコネクションを使用するタイミング

コネクション使用数

1

コマンド

コマンド実行時に取得し，コマンド完了後に解放します。

1

2

共用キューによるシステム間連携

リソースアダプタの開始時に1コネクションを取得し，リソースアダプタの停止時に解放します。

1

3

イベント受信時に1コネクションを取得し，イベント受信完了後に解放します。

1

4

メモリ復元処理

メモリ復元時に取得し，復元完了時に解放します。復元処理の詳細については，「4.1.4(1)　状態遷移」の開始中状態を参照してください。

1

5

メッセージ削除処理

リソースアダプタの開始時に取得し，リソースアダプタ停止時に解放します。

1

6

XAリカバリ

リソースアダプタの開始時に1コネクションを取得し，リソースアダプタの停止時に解放します。

1

7

キュー間転送

送信

1メッセージの送信でキャッシュにメッセージがない場合，またはグループを切り替える場合に，1コネクションを取得し，メッセージの送信終了後に解放します。

コネクション取得数の最大値は，送信スレッドの起動数です。

1以上

8

受信

1メッセージの受信で1コネクション取得し，メッセージの受信完了後に解放します。ただし，同時リクエスト数に比例してコネクション取得数も増加します。

1以上

上記の表に示したとおり，Reliable MessagingのDBコネクション使用数は次の値になります。

6＋送信スレッドの起動数＋メッセージ受信リクエスト数

なお，Application ServerのJ2EEコンポーネントからHiRDBにアクセスする場合は，J2EEコンポーネントが利用するコネクション数に，Reliable MessagingのDBコネクション使用数を加えた値を指定します。

LD_LIBRARY_PATH（Linuxの場合），LIBPATH（AIXの場合）

下記のパスを指定してください。

/opt/Cosminexus/TPB/lib

/opt/Cosminexus/PRF/lib

/opt/Cosminexus/CTM/lib（CTM利用時だけ）

<DABroker Library運用ディレクトリ>/lib

/opt/HiRDB/client/lib

/opt/HiRDB/client/utl

注意事項

HiRDBのクライアント環境定義PDDBLOGには，NOを指定しないでALLを指定してください。

(b)　HiRDBの環境変数グループの登録

HiRDBの環境変数グループの登録方法を次に示します。

Windowsの場合

DABroker対応のDB Connector for Reliable Messagingを使用するときは，HiRDBクライアント環境変数登録ツールを使用して環境変数のグループを登録します。［システムグループ］ラジオボタンを選択して環境変数グループ名を登録してください。

HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messagingを使用するときは，環境変数のグループは，HiRDBのクライアント環境変数グループの設定ファイルに登録します。

UNIXの場合

環境変数のグループは，HiRDBのクライアント環境変数グループの設定ファイルに登録します。

登録方法については，マニュアル「HiRDB UAP開発ガイド」を参照してください。

ここで登録した環境変数グループ名は，DB Connector for Reliable Messagingのコンフィグレーションプロパティで，XAOpen文字列として設定する必要があります。DB Connector for Reliable Messagingのコンフィグレーションプロパティについては，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

HiRDBのクライアント環境変数グループに登録する内容を次の表に示します。

表3‒3　HiRDBのクライアント環境変数グループに登録する内容

項番

環境変数名

設定内容

1

PDHOST

HiRDBサーバのホスト名またはIPアドレスを指定します。

2

PDUSER

HiRDBサーバのユーザ名※1およびパスワードを指定します。

3

PDNAMEPORT

HiRDBサーバのポート番号を指定します。

4

PDSWAITTIME※2

Component Containerのトランザクションタイムアウトの値※3よりも大きな値を指定します。

5

PDCWAITTIME※2

Component Containerのトランザクションタイムアウトの値※3よりも大きな値を指定します。

また，メッセージの遅延削除にかかる時間よりも大きな値を指定します※4。

6

PDSWATCHTIME

0を指定します。

注※1

Reliable MessagingがHiRDBの管理するDBにアクセスするために使用する接続ユーザの名前です。

共用キューを使用して複数システム間でのアプリケーション連携をする場合は，送信側システムと受信側システムで同じ接続ユーザ名を指定します。

注※2

HiRDBを使用する場合，Reliable Messagingのトランザクション決着中に，HiRDBの設定値であるPDSWAITTIMEおよびPDCWAITTIMEに指定した値によってタイムアウトが発生しDBがロールバックすると，Reliable Messagingは閉塞することがあります。このため，PDSWAITTIMEおよびPDCWAITTIMEには，適切な値を設定してください。PDSWAITTIMEおよびPDCWAITTIMEについては，マニュアル「HiRDB システム導入・設計ガイド」を参照してください。なお，Reliable Messagingが閉塞した場合は，Application Serverを強制停止したあと，再起動してください。

注※3

Component Containerのトランザクションタイムアウト値はJ2EEサーバ用ユーザプロパティファイルまたはUserTransaction.setTransactionTimeout()メソッドで指定します。J2EEサーバ用ユーザプロパティファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。UserTransaction.setTransactionTimeout()メソッドについては，Javaのドキュメントを参照してください。

注※4

チューニングは本番稼動環境と同等の環境で行う必要があります。更に遅延削除処理にかかる時間が最大となるように，以下の環境でチューニングを行う必要があります。

システムへの負荷(メッセージの送受信処理など)が最大となるような環境

キュー内の遅延削除対象となるメッセージ数，配信済み状態ではないメッセージ数，メッセージのサイズが最大となる環境

メッセージの遅延削除にかかる時間は，Reliable MessagingがHiRDBへ発行する，削除SQLにかかる時間から判断します。削除SQLにかかる時間はHiRDBのSQLトレースから判断します。

以下に，Reliable Messagingが遅延削除で発行する削除SQLを示します。

削除SQLは永続キュー毎に発行されるため，発行するSQLの中で一番時間のかかったSQLを元にチューニングを行ってください。

DELETE FROM <DBへの接続ユーザ名>.<RMSystemNameプロパティ指定値>_MSG_<キュー名称>
                                         WHERE GROUP_NAME=' ' AND DELETE_FLAG=?"

(3)　Reliable Messagingの管理情報テーブルの作成

DBMSとしてHiRDBを使用する場合，次に示す手順で管理情報テーブルを作成します。HiRDB SQL Executerの使用方法については，HiRDB SQL Executerのドキュメントを参照してください。

コンフィグレーションプロパティのRMSystemNameに指定する値（3文字以内の英数字）の決定

RMSystemNameについては，「6.2　Reliable Messagingのコンフィグレーションプロパティの詳細説明」を参照してください。

SQLファイルの編集

テーブル作成用SQLファイル（%HRMDIR%¥sql¥createtableshirdb.sql）を任意の場所にコピーしてから，このファイルをテキストエディタで開き，ファイル中の5か所の"<RMSystemName>"の部分を手順1.で決定したRMSystemNameの指定値で置き換えて，ファイルを保存します。

また，必要に応じて"<RMAREA>"の部分を表の行を格納するRDエリア名に変更します。または"IN <RMAREA>"の部分を削除します。"IN <RMAREA>"の部分を削除した場合は，格納するRDエリアをHiRDBが決定します。HiRDBが決定するRDエリアについては，マニュアル「HiRDB SQLリファレンス」を参照してください。

SQLファイルの実行

Windowsの場合

次に示すコマンドでHiRDB SQL Executerを開始します。

pdsqlw -u <接続ユーザ名>/<パスワード>※
       -h <HiRDBサーバのホスト名またはIPアドレス>
       -n <HiRDBサーバのポート番号>

HiRDB SQL Executerの［ファイル］メニューから［ファイルから実行］を選択し，手順2.で編集したSQLファイルを指定して実行します。

UNIXの場合

環境変数PDUSER※,PDHOST,PDNAMEPORTを設定し，次に示すコマンドでHiRDB SQL ExecuterからSQLファイルを実行します。

pdsql  <  <手順2.で編集したSQLスクリプトファイルのパス>

注※

接続ユーザ名には，権限を付与した接続ユーザ名を指定します。詳細については，「3.4.1(1)(b)　HiRDBのユーザ権限の付与」を参照してください。

共用キューを使用して複数システム間でのアプリケーション連携をする場合には，送信側システムと受信側システムで同じ接続ユーザ名を使用します。

3.4.2　DBMSの設定（Oracleを使用する場合）

Oracleを使用する場合のDBMSの設定について説明します。説明する以外の設定内容や手順については，Oracleのマニュアルを参照してください。

なお，Oracle RACの機能は，Oracle 10g Release2以降に対してだけ使用できます。Oracle RACの機能を利用する場合は，Oracle Clusterwareをインストールしてください。

(1)　DBMSの初期設定（Oracleを使用する場合）

DBMSとしてOracleを使用する場合は，Oracleに管理情報を格納するために，Oracleに接続ユーザを作成して，接続ユーザに権限を付与する必要があります。ユーザ作成や権限付与の方法の詳細については，Oracleのマニュアルを参照してください。

(a)　付与する権限

システム権限

CREATE ANY INDEXシステム権限

CREATE SESSIONシステム権限

CREATE TABLEシステム権限

FORCE ANY TRANSACTIONシステム権限

オブジェクト権限

SYS.DBA_PENDING_TRANSACTIONSのSELECT権限

SYS.DBMS_SYSTEMのEXECUTE権限

ロール権限

SELECT_CATALOG_ROLE権限

(b)　ユーザ作成と権限付与の方法

次のどちらかの方法でユーザ作成と権限付与を行います。

Oracle Enterprise Managerコンソールを使用する

sqlplusを使用する

(2)　DBクライアントの設定

Oracleに接続するためには，Reliable Messagingが動作するマシンで，ネット・サービス名を作成します。ネット・サービス名を作成する方法については，Oracleのマニュアルを参照してください。

(3)　Reliable Messagingの管理情報テーブルの作成

DBMSとしてOracleを使用する場合，次に示す手順で管理情報テーブルを作成します。SQL*Plusの使用方法については，Oracleのマニュアルを参照してください。

コンフィグレーションプロパティのRMSystemNameに指定する値（3文字以内の英数字）の決定

RMSystemNameについては，「6.2　Reliable Messagingのコンフィグレーションプロパティの詳細説明」を参照してください。

SQLファイルの編集

テーブル作成用SQLファイル（%HRMDIR%¥sql¥createtablesoracle.sql）を任意の場所にコピーしてから，このファイルをテキストエディタで開き，ファイル中の5か所の"<RMSystemName>"の部分を手順1.で決定したRMSystemNameの指定値で置き換えて，ファイルを保存します。

GUI版SQL*Plusまたはコマンドライン版sqlplusの起動

「3.4.2(1)　DBMSの初期設定（Oracleを使用する場合）」の手順で作成したユーザを使用してデータベースに接続します。

コマンドの実行

次の形式で実行してください。

start <手順2.で編集したSQLファイルの絶対パス>

3.4.3　J2EEサーバ（Application Server）の設定

J2EEサーバ（Application Server）の設定をして，J2EEサーバを構築します。J2EEサーバの構築については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

3.4.4　キュー定義ファイルの作成（永続版リソースアダプタの場合）

キュー定義ファイルは，JNDIネーミングサービスに登録するキュー表示名と実際のキュー名を関連づけるファイルです。テキストファイルで作成して，任意のディレクトリに格納してください。キュー定義ファイルのフルパスをQueueConfigFileNameプロパティに指定すると，Reliable Messagingの開始時に，定義されたキュー表示名がJNDIネーミングサービスに登録されます。

なお，キュー作成時の表示名を利用する場合，キュー定義ファイルの作成は不要です。

(1)　キュー定義ファイルの記述形式

記述形式

QueueImplClass = jp.co.Hitachi.soft.reliablemessaging.ra.jms.QueueImpl※1
Queue.通番※2.DisplayName = キュー表示名※3
Queue.通番.QueueName = キュー名※4

注※1

ユーザの環境に依存しない固定の値です。

注※2

通番には1〜20480の範囲の値を指定してください。

注※3

キュー表示名として任意の名称を指定します。

キュー表示名はJNDIネーミングサービスに"<Reliable Messagingの表示名>__<キュー表示名>__que"の形式で登録されます。なお，"<Reliable Messagingの表示名>__<キュー表示名>__que"の形式の文字列の長さが256文字を超えないようにしてください。

<Reliable Messagingの表示名>は，Connector属性ファイルの<display-name>タグの指定値をサニタイズ（半角英数字以外をアンダスコア（_）に変更）した値です。<display-name>タグの初期値は"Cosminexus_Reliable_Messaging"です。Connector属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

<キュー表示名>には，アンダスコア二つ（__）を指定しないでください。

注※4

キュー名はhrmmkqueコマンド引数指定値を指定します。

(2)　キュー定義ファイルの記述例

QueueImplClass = jp.co.Hitachi.soft.reliablemessaging.ra.jms.QueueImpl
Queue.1.DisplayName = Q1
Queue.1.QueueName = Queue1
Queue.2.DisplayName = Q2
Queue.2.QueueName = Queue2

(3)　キュー定義ファイルの作成規則

java.util.Properties.load()メソッドで読み取りできる形式にしてください。コメントや継続行の扱いも同様です。

QueueImplClassの指定がない場合および値が指定されていない場合はデプロイ時にエラーが発生します。

一つのキューについてDisplayNameおよびQueueNameの両方を指定してください。

同一のプロパティを複数記述した場合は，どの値が有効になるか保証しません。

通番は1から指定してください。通番1のキュー定義がない場合はデプロイ時にエラーが発生します。

Queue.n.DisplayNameの指定がない場合および値が指定されていない場合，通番がn-1番目のキューまでが有効になります。通番n以降のキュー定義は無視されます。

QueueNameの指定がない，または値が指定されていないキューは無視されます。

キュー定義が一つもない場合はフォーマット不正によってデプロイ時にエラーが発生します。

表示名が重複した場合，通番の大きい方が有効になります。

通番の最大値より大きい値のキュー定義は無視されます。

DisplayNameに指定できる文字は，半角英字（A〜Z，a〜z）半角数字（0〜9）および半角のアンダスコア（_）です。これら以外の文字を指定したキューは無視されます。

QueueNameに指定する値は，大文字と小文字をhrmmkqueコマンド引数指定値と一致させてください。

3.4.5　Reliable Messagingのプロパティ定義（永続版リソースアダプタの場合）

Reliable Messagingのプロパティを定義します。Reliable Messagingをデプロイしたあとでも実行できます。なお，設定済みのReliable Messagingのプロパティを変更する場合は，該当するReliable Messagingを停止した状態で実行してください。

Reliable Messagingがデータベースと接続するには，DB Connector for Reliable Messagingのコンフィグレーションプロパティを設定する必要があります。DB Connector for Reliable Messagingのコンフィグレーションプロパティの設定については，「3.4.8　DB Connector for Reliable Messagingのプロパティ定義」を参照してください。

(1)　編集する属性ファイル

Reliable Messagingで提供するConnector属性ファイルのテンプレートを任意のディレクトリにコピーして，コピーしたファイルを編集します。

Connector属性ファイルのテンプレートは，次のディレクトリに格納されています。

%HRMDIR%¥conf¥rm_prop.xml

なお，cjgetrespropコマンドによって取得したConnector属性ファイルを使用することもできます。

注意事項

テンプレートからコピーしたConnector属性ファイルにASCII文字以外を使用する場合は，次のどちらかの対処が必要です。

UTF-8形式で保存する。

編集したファイルの文字エンコーディング形式に従って，ファイルの先頭行に次に示すencoding宣言を追加する。

<?xml version="1.0" encoding="＜文字エンコーディング＞"?>

(2)　編集する属性設定項目

Reliable Messagingのプロパティ設定項目を次に示します。

リソースアダプタの一般情報

コンフィグレーションプロパティ

実行時プロパティ

(a)　リソースアダプタの一般情報

設定できるReliable Messagingの一般情報属性（<outbound-resourceadapter>タグ）の設定項目を次に示します。

項目

必須

対応するタグ

トランザクションサポートのレベル

○

<transaction-support>

再認証のサポート有無※

○

<reauthentication-support>

（凡例）　○：必須

注※　必ずfalseを指定してください。

プロパティの設定項目の説明については，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

(b)　コンフィグレーションプロパティ

Reliable Messagingのコンフィグレーションプロパティ（<outbound-resourceadapter> - <connection-definition> - <config-property>タグ）の設定項目を次に示します。

項目

対応するタグ

コンフィグレーションプロパティ名

<config-property-name>

コンフィグレーションプロパティのデータ型

<config-property-type>

コンフィグレーションプロパティの値

<config-property-value>※

注※　コンフィグレーションプロパティの値をクリアする場合

<config-property-value>タグだけを指定して，値を指定しないでください。

<config-property-value>タグ自体が指定されていない場合は，そのプロパティの値は変更されないで，すでに設定されている値がそのまま有効になります。

定義するコンフィグレーションプロパティの数だけ上記の設定を繰り返してください。

Reliable Messagingのコンフィグレーションプロパティの設定内容については，「6.　コンフィグレーションプロパティ」を参照してください。

(c)　実行時プロパティ

Reliable Messagingの実行時プロパティ（<outbound-resourceadapter> - <connection-definition> - <connector-runtime> - <property>タグ）の設定項目を次に示します。

項目

対応するタグ

プロパティ名

<property-name>

プロパティのデータ型

<property-type>

プロパティの値

<property-value>

定義するプロパティの数だけ，上記の設定を繰り返してください。

実行時プロパティ名（<property-name>）およびコネクションプールの動作と注意事項については，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」のDB Connectorのプロパティ定義に関する内容を参照してください。

注意事項

ユーザ名およびコネクションプールに関する設定値は，Reliable MessagingとDB Connector for Reliable Messagingで同じ値を設定してください。

(3)　コンフィグレーションプロパティの設定例

Reliable Messagingのコンフィグレーションプロパティの設定例を示します。コンフィグレーションプロパティの各項目の詳細については，「6.2　Reliable Messagingのコンフィグレーションプロパティの詳細説明」を参照してください。

表3‒4　Reliable Messagingのコンフィグレーションプロパティの設定例（永続版リソースアダプタの場合）

項番

プロパティ名

設定例

1

RMSystemName

＜システム名＞

2

RMLinkedDBConnectorName

＜連携するDB Connectorの表示名＞

3

QueueConfigFileName

指定しない

4

RMDeadMessageQueueName

＜デッドメッセージキュー名＞

5

RMWaitRestoration

true

6

RMStartTimeout

60

7

RMAssociateJDBCFlag

true

8

RMSweepTimerInterval

600

9

RMDeleteMessageImmediately

false

10

RMPassByReference

false

11

RMMaxDeliveryNum

10

12

RMMethodTraceLevel

1

13

RMLineTraceLevel

3

14

RMLogTraceFileNum

2

15

RMLogTraceFileSize

2097152

16

RMSHConnectFlag

false

17

RMSHPort※1

20351

18

RMSHRecoveryTimerInterval※1

60

19

RMTRConnectFlag

false

20

RMTRSendThreadNum※2

1

21

RMTRResendInterval1Num※2

6

22

RMTRResendInterval1※2

10

23

RMTRResendInterval2※2

600

24

RMTRResendTimerInterval※2

10

25

RMTRPendingNotifyInterval※2

600

26

RMTRTransferControlDir※2

＜クライアント定義ファイルが格納されているディレクトリのパス＞

27

RMAutoDeleteMessage

false

注※1

RMSHConnectFlagプロパティがfalseの場合，設定値は無視されます。

注※2

RMTRConnectFlagプロパティがfalseの場合，設定値は無視されます。

3.4.6　DB Connector for Reliable Messagingの選択

インポートするDB Connector for Reliable Messagingを選択します。使用するデータベース，およびトランザクションの管理方法によって，次の表に示すどれかのRARファイルを指定します。

表3‒5　指定するRARファイルの種類

項番

RARファイル

説明

1

DBConnector_DABJ_CP_Cosminexus_RM.rar

DABroker Library用のDB Connector for Reliable Messagingです。HiRDBを使用する場合で，ローカルトランザクションを使用するとき，またはトランザクション管理なしで使用するとき（トランザクションのサポートレベルにLocalTransactionまたはNoTransactionを指定するとき）に選択します。

DABroker LibraryのConnectionPoolDataSourceを使用してデータベースに接続します。

2

DBConnector_DABJ_XA_Cosminexus_RM.rar

DABroker Library用のDB Connector for Reliable Messagingです。HiRDBを使用する場合で，グローバルトランザクションを使用するとき（トランザクションのサポートレベルにXATransactionを指定するとき）に選択します。

DABroker LibraryのXADataSourceを使用してデータベースに接続します。

3

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rar

HiRDB Type4 JDBC Driver用のDB Connector for Reliable Messagingです。HiRDBを使用する場合で，ローカルトランザクションを使用するとき，またはトランザクション管理なしで使用するとき（トランザクションのサポートレベルにLocalTransactionまたはNoTransactionを指定するとき）に選択します。

HiRDB Type4 JDBC DriverのConnectionPoolDataSourceを使用してHiRDBに接続します。

4

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rar

HiRDB Type4 JDBC Driver用のDB Connector for Reliable Messagingです。HiRDBを使用する場合で，グローバルトランザクションを使用するとき（トランザクションのサポートレベルにXATransactionを指定するとき）に選択します。

HiRDB Type4 JDBC DriverのXADataSourceを使用して，HiRDBに接続します。

5

DBConnector_Oracle_CP_Cosminexus_RM.rar

Oracle JDBC Thin Driver用のDB Connector for Reliable Messagingです。Oracleを使用する場合で，ローカルトランザクションを使用するとき，またはトランザクション管理なしで使用するとき（トランザクションのサポートレベルにLocalTransactionまたはNoTransactionを指定するとき）に選択します。

Oracle JDBC Thin DriverのConnectionPoolDataSourceを使用してOracleに接続します。

6

DBConnector_Oracle_XA_Cosminexus_RM.rar

Oracle JDBC Thin Driver用のDB Connector for Reliable Messagingです。Oracleを使用する場合で，グローバルトランザクションを使用するとき（トランザクションのサポートレベルにXATransactionを指定するとき）に選択します。

Oracle JDBC Thin DriverのXADataSourceを使用してOracleに接続します。

3.4.7　DB Connector for Reliable Messagingの前提製品の設定

(1)　DABroker Libraryの動作環境の設定

DABroker Libraryの環境設定で次に示す項目を設定してください。各項目の詳細については，DABroker Libraryのドキュメントを参照してください。また，設定方法の詳細については，マニュアル「アプリケーションサーバ 機能解説 互換編」のDABroker Libraryの動作環境の設定に関する内容を参照してください。なお，HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messagingを使用する場合は，DABroker Libraryを使用しないため，この設定は不要です。

(a)　BLOB/LONG/CLOB型データ受取バッファサイズ

Windowsの場合

環境設定の［リモートアクセス設定］タブで［BLOB/LONG/CLOB型データ受取バッファサイズ］に，次の条件を満たす値を設定してください。

DB Connector for Reliable MessagingのbufSizeプロパティに設定した値よりも大きい

1024以上（ただし，キュー間転送を利用する場合は10000以上）

UNIXの場合

<DABroker Library運用ディレクトリ>/confに作成した動作環境定義ファイルのDABHIRDBA_BLOBBUFSIZEに，bufSizeプロパティに設定する値より大きな値を設定してください。

bufSizeプロパティに設定する値については，「6.3.1　DABroker Libraryを使用してOracleまたはHiRDBに接続する場合」を参照してください。

(b)　漢字コードセット

Windowsの場合

環境設定の［リモートアクセス設定］タブで使用するDBの文字コードに合わせて［漢字コードセット］を設定してください。

UNIXの場合

<DABroker Library運用ディレクトリ>/confに作成した動作環境定義ファイルのDAB_LANGを使用するDBの文字コードに合わせて設定してください。

各DBの文字コードについては，マニュアル「HiRDB システム導入・設計ガイド」，およびOracleのマニュアルを参照してください。

環境設定が終わったら，データベースに接続するための設定をします。データベースに接続するための設定については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

(2)　Oracle JDBC Thin Driverの設定

Oracle JDBC Thin Driverを使用してOracleに接続する場合，J2EEサーバ側で次に示す設定をしてください。

(a)　Oracle JDBC Thin DriverのJARファイルの入手

Application Serverがサポートするバージョンの，Oracle JDBC Thin DriverのJARファイルを入手してください。

(b)　J2EEサーバのユーザクラスパスの指定

J2EEサーバのユーザクラスパスにOracle JDBC Thin DriverのJARファイルを指定してください。J2EEサーバ用のusrconf.cfgのadd.class.pathキーに「add.class.path=<Oracle JDBC Thin DriverのJARファイルのパス>」の形式で指定してください。

Application ServerがサポートするバージョンのOracle JDBC Thin DriverのJARファイル，およびOracle JDBC Thin Driverの設定方法の詳細については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」のOracleの設定（Oracle JDBC Thin Driverの場合）に関する内容を参照してください。

(3)　HiRDB Type4 JDBC Driverの設定

HiRDB Type4 JDBC Driverを使用してHiRDBに接続する場合，J2EEサーバ側で次に示す設定をしてください。

(a)　HiRDB Type4 JDBC DriverのJARファイルの入手

HiRDB Type4 JDBC DriverのJARファイルを入手してください。

JARファイルの格納場所については，マニュアル「HiRDB UAP開発ガイド」を参照してください。

(b)　J2EEサーバのユーザクラスパスの指定

J2EEサーバのユーザクラスパスにHiRDB Type4 JDBC DriverのJARファイルを指定してください。J2EEサーバ用のusrconf.cfgのadd.class.pathキーに「add.class.path=<HiRDB Type4 JDBC DriverのJARのパス>」の形式で指定してください。

HiRDB Type4 JDBC Driverの設定方法の詳細については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」のHiRDBの設定（HiRDB Type4 JDBC Driverの場合）に関する内容を参照してください。

3.4.8　DB Connector for Reliable Messagingのプロパティ定義

Reliable Messagingがデータベースと接続するには，DB Connector for Reliable Messagingのプロパティを定義する必要があります。「3.4.6　DB Connector for Reliable Messagingの選択」で選択したDB Connector for Reliable Messagingのプロパティを定義します。

DB Connector for Reliable Messagingのプロパティの定義は，DB Connector for Reliable Messagingをデプロイしたあとでも実行できます。なお，設定済みのDB Connector for Reliable Messagingのプロパティを変更する場合は，該当するDB Connector for Reliable Messagingを停止した状態で実行してください。

注意事項

DB Connector for Reliable Messagingでは，認証機能情報およびコネクションプーリング情報の設定は無効になります。このため，リソースアダプタの認証機能情報のユーザ名とパスワードの設定は，Reliable Messagingのプロパティ設定で実施してください。

(1)　編集する属性ファイル

Application Serverで提供するDB Connector for Reliable MessagingのConnector属性ファイルのテンプレートを任意のディレクトリにコピーして，コピーしたファイルを編集します。

DB Connector for Reliable MessagingのConnector属性ファイルのテンプレートは，次のディレクトリに格納されています。

＜Application Serverのインストールディレクトリ＞¥CC¥admin¥templates

DB Connector for Reliable MessagingのConnector属性ファイルのテンプレートについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」のConnector属性ファイルのテンプレートファイルに関する内容を参照してください。

注意事項

テンプレートからコピーしたConnector属性ファイルにASCII文字以外を使用する場合は，次のどちらかの対処が必要です。

UTF-8形式で保存する。

編集したファイルの文字エンコーディング形式に従って，ファイルの先頭行に次に示すencoding宣言を追加する。

<?xml version="1.0" encoding="＜文字エンコーディング＞"?>

(2)　編集する属性設定項目

DB Connector for Reliable Messagingのプロパティ設定項目を次に示します。

リソースアダプタの一般情報

コンフィグレーションプロパティ

実行時プロパティ

(a)　リソースアダプタの一般情報

設定できるDB Connector for Reliable Messagingの一般情報属性（<outbound-resourceadapter>タグ）の設定項目を次に示します。

項目

必須

対応するタグ

トランザクションサポートのレベル

○

<transaction-support>

再認証のサポート有無

○

<reauthentication-support>

（凡例）　○：必須

プロパティの設定項目の説明については，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

(b)　コンフィグレーションプロパティ

リソースアダプタのコンフィグレーションプロパティ（<outbound-resourceadapter> - <connection-definition> - <config-property>タグ）の設定項目を次に示します。

項目

対応するタグ

コンフィグレーションプロパティ名

<config-property-name>

コンフィグレーションプロパティのデータ型

<config-property-type>

コンフィグレーションプロパティの値

<config-property-value>※

注※　コンフィグレーションプロパティの値をクリアする場合

<config-property-value>タグだけを指定して，値を指定しないでください。

<config-property-value>タグ自体が指定されていない場合は，そのプロパティの値は変更されないで，すでに設定されている値がそのまま有効になります。

定義するコンフィグレーションプロパティの数だけ上記の設定を繰り返してください。

設定する必要がある項目は，DB Connector for Reliable Messagingの種類によって一部異なります。DB Connector for Reliable Messagingの種類によって，設定できるコンフィグレーションプロパティの違いについては，「3.4.8(3)　DB Connector for Reliable Messagingの種類によるコンフィグレーションプロパティの違い」を参照してください。

なお，PreparedStatementPoolSize，CallableStatementPoolSize，LogLevel，およびCancelStatement以外のプロパティは，すべてDABroker Library，HiRDB Type4 JDBC Driver，またはOracle JDBC Thin Driverに設定する項目です。DABroker Libraryの場合はDABroker Libraryの環境設定ユティリティ（Windowsの場合），またはDABroker Library動作環境定義ファイル（UNIXの場合）で設定します。詳細は，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

DB Connector for Reliable Messagingのコンフィグレーションプロパティの設定内容については，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

(c)　実行時プロパティ

DB Connector for Reliable Messagingの実行時プロパティ（<outbound-resourceadapter> - <connection-definition> - <connector-runtime> - <property>タグ）の設定項目を次に示します。

項目

対応するタグ

プロパティ名

<property-name>

プロパティのデータ型

<property-type>

プロパティの値

<property-value>

定義するプロパティの数だけ，上記の設定を繰り返してください。

実行時プロパティ名（<property-name>）およびコネクションプールの動作と注意事項については，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」のDB Connectorのプロパティ定義に関する内容を参照してください。

なお，DB Connector for Reliable Messagingの場合は，次の実行時プロパティの設定だけが有効となります。

ログを出力するかどうかの選択（LogEnabled）

注意事項

ユーザ名およびコネクションプールに関する設定値は，Reliable MessagingとDB Connector for Reliable Messagingで同じ値を設定してください。

(3)　DB Connector for Reliable Messagingの種類によるコンフィグレーションプロパティの違い

DB Connector for Reliable Messagingの種類によって，設定するコンフィグレーションプロパティが異なります。DB Connector for Reliable Messagingの種類を次に示します。

DABroker対応のDB Connector for Reliable Messaging

HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messaging

Oracle JDBC Thinドライバ対応のDB Connector for Reliable Messaging

(a)　各DB Connector for Reliable Messaging共通のコンフィグレーションプロパティ

DABroker対応のDB Connector for Reliable Messaging，HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messaging，Oracle JDBC Thinドライバ対応のDB Connector for Reliable Messaging共通で設定が必要なコンフィグレーションプロパティを次の表に示します。

表3‒6　各DB Connector for Reliable Messaging共通のコンフィグレーションプロパティ

プロパティ名

設定値

linkedResourceAdapterName

Reliable Messagingの表示名

(b)　DABroker対応のDB Connector for Reliable Messagingのコンフィグレーションプロパティ

DABroker対応のDB Connector for Reliable Messagingを使用する場合，Reliable Messagingとして設定が必要なDB Connector for Reliable Messagingのコンフィグレーションプロパティを次の表に示します。

表3‒7　DABroker対応のDB Connector for Reliable Messagingのコンフィグレーションプロパティ

項番

プロパティ名

設定値

1

description

接続先DBに必要な接続付加情報

2

DBHostName

接続先HiRDBのホスト名

3

XAOpenString※

XA_OPEN文字列

4

databaseName

Reliable Messagingの接続先DB

5

bufSize

DB Connector for Reliable MessagingがDBから受信したデータを格納するためのバッファサイズ

注※　XATransactionで使用する場合だけ設定が必要です。

(c)　HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messagingのコンフィグレーションプロパティ

HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messagingを使用する場合，Reliable Messagingとして設定が必要なDB Connector for Reliable Messagingのコンフィグレーションプロパティを次の表に示します。

表3‒8　HiRDB Type4 JDBC Driver対応のDB Connector for Reliable Messagingのコンフィグレーションプロパティ

項番

プロパティ名

設定値

1

description

接続先DBに必要な接続付加情報

2

DBHostName

接続先HiRDBのホスト名

3

XAOpenString※

XA_OPEN文字列

4

SQLWarningLevel

SQL実行時に発生した警告保持レベル

5

maxBinarySize

JDBC SQLタイプLONGVARBINARY型データ取得時のデータサイズの上限

注※　XATransactionで使用する場合だけ設定が必要です。

(d)　Oracle JDBC Thinドライバ対応のDB Connector for Reliable Messagingのコンフィグレーションプロパティ

Oracle JDBC Thinドライバ対応のDB Connector for Reliable Messagingを使用する場合，Reliable Messagingとして設定が必要なDB Connector for Reliable Messagingのコンフィグレーションプロパティを次の表に示します。

表3‒9　Oracle JDBC Thinドライバ対応のDB Connector for Reliable Messagingのコンフィグレーションプロパティ

項番

プロパティ名

設定値

1

databaseName

Oracleサーバ上の特定のデータベース名（SID）

2

serverName

Oracleサーバのホスト名またはIPアドレス

(4)　コンフィグレーションプロパティの設定例

次に示す場合のDB Connector for Reliable Messagingのコンフィグレーションプロパティの設定例を示します。

DBConnector_DABJ_CP_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_DABJ_XA_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_Oracle_CP_Cosminexus_RM.rarで，Oracleを使用する場合

DBConnector_Oracle_XA_Cosminexus_RM.rarで，Oracleを使用する場合

コンフィグレーションプロパティの各項目の詳細については，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

(a)　DBConnector_DABJ_CP_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_DABJ_CP_Cosminexus_RM.rarで，HiRDBを使用する場合のコンフィグレーションプロパティの設定例を次の表に示します。

表3‒10　データベースとしてHiRDBを使用する場合（DBConnector_DABJ_CP_Cosminexus_RM.rarの場合）

項番

プロパティ名

HiRDBの場合の設定例

1

linkedResourceAdapterName

＜連携するReliable Messagingのリソースアダプタの表示名＞

2

networkProtocol

lib

3

description

＜HiRDBポート番号＞※

4

DBHostName

＜HiRDBホスト名＞

5

loginTimeout

0

6

serverName

−

7

portNumber

40179

8

databaseName

HIRDB

9

DBEnv

−

10

encodLang

−

11

JDBC_IF_TRC

false

12

SV_EVENT_TRC

false

13

TRC_NO

500

14

uapName

−

15

bufSize

64

16

rowSize

16

17

OSAuthorize

false

18

HiRDBCursorMode

false

19

blockUpdate

false

20

executeDirectMode

false

21

SQLWarningIgnore

false

22

LONGVARBINARY_Access

REAL

23

bufferPoolSize

0

24

PreparedStatementPoolSize

10

25

CallableStatementPoolSize

10

26

ConnectionIDUpdate

false

27

logLevel

ERROR

（凡例）　−：設定は不要です。

注※　HiRDBクライアントの環境変数グループ名（Windowsの場合）または環境変数グループの設定ファイルのパス（UNIXの場合）を指定することもできます。

(b)　DBConnector_DABJ_XA_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_DABJ_XA_Cosminexus_RM.rarで，HiRDBを使用する場合のコンフィグレーションプロパティの設定例を次の表に示します。

表3‒11　データベースとしてHiRDBを使用する場合（DBConnector_DABJ_XA_Cosminexus_RM.rarの場合）

項番

プロパティ名

HiRDBの場合の設定例

1

linkedResourceAdapterName

＜連携するReliable Messagingのリソースアダプタの表示名＞

2

networkProtocol

lib

3

description

＜環境変数グループ識別子＞※1

4

DBHostName

＜HiRDBホスト名＞

5

XAOpenString

Windowsの場合

＜環境変数グループ識別子※2＞＋＜環境変数グループ名※3＞

UNIXの場合

＜環境変数グループ識別子※2＞＋＜環境変数グループの設定ファイルのパス※3＞

6

loginTimeout

0

7

serverName

−

8

portNumber

40179

9

databaseName

HIRDB

10

DBEnv

−

11

encodLang

−

12

JDBC_IF_TRC

false

13

SV_EVENT_TRC

false

14

TRC_NO

500

15

uapName

−

16

bufSize

64

17

rowSize

16

18

OSAuthorize

false

19

HiRDBCursorMode

false

20

blockUpdate

false

21

executeDirectMode

false

22

SQLWarningIgnore

false

23

LONGVARBINARY_Access

REAL

24

bufferPoolSize

0

25

XACloseString

−

26

RMID

1※4

27

XAThreadMode

true

28

XALocalCommitMode

true

29

PreparedStatementPoolSize

10

30

CallableStatementPoolSize

10

31

ConnectionIDUpdate

false

32

logLevel

ERROR

（凡例）　−：設定は不要です。

注※1　J2EEサーバ内でユニークな4バイトの文字列を指定します。

注※2　［Description］フィールドに入力した値を指定します。

注※3　HiRDBの環境変数グループ名（Windowsの場合）または環境変数グループの設定ファイルのパス（UNIXの場合）を指定します。詳細については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

注※4　リソースマネジャの識別子を指定します。J2EEサーバ内でユニークな1〜2147483647の数値で指定します。

(c)　DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarで，HiRDBを使用する場合のコンフィグレーションプロパティの設定例を次の表に示します。

表3‒12　データベースとしてHiRDBを使用する場合（DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarの場合）

項番

プロパティ名

HiRDBの場合の設定例

1

linkedResourceAdapterName

＜連携するReliable Messagingのリソースアダプタの表示名＞

2

description

＜HiRDBポート番号＞※

3

DBHostName

＜HiRDBホスト名＞

4

environmentVariables

＜HiRDBクライアント環境変数名＞

5

loginTimeout

8

6

encodeLang

−

7

JDBC_IF_TRC

false

8

TRC_NO

500

9

uapName

−

10

LONGVARBINARY_Access

REAL

11

SQLInNum

300

12

SQLOutNum

300

13

SQLWarningLevel

SQLWARN

14

SQLWarningIgnore

false

15

HiRDBCursorMode

false

16

maxBinarySize

64000

17

LONGVARBINARY_AccessSize

0

18

PreparedStatementPoolSize

10

19

CallableStatementPoolSize

10

20

CancelStatement

true

21

logLevel

ERROR

（凡例）　−：設定は不要です。

注※　HiRDBクライアントの環境変数グループ名（Windowsの場合）または環境変数グループの設定ファイルのパス（UNIXの場合）も指定できます。

(d)　DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarで，HiRDBを使用する場合

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarで，HiRDBを使用する場合のコンフィグレーションプロパティの設定例を次の表に示します。

表3‒13　データベースとしてHiRDBを使用する場合（DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarの場合）

項番

プロパティ名

HiRDBの場合の設定例

1

linkedResourceAdapterName

＜連携するReliable Messagingのリソースアダプタの表示名＞

2

description

＜環境変数グループ識別子＞

3

DBHostName

＜HiRDBホスト名＞

4

environmentVariables

＜HiRDBクライアント環境変数名＞

5

XAOpenString

Windowsの場合

＜環境変数グループ識別子※1＞＋＜環境変数グループ名※2＞

UNIXの場合

＜環境変数グループ識別子※1＞＋＜環境変数グループの設定ファイルのパス※2＞

6

loginTimeout

8

7

encodeLang

−

8

JDBC_IF_TRC

false

9

TRC_NO

500

10

uapName

−

11

LONGVARBINARY_Access

REAL

12

SQLInNum

300

13

SQLOutNum

300

14

SQLWarningLevel

SQLWARN

15

SQLWarningIgnore

false

16

HiRDBCursorMode

false

17

maxBinarySize

64000

18

LONGVARBINARY_AccessSize

0

19

XACloseString

−

20

XALocalCommitMode

true

21

PreparedStatementPoolSize

10

22

CallableStatementPoolSize

10

23

CancelStatement

true

24

logLevel

ERROR

（凡例）　−：設定は不要です。

注※1　［Description］フィールドに入力した値を指定します。

注※2　HiRDBの環境変数グループ名（Windowsの場合）または環境変数グループの設定ファイルのパス（UNIXの場合）を指定します。詳細については，マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。

(e)　DBConnector_Oracle_CP_Cosminexus_RM.rarで，Oracleを使用する場合

DBConnector_Oracle_CP_Cosminexus_RM.rarで，Oracleを使用する場合のコンフィグレーションプロパティの設定例を次の表に示します。

表3‒14　データベースとしてOracleを使用する場合（DBConnector_Oracle_CP_Cosminexus_RM.rarの場合）

項番

プロパティ名

Oracleの場合の設定例

1

linkedResourceAdapterName

＜連携するReliable Messagingのリソースアダプタの表示名＞

2

databaseName

＜Oracle SID＞

3

serverName

＜接続先Oracleのホスト名称，またはIPアドレス＞

4

portNumber

1521

5

url

−

6

loginTimeout

8000

7

PreparedStatementPoolSize

10

8

CallableStatementPoolSize

10

9

ConnectionIDUpdate

false

10

logLevel

ERROR

（凡例）　−：設定は不要です。

(f)　DBConnector_Oracle_XA_Cosminexus_RM.rarで，Oracleを使用する場合

DBConnector_Oracle_XA_Cosminexus_RM.rarで，Oracleを使用する場合のコンフィグレーションプロパティの設定例を次の表に示します。

表3‒15　データベースとしてOracleを使用する場合（DBConnector_Oracle_XA_Cosminexus_RM.rarの場合）

項番

プロパティ名

Oracleの場合の設定例

1

linkedResourceAdapterName

＜連携するReliable Messagingのリソースアダプタの表示名＞

2

databaseName

＜Oracle SID＞

3

serverName

＜接続先Oracleのホスト名称，またはIPアドレス＞

4

portNumber

1521

5

url

−

6

loginTimeout

8000

7

sessionTimeout

300

8

PreparedStatementPoolSize

10

9

CallableStatementPoolSize

10

10

ConnectionIDUpdate

false

11

logLevel

ERROR

（凡例）　−：設定は不要です。

3.4.9　DB Connector for Reliable MessagingとReliable Messagingのインポート

DB Connector for Reliable MessagingおよびReliable Messagingをインポートします。

(1)　DB Connector for Reliable Messagingのインポート

次に示すコマンドを実行してDB Connector for Reliable Messagingをインポートします。

cjimportresコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

実行形式

cjimportres ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -type rar -f ＜ファイルパス＞

実行例

cjimportres MyServer -type rar -f "C:¥Program Files¥Hitachi¥Cosminexus¥CC¥DBConnector¥ReliableMessaging¥DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rar"

＜ファイルパス＞には，「3.4.6　DB Connector for Reliable Messagingの選択」で選択したRARファイル指定してください。RARファイルは，次のディレクトリに格納されています。

Windowsの場合

＜Application Serverのインストールディレクトリ＞¥CC¥DBConnector¥ReliableMessaging¥

UNIXの場合

/opt/Cosminexus/CC/DBConnector/ReliableMessaging/

(2)　Reliable Messagingのインポート

DB Connector for Reliable Messagingと同様に，cjimportresコマンドを実行して，Reliable Messagingをインポートします。

実行例

cjimportres MyServer -type rar -f "C:¥Program Files¥Hitachi¥Cosminexus¥RM¥lib¥reliablemessaging.rar"

＜ファイルパス＞には，Reliable MessagingのRARファイル（reliablemessaging.rar）を指定してください。RARファイルは，次のディレクトリに格納されています。

%HRMDIR%¥lib

3.4.10　DB Connector for Reliable MessagingとReliable Messagingのプロパティ設定

次に示すコマンドを実行して，DB Connector for Reliable MessagingおよびReliable Messagingのプロパティを設定します。

実行形式

cjsetresprop ［＜サーバ名称＞］ -type rar -resname ＜DB Connector for Reliable Messagingの表示名，またはReliable Messagingの表示名＞ -c ＜Connector属性ファイルパス＞

実行例

cjsetresprop MyServer -type rar -resname Reliable_Messaging -c rm_prop.xml

注意事項

DB Connector for Reliable MessagingおよびReliable Messagingをデプロイしたあとでプロパティを定義する場合は，cjgetrarpropコマンドとcjsetrarpropコマンドを使用してください。コマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

3.4.11　DB Connector for Reliable MessagingとReliable Messagingのデプロイ

DB Connector for Reliable MessagingおよびReliable Messagingは，デプロイするとJ2EEリソースアダプタとして使用できます。

サーバ管理コマンドでインポートしたDB Connector for Reliable MessagingおよびReliable Messagingをデプロイすると，そのJ2EEサーバ上で動作するすべてのJ2EEアプリケーションから使用できるようになります。なお，デプロイしたあとで，プロパティを定義することもできます。デプロイ後に定義する場合は，該当するDB Connector for Reliable MessagingおよびReliable Messagingを停止した状態で実行してください。プロパティを定義する方法については，「3.4.5　Reliable Messagingのプロパティ定義（永続版リソースアダプタの場合）」および「3.4.8　DB Connector for Reliable Messagingのプロパティ定義」を参照してください。

次に示すコマンドを実行して，DB Connector for Reliable MessagingおよびReliable Messagingをデプロイします。

実行形式

cjdeployrar ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -resname ＜DB Connector for Reliable Messagingの表示名＞ -resname ＜Reliable Messagingの表示名＞

実行例

cjdeployrar MyServer -resname DB_Connector_for_HiRDB_Type4_Cosminexus_RM -resname Cosminexus_Reliable_Messaging

cjdeployrarコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

3.4.12　Reliable Messagingの運用前の準備（永続版リソースアダプタの場合）

Reliable Messagingの運用前の準備について説明します。

(1)　DB Connector for Reliable MessagingとReliable Messagingの接続テスト

DB Connector for Reliable MessagingおよびReliable Messagingに設定した内容が正しいかどうか，接続テストによって検証します。

(a)　接続テストで確認できる項目

接続テストの成功によって，次に示す項目を確認できます。

接続先DBの設定（ホスト名，ポート番号，ユーザ名，パスワードなど）が正しいこと。

接続先DBが正常に開始していること。

RMLinkedDBConnectorNameプロパティが正しく設定されていて，かつ指定したReliable Messagingと連携するDB Connector for Reliable Messagingが開始済みであること。

RMSystemNameプロパティのフォーマットが正しいこと。

(b)　接続テストの手順

DB Connector for Reliable Messagingを開始します。

DB Connector for Reliable Messagingの開始方法については，「3.4.12(2)　DB Connector for Reliable MessagingとReliable Messagingの開始」を参照してください。

次に示すコマンドを実行してReliable Messagingの接続テストを実施します。

実行形式

cjtestres ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -type rar -resname ＜Reliable Messagingの表示名＞

実行例

cjtestres MyServer -type rar -resname Cosminexus_Reliable_Messaging

なお，接続に失敗した場合には，出力されるメッセージを基にエラーに対処し，再度接続テストを実施してください。

cjtestresコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

注意事項

一度接続テストをしたDB Connector for Reliable MessagingおよびReliable Messagingは，J2EEサーバを再起動するまで削除できません。DB Connector for Reliable MessagingおよびReliable Messagingを削除する場合は，DB Connector for Reliable MessagingおよびReliable Messagingを停止してから，J2EEサーバを再起動してください。

(c)　接続テストの失敗事例

接続テストに失敗する事例を次に示します。

DBの管理情報テーブルが正常に作成されていない場合

接続テストではDBへのアクセスを試みます。Reliable Messagingが前提とするDBの管理情報テーブルにアクセスするため，DBの管理情報テーブルが正常に作成されていないときは接続テストに失敗します。

Component Container側でエラーを検知した場合

接続テストではReliable MessagingとComponent Containerの両方でチェックを実行します。そのため，Component Container側でエラーを検知すると接続テストに失敗する場合もあります。

接続テストに成功してもReliable Messagingの起動時に接続に失敗する場合があります。事例を次に示します。

QueueConfigFileNameプロパティを指定した場合のファイルパスが不正のとき，または指定したキュー定義ファイルの内容が不正のとき

ロガーの初期化に失敗したとき，またはコマンドのネーミングサービスの登録に失敗したとき

(2)　DB Connector for Reliable MessagingとReliable Messagingの開始

DB Connector for Reliable MessagingおよびReliable Messagingを開始します。なお，DB Connector for Reliable MessagingおよびReliable Messagingが連携するために，J2EEリソースアダプタは次の順序で開始してください。

DB Connector for Reliable Messaging

Reliable Messaging

この順序で開始しないとエラーになります。

なお，Reliable Messagingの接続テストを実施して，すでにDB Connector for Reliable Messagingが開始している場合は，手順1.は不要です。

次に示すコマンドを実行してDB Connector for Reliable Messagingを開始します。

実行形式

cjstartrar ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -resname ＜DB Connector for Reliable Messagingの表示名＞

実行例

cjstartrar MyServer -resname DB_Connector_for_HiRDB_Type4_Cosminexus_RM

手順1.と同様に，cjstartrarコマンドを実行してReliable Messagingを開始します。

実行形式

cjstartrar ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -resname ＜Reliable Messagingの表示名＞

実行例

cjstartrar MyServer -resname Cosminexus_Reliable_Messaging

cjstartrarコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

注意事項

J2EEアプリケーション中のJ2EEリソースがDB Connector for Reliable MessagingまたはReliable Messagingを参照している場合は，DB Connector for Reliable MessagingまたはReliable Messagingを開始してから，J2EEアプリケーションを開始してください。

一度開始したリソースアダプタは，J2EEサーバを再起動するまで削除できません。リソースアダプタを削除する場合は，リソースアダプタを停止してから，J2EEサーバを再起動してください。

(3)　キューの作成

DB Connector for Reliable MessagingおよびReliable Messagingを開始すると，Reliable Messagingが管理状態になります。管理状態になったことを確認したら，hrmmkqueコマンドを入力して，キューを作成してください。そのあと，hrmstartコマンドを入力して，Reliable Messagingを実行状態にします。

詳細については，「4.2　キューの運用（永続版リソースアダプタの場合）」を参照してください。

3.4.13　キュー間転送を使用する場合の設定

キュー間転送を使用する場合の設定について説明します。

(1)　SOAP通信基盤の設定

キュー間転送をする場合，SOAP通信基盤を使用します。

SOAP通信基盤は，クライアント定義ファイルおよびサーバ定義ファイルに定義された内容に従って送受信処理をします。

(a)　クライアント定義ファイルの使用方法

SOAP通信基盤が出力するメッセージログ，トレースファイルの内容を指定する場合，またはReliable Messagingを複数デプロイする場合は次に示す順序に従ってください。

クライアント定義ファイルを任意のディレクトリにコピーします。

Reliable MessagingのRMTRTransferControlDirプロパティに，コピーしたクライアント定義ファイルが格納されているディレクトリのパスを指定します。

注意事項

クライアント定義ファイルは削除しないでください。

クライアント定義ファイルのファイル名は変更しないでください。

Reliable Messagingを複数デプロイする場合，RMTRTransferControlDirプロパティには，クライアント定義ファイルが格納されているディレクトリのパスをReliable Messagingごとに指定してください。なお，クライアント定義ファイルで設定する，c4web.logger.log_file_prefixキーはReliable Messagingごとに異なる文字列を設定してください。

uCosminexus Reliable Messaging 01-00からReliable Messaging 01-02以降にバージョンアップする場合は，J2EEサーバを起動する前にJ2EEサーバ用オプション定義ファイル（usrconf.cfg）をテキストエディタで開き，次に示す行を削除してください。

add.class.path=<uCosminexus Reliable Messaging 01-00のインストールディレクトリ>¥conf

J2EEサーバ用オプションファイル（usrconf.cfg）をテキストエディタで開き，add.class.path=<Application Serverのインストールディレクトリ>¥c4web¥lib¥hitsaaj.jarが指定されていて，add.class.path=<Application Serverのインストールディレクトリ>¥jaxws¥lib¥cjjaxws.jarが指定されていないことを確認してください。

クライアント定義ファイルで設定できるキー名称と値の一覧を次の表に示します。次の表に示したキーだけを設定してください。ほかのキーを設定した場合，動作は保証されません。

表3‒16　クライアント定義ファイルで設定できるキー名称と値の一覧

キー名称

値

c4web.logger.log_file_prefix

トレースファイル，アプリケーションログのプレフィクス

c4web.common.prf_trace_level

性能解析トレースの出力オプション

c4web.common.send_max_soap_envelope_size

送信できるSOAPEnvelopeの最大サイズ

c4web.common.receive_max_soap_envelope_size

受信できるSOAPEnvelopeの最大サイズ

c4web.attachment.send_max_attachment_count

送信できる添付データの最大個数

c4web.attachment.receive_max_attachment_count

受信できる添付データの最大個数

c4web.attachment.send_max_attachment_size

送信できる添付データの最大サイズ

c4web.attachment.receive_max_attachment_size

受信できる添付データの最大サイズ

クライアント定義ファイルで設定できるキーの詳細については，マニュアル「アプリケーションサーバ SOAPアプリケーション開発の手引」を参照してください。

(b)　サーバ定義ファイルの設定

キュー間転送をする場合，サーバ定義ファイルは，キュー間転送用Webアプリケーションを対象に設定する必要があります。

サーバ定義ファイルで設定できるキー名称と値の一覧を次の表に示します。次の表に示したキーだけを設定してください。ほかのキーを設定した場合，動作は保証されません。

表3‒17　サーバ定義ファイルで設定できるキー名称と値の一覧

キー名称

値

c4web.logger.<識別子>.log_file_prefix

トレースファイル，アプリケーションログのプレフィクス

c4web.common.<識別子>.prf_trace_level

性能解析トレースの出力オプション

c4web.common.<識別子>.send_max_soap_envelope_size

送信できるSOAPEnvelopeの最大サイズ

c4web.common.<識別子>.receive_max_soap_envelope_size

受信できるSOAPEnvelopeの最大サイズ

c4web.attachment.<識別子>.send_max_attachment_count

送信できる添付データの最大個数

c4web.attachment.<識別子>.receive_max_attachment_count

受信できる添付データの最大個数

c4web.attachment.<識別子>.send_max_attachment_size

送信できる添付データの最大サイズ

c4web.attachment.<識別子>.receive_max_attachment_size

受信できる添付データの最大サイズ

キー名称の<識別子>には，キュー間転送用Webアプリケーションのコンテキストルートを指定します。

サーバ定義ファイルで設定できるキーの詳細については，マニュアル「アプリケーションサーバ SOAPアプリケーション開発の手引」を参照してください。

(2)　キュー間転送を使用する場合のReliable Messagingの設定

キュー間転送を使用する場合は，送信側と受信側のReliable Messagingに対して次に示す設定をしてください。

コンフィグレーションプロパティのRMTRConnectFlagにtrueを指定

サーバ管理コマンドでReliable Messagingのearファイル（キュー間転送用Webアプリケーション）をインポート

サーバ管理コマンドでReliable Messagingのキュー間転送用WebアプリケーションとReliable Messagingのリソースアダプタを関連づけ

hrmstartコマンドを入力してReliable Messagingを実行状態に移行

(3)　転送データ相互接続用インタフェースを利用する場合の設定

転送データ相互接続用インタフェースを利用したアプリケーションを作成する場合，転送データ相互接続用インタフェースのライブラリを開発環境のクラスパスに含める必要があります。詳細は「7.5　転送データ相互接続用インタフェースの一覧」を参照してください。

3.5　Reliable Messagingのシステム構築（非永続版リソースアダプタの場合）

非永続版リソースアダプタの場合のReliable Messagingのシステム構築について説明します。

3.5.1　キュー作成ファイルの作成

非永続版リソースアダプタを使用する場合，キュー作成ファイルに記述したキュー定義文を基にキューを作成します。キュー作成ファイルはテキストファイルで作成して，任意のディレクトリに格納してください。キュー作成ファイルのフルパスをQueueMakeFileNameプロパティに指定すると，キュー作成ファイルに指定されたキュー定義文を基に，Reliable Messaging開始時に非永続キュー属性のローカルキューが作成されます。

(1)　キュー作成ファイルの記述形式

記述形式

hrmmkque 〔-d {serial｜parallel｜parallel_unit_order}〕
         〔-n 最大メッセージ数〕〔-x 表示名〕
         〔-e メッセージ有効期間〕
         キュー名

オプション

-d {serial｜parallel｜parallel_unit_order}　〜《parallel》

作成するキューのメッセージ取り出しモードを指定します。

serial：シリアル取り出し属性

parallel：パラレル取り出し属性

parallel_unit_order：パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）

各属性を指定したときのメッセージの処理については，「2.3.2　メッセージ取り出しモード」のメッセージ取り出しモードの説明を参照してください。

-n 最大メッセージ数　〜＜数字＞((1〜65535))《1024》

キューに格納するメッセージの最大数を指定します。

-e メッセージ有効期間　〜＜数字＞((0〜2592000))《0》

キューに格納するメッセージの有効期間を秒単位で指定します。

0を指定する場合，メッセージの有効期間は無限です。

有効期間を指定するときのメッセージの処理については，「2.3.5　メッセージの有効期間」を参照してください。有効期間に達すると，そのメッセージは破棄されます。

-x 表示名　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はキュー名と同じ名称を指定したものと見なされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。

オプションを指定するときの注意事項を次に示します。

オプションは，キュー名より前に指定してください。

オプションは順序不同です。

"hrmmkque"，オプション，およびキュー名の間は一つ以上の半角スペース，タブ，または改行のどれかを入力してください。

同じオプションフラグを2回以上指定すると最後に指定したものが有効となります。例えば，次のように「-n 1」のあとに「-n 2」を指定すると，「-n 2」が有効になります。

hrmmkque -n 1 -n 2

引数

キュー名　〜＜1〜20文字の識別子＞

作成するキューの名前を指定します。

指定できる文字は，先頭文字が英数字で，2文字目以降が英数字または_（アンダスコア）となります。

キュー作成ファイルに対して同一のキュー名称を指定した場合は，後ろに記述された同一のキュー名称を含むキュー定義文が無視され，処理が続行されます。

(2)　キュー作成ファイルの記述例

記述例1

hrmmkque queue1;

記述例2

hrmmkque -e 1000    # 有効期限は1000秒（約16分）を指定
-n 65535            # 最大メッセージ数は-nオプションの最大値を指定
queue2;

(3)　キュー作成ファイルの作成規則

定義の先頭には，hrmmkqueを入力してください。行の先頭でも途中でも差し支えありません。

定義の終端には，セミコロン（;）を指定してください。

hrmmkqueからセミコロン（;）までが定義と解釈されます。

定義の中で改行やコメントを挿入できます。ただし，文字列の途中で改行はできません。

シャープ（#）で始まる行はコメントと見なされます。行の途中にシャープ（#）がある場合は，シャープ（#）以降から行の最後までがコメントと見なされます。

コメントに相当しない位置で，かつキュー定義文に含まれない位置で入力された，"hrmmkque"，シャープ（#），半角スペース，タブ，および改行以外の文字は，すべて不正と見なされます。

参考

キューを削除する場合，削除するキューのキュー定義文を削除するか，または先頭にシャープ（#）を付けてコメントにします。

(4)　キュー作成ファイルの作成時の注意事項

次の場合は，Reliable Messagingが閉塞します。

キュー作成ファイルの読み込みに失敗した場合

指定されたパスにキュー作成ファイルがない場合

キュー作成ファイル読み込み時にメモリ不足が発生した場合

キュー作成ファイルに不正なキュー定義文がある場合

キュー作成ファイルに"hrmmkque"と対になるセミコロンがない場合

キュー作成ファイルに有効なキュー定義文が存在しない場合

キュー作成ファイルの読み込み処理中に何らかの入出力例外が発生した場合

オプションフラグ，フラグ引数，またはキュー名に不正がある場合，該当の定義文を無視して処理が続行されます。

-xオプションで指定したキューの表示名は，キュー定義ファイルを使用しない場合に，指定した表示名でJNDIネーミングサービスに登録されます。キュー定義ファイルを使用する場合は，指定した表示名でJNDIネーミングサービスに登録されません。

3.5.2　キュー定義ファイルの作成（非永続版リソースアダプタの場合）

キュー定義ファイルは，JNDIネーミングサービスに登録するキュー表示名と実際のキュー名を関連づけるファイルです。テキストファイルで作成して，任意のディレクトリに格納してください。キュー定義ファイルのフルパスをQueueConfigFileNameプロパティに指定すると，Reliable Messagingの開始時に，定義されたキュー表示名がJNDIネーミングサービスに登録されます。

なお，キュー作成時の表示名を利用する場合，キュー定義ファイルの作成は不要です。

(1)　キュー定義ファイルの記述形式

キュー定義ファイルの記述形式について，次に示します。

記述形式

QueueImplClass = jp.co.Hitachi.soft.reliablemessaging_np.ra.jms.QueueImpl※1
Queue.通番※2.DisplayName = キュー表示名※3
Queue.通番.QueueName = キュー名※4

注※1

ユーザの環境に依存しない固定の値です。

永続版リソースアダプタの場合と指定値が異なるので注意してください。

注※2

通番には1〜20480の範囲の値を指定してください。

注※3

キュー表示名として任意の名称を指定します。

キュー表示名はJNDIネーミングサービスに"<Reliable Messagingの表示名>__<キュー表示名>__que"の形式で登録されます。なお，"<Reliable Messagingの表示名>__<キュー表示名>__que"の形式の文字列の長さが256文字を超えないようにしてください。

Reliable Messagingの表示名は，Connector属性ファイルの<display-name>タグの指定値をサニタイズ（半角英数字以外をアンダスコア（_）に変更）した値です。<display-name>タグの初期値は"Cosminexus_Reliable_Messaging"です。Connector属性ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

<キュー表示名>には，アンダスコア二つ（__）を指定しないでください。

注※4

キュー名はキュー作成ファイルのhrmmkque定義の引数指定値を指定します。

(2)　キュー定義ファイルの記述例

QueueImplClass = jp.co.Hitachi.soft.reliablemessaging_np.ra.jms.QueueImpl
Queue.1.DisplayName = Q1
Queue.1.QueueName = Queue1
Queue.2.DisplayName = Q2
Queue.2.QueueName = Queue2

(3)　キュー定義ファイルの作成規則

java.util.Properties.load()メソッドで読み取りできる形式にしてください。コメントや継続行の扱いも同様です。

QueueImplClassの指定がない場合および値が指定されていない場合はデプロイ時にエラーが発生します。

一つのキューについてDisplayNameおよびQueueNameの両方を指定してください。

同一のプロパティを複数記述した場合は，どの値が有効になるか保証しません。

通番は1から指定してください。通番1のキュー定義がない場合はデプロイ時にエラーが発生します。

Queue.n.DisplayNameの指定がない場合および値が指定されていない場合，通番がn-1番目のキューまでが有効になります。通番n以降のキュー定義は無視されます。

QueueNameの指定がない，または値が指定されていないキューは無視されます。

キュー定義が一つもない場合はフォーマット不正によってデプロイ時にエラーが発生します。

表示名が重複した場合，通番の大きい方が有効になります。

通番の最大値より大きい値のキュー定義は無視されます。

DisplayNameに指定できる文字は，半角英字（A〜Z，a〜z）半角数字（0〜9）および半角のアンダスコア（_）です。これら以外の文字を指定したキューは無視されます。

QueueNameに指定する値は，大文字と小文字をhrmmkque定義の引数指定値と一致させてください。

3.5.3　Reliable Messagingのプロパティ定義（非永続版リソースアダプタの場合）

Reliable Messagingのプロパティを定義します。Reliable Messagingをデプロイしたあとでも実行できます。なお，設定済みのReliable Messagingのプロパティを変更する場合は，該当するReliable Messagingを停止した状態で実行してください。

(1)　編集する属性ファイル

Reliable Messagingで提供するConnector属性ファイルのテンプレートを任意のディレクトリにコピーして，コピーしたファイルを編集します。

Connector属性ファイルのテンプレートは，次のディレクトリに格納されています。

%HRMDIR%¥conf¥rmnp_prop.xml

なお，cjgetrespropコマンドによって取得したConnector属性ファイルを使用することもできます。

注意事項

テンプレートからコピーしたConnector属性ファイルにASCII文字以外を使用する場合は，次のどちらかの対処が必要です。

UTF-8形式で保存する。

編集したファイルの文字エンコーディング形式に従って，ファイルの先頭行に次に示すencoding宣言を追加する。

<?xml version="1.0" encoding="＜文字エンコーディング＞"?>

(2)　編集する属性設定項目

Reliable Messagingのプロパティ設定項目を次に示します。

リソースアダプタの一般情報

コンフィグレーションプロパティ

実行時プロパティ

(a)　リソースアダプタの一般情報

設定できるReliable Messagingの一般情報属性（<outbound-resourceadapter>タグ）の設定項目を次に示します。

項目

必須

対応するタグ

トランザクションサポートのレベル

○

<transaction-support>

再認証のサポート有無※

○

<reauthentication-support>

（凡例）　○：必須

注※　必ずfalseを指定してください。

プロパティの設定項目の説明については，マニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

(b)　コンフィグレーションプロパティ

Reliable Messagingのコンフィグレーションプロパティ（<outbound-resourceadapter> - <connection-definition> - <config-property>タグ）の設定項目を次に示します。

項目

対応するタグ

コンフィグレーションプロパティ名

<config-property-name>

コンフィグレーションプロパティのデータ型

<config-property-type>

コンフィグレーションプロパティの値

<config-property-value>※

注※　コンフィグレーションプロパティの値をクリアする場合

<config-property-value>タグだけを指定して，値を指定しないでください。

<config-property-value>タグ自体が指定されていない場合は，そのプロパティの値は変更されないで，すでに設定されている値がそのまま有効になります。

定義するコンフィグレーションプロパティの数だけ上記の設定を繰り返してください。

Reliable Messagingのコンフィグレーションプロパティの設定内容については，「6.　コンフィグレーションプロパティ」を参照してください。

(c)　実行時プロパティ

Reliable Messagingの実行時プロパティ（<outbound-resourceadapter> - <connection-definition> - <connector-runtime> - <property>タグ）の設定項目を次に示します。

項目

対応するタグ

プロパティ名

<property-name>

プロパティのデータ型

<property-type>

プロパティの値

<property-value>

定義するプロパティの数だけ，上記の設定を繰り返してください。

実行時プロパティ名（<property-name>）およびコネクションプールの動作と注意事項については，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」のDB Connectorのプロパティ定義に関する内容を参照してください。

(3)　コンフィグレーションプロパティの設定例

Reliable Messagingのコンフィグレーションプロパティの設定例を示します。コンフィグレーションプロパティの各項目の詳細については，「6.2　Reliable Messagingのコンフィグレーションプロパティの詳細説明」を参照してください。

表3‒18　Reliable Messagingのコンフィグレーションプロパティの設定例（非永続版リソースアダプタの場合）

項番

プロパティ名

設定例

1

RMSystemName

＜システム名＞

2

QueueMakeFileName

＜キュー作成ファイルの場所＞

3

QueueConfigFileName

指定しない

4

RMSweepTimerInterval

600

5

RMPassByReference

false

6

RMMaxDeliveryNum

10

7

RMMethodTraceLevel

1

8

RMLogTraceFileNum

2

9

RMLogTraceFileSize

2097152

3.5.4　Reliable Messagingのインポート

次に示すコマンドを実行してReliable Messagingをインポートします。

cjimportresコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

実行形式

cjimportres ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -type rar -f ＜ファイルパス＞

実行例

cjimportres MyServer -type rar -f "C:¥Program Files¥Hitachi¥Cosminexus¥RM¥lib¥reliablemessagingNP.rar"

＜ファイルパス＞には，Reliable MessagingのRARファイル（reliablemessagingNP.rar）を指定してください。RARファイルは，次のディレクトリに格納されています。

%HRMDIR%¥lib

3.5.5　Reliable Messagingのプロパティ設定

次に示すコマンドを実行して，Reliable Messagingのプロパティを設定します。

実行形式

cjsetresprop ［＜サーバ名称＞］ -type rar -resname ＜Reliable Messagingの表示名＞ -c ＜Connector属性ファイルパス＞

実行例

cjsetresprop MyServer -type rar -resname Cosminexus_Reliable_Messaging -c rmnp_prop.xml

注意事項

Reliable Messagingをデプロイしたあとでプロパティを定義する場合は，cjgetrarpropコマンドとcjsetrarpropコマンドを使用してください。コマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

3.5.6　Reliable Messagingのデプロイ

Reliable Messagingは，デプロイするとJ2EEリソースアダプタとして使用できます。

サーバ管理コマンドでインポートしたReliable Messagingをデプロイすると，そのJ2EEサーバ上で動作するすべてのJ2EEアプリケーションから使用できるようになります。なお，デプロイしたあとで，プロパティを定義することもできます。デプロイ後に定義する場合は，該当するReliable Messagingを停止した状態で実行してください。プロパティを定義する方法については，「3.5.3　Reliable Messagingのプロパティ定義（非永続版リソースアダプタの場合）」を参照してください。

次に示すコマンドを実行して，Reliable Messagingをデプロイします。

実行形式

cjdeployrar ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -resname ＜Reliable Messagingの表示名＞

実行例

cjdeployrar MyServer -resname Cosminexus_Reliable_Messaging

cjdeployrarコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

3.5.7　Reliable Messagingの運用前の準備（非永続版リソースアダプタの場合）

Reliable Messagingの運用前の準備について説明します。

(1)　Reliable Messagingの接続テスト

Reliable Messagingに設定した内容が正しいかどうか，接続テストによって検証します。

(a)　接続テストで確認できる項目

接続テストの成功によって，次に示す項目を確認できます。

RMSystemNameプロパティのフォーマットが正しいこと。

(b)　接続テストの手順

次に示すコマンドを実行してReliable Messagingの接続テストを実施します。

実行形式

cjtestres ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -type rar -resname ＜Reliable Messagingの表示名＞

実行例

cjtestres MyServer -type rar -resname Cosminexus_Reliable_Messaging

なお，接続に失敗した場合には，出力されるメッセージを基にエラーに対処し，再度接続テストを実施してください。

cjtestresコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

注意事項

一度接続テストをしたReliable Messagingは，J2EEサーバを再起動するまで削除できません。Reliable Messagingを削除する場合は，Reliable Messagingを停止してから，J2EEサーバを再起動してください。

(c)　接続テストの失敗事例

接続テストに失敗する事例を次に示します。

Component Container側でエラーを検知した場合

接続テストではReliable MessagingとComponent Containerの両方でチェックを実行します。そのため，Component Container側でエラーを検知すると接続テストに失敗する場合もあります。

接続テストに成功してもReliable Messagingの起動時に接続に失敗する場合があります。事例を次に示します。

QueueConfigFileNameプロパティやQueueMakeFileNameプロパティに指定したファイルパスが不正のとき，または指定したファイルの内容が不正のとき

ロガーの初期化に失敗したとき，またはコマンドのネーミングサービスの登録に失敗したとき

(2)　Reliable Messagingの開始

cjstartrarコマンドを実行して，Reliable Messagingを開始します。

実行形式

cjstartrar ［＜サーバ名称＞］ ［-nameserver ＜プロバイダURL＞］ -resname ＜Reliable Messagingの表示名＞

実行例

cjstartrar MyServer -resname Cosminexus_Reliable_Messaging

cjstartrarコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

注意事項

J2EEアプリケーション中のJ2EEリソースがReliable Messagingを参照している場合は，Reliable Messagingを開始してから，J2EEアプリケーションを開始してください。

一度開始したリソースアダプタは，J2EEサーバを再起動するまで削除できません。リソースアダプタを削除する場合は，リソースアダプタを停止してから，J2EEサーバを再起動してください。

3.6　システム構築時の注意事項

システム構築時の注意事項について説明します。

3.6.1　DBMSの設定をする場合

DBMSの初期設定時の注意事項について説明します。

共用キューを使用して複数システム間でのアプリケーション連携をする場合には，同一スキーマ定義内に送信側システムの管理情報テーブルと受信側システムの管理情報テーブルを定義する必要があります。

共用キューを使用して複数システム間でのアプリケーション連携をする場合の管理情報テーブルを次の図に示します。

図3‒2　共用キューを使用して複数システム間でのアプリケーション連携をする場合の管理情報テーブル

共用キューの場合，送信側（または受信側）システムの管理情報テーブルを定義したあとで受信側（または送信側）システムの管理情報テーブルを定義するときは，DBMSの初期設定は不要です。受信側（または送信側）システムでは，送信側（または受信側）システムと同じ接続ユーザ名を使用します。

各DBで使用する言語モードは，DABroker LibraryやDB Connector for Reliable Messagingなどの上位のソフトウェアの言語モードと合わせてください。

3.6.2　複数デプロイをする場合

Reliable Messagingはリソース使用量が多いため，複数デプロイは推奨しません。複数デプロイをする場合の注意事項を次に示します。

複数のReliable Messaging間でDB上の管理情報テーブルを共有しないようにしてください。

アプリケーションがネーミングサービスからlookupメソッドでオブジェクトを取得するときのオブジェクト名称によって，稼働するReliable Messagingを切り替えます。J2EE環境での複数デプロイの例を次の図に示します。

図3‒3　J2EE環境での複数デプロイの例

Reliable Messagingを複数デプロイした場合，Reliable Messagingごとに別々のクライアント定義ファイルを指定してください。クライアント定義ファイルの詳細については，「3.4.13(1)　SOAP通信基盤の設定」を参照して確認してください。

Reliable Messagingを複数デプロイする場合，キュー間転送用Webアプリケーションのコンテキストルートを一意にするように設定してください。

キュー間転送用Webアプリケーションとリソースアダプタの関連づけは，1対1にしてください。つまり，複数のキュー間転送用Webアプリケーションを一つのリソースアダプタに関連づけることはできません。

Component Containerでは，キュー間転送用Webアプリケーションのカスタマイズ時に，関連するリソースアダプタの表示名を指定することで関連づけます。J2EE環境でのキュー間転送用Webアプリケーションとリソースアダプタの関連づけを次の図に示します。

図3‒4　J2EE環境でのキュー間転送用Webアプリケーションとリソースアダプタの関連づけ

J2EEサーバ内に異なるバージョンのReliable Messagingを同時にインポートすることはできません。異なるバージョンを同時にインポートした場合，不正な動作をする可能性があります。

3.6.3　OutOfMemory発生時の動作に関する設定を行う場合

Reliable Messagingを使用する場合，Developer's Kit for JavaのOutOfMemory発生時強制終了機能を有効にしてください。

具体的にはJ2EEサーバ用オプション定義ファイル(usrconf.cfg)でadd.jvm.arg=-XX:+HitachiOutOfMemoryAbortを設定してください。

また，OutOfMemoryハンドリング機能（-XX:+HitachiOutOfMemoryHandling）と組み合わせて使用した場合でも，Reliable Messaging内でOutOfMemoryが発生すると，J2EEサーバは強制終了します。

3.6.4　ObjectMessageのペイロードにユーザが定義したクラスのオブジェクトを格納する場合

ObjectMessageのペイロードにユーザが定義したクラスのオブジェクトを格納する場合，アプリケーションにユーザが定義したクラスを含める必要があります。アプリケーションにユーザ定義クラスを含めない場合，Application ServerのJ2EEサーバ用オプション定義ファイルにユーザが定義したクラスのクラスパスを指定する必要があります。「2.5.1(3)　JMSメッセージのペイロード」を参照してください。

3.6.5　同一サーバ上でReliable Messagingを複数デプロイする場合

同一サーバ上でReliable Messagingを複数デプロイする場合，またはキュー間転送の通信設定を変更する場合は，Reliable Messagingごとに別々のクライアント定義ファイルを指定する必要があります。詳細については，「3.4.13(1)(a)　クライアント定義ファイルの使用方法」を参照してください。

3.6.6　PRFトレースファイルを利用する場合

PRFトレースファイルを利用するに場合に必要な設定については，永続版リソースアダプタの場合は「4.4　PRFトレースファイルの運用（永続版リソースアダプタの場合）」を，非永続版リソースアダプタの場合は「5.3　PRFトレースファイルの運用（非永続版リソースアダプタの場合）」を参照してください。

4　Reliable Messaging（永続版リソースアダプタ）の運用

Reliable Messagingのアプリケーションを開始するには，あらかじめReliable Messagingを開始しておく必要があります。Reliable Messagingを停止するには，あらかじめアプリケーションを停止しておく必要があります。

この章では，永続版リソースアダプタを使用する場合の，Reliable Messagingおよびアプリケーションの開始と停止，管理情報テーブルを保存したDBの運用などについて説明します。

4.1　Reliable Messagingとアプリケーションの開始と停止（永続版リソースアダプタの場合）

永続版リソースアダプタを使用する場合の，Reliable Messagingとアプリケーションの開始手順および停止手順について説明します。

4.1.1　Reliable Messagingの開始（永続版リソースアダプタの場合）

Reliable Messagingを開始するには，あらかじめプロパティのカスタマイズとデプロイを完了させている必要があります。詳細については，「3.4.5　Reliable Messagingのプロパティ定義（永続版リソースアダプタの場合）」を参照してください。また，Reliable Messagingの開始時に使用するサーバ管理コマンドについては，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

Reliable Messagingを開始する手順を次に示します。

DBMSの開始

HiRDBまたはOracleを開始します。

J2EEサーバの開始

Application Serverを開始します。また，アプリケーションの要件に合わせて，必要なApplication Serverのサービスを開始してください。

DB Connector for Reliable Messagingの開始

サーバ管理コマンドを使用して，リソースアダプタとしてDB Connector for Reliable Messagingを開始します。

Reliable Messagingの開始

サーバ管理コマンドを使用して，リソースアダプタとしてReliable Messagingを開始します。

注意

サーバ管理コマンドでReliable Messagingが開始状態になっても，実際には開始中状態のことがあります。このときにアプリケーションを開始するとReliable Messagingがコネクションを取得する契機でエラーが発生します。ただし，Message-driven Beanの場合は，Reliable Messagingが開始するまでアプリケーションの開始処理が完了しません。開始処理が完了しKFRM01009-I（メッセージログの出力レベルに関係なく出力します）が出力されるのを待ってからアプリケーションを開始してください。開始中状態の詳細については，「4.1.4　Reliable Messagingの状態遷移（永続版リソースアダプタの場合）」を参照してください。

Connector属性ファイルの<transaction-support>タグにLocalTransactionまたはNoTransactionを指定した場合，サーバ管理コマンドでReliable Messagingが開始状態になっても，実際には開始処理に失敗していることがあります。このときにアプリケーションを開始するとReliable Messagingがコネクションを取得する契機でエラーが発生します。

Reliable Messagingの開始中は，Reliable Messagingが使用しているキュー定義ファイルを削除したり，読み込みができなくなるようなアクセス権限の変更は行わないでください。Reliable Messagingの再開始時にキュー定義ファイルが読み込めない状態であった場合，データベースに未決着のトランザクションが滞留してしまい，Reliable Messagingが正常に開始できなくなります。

Reliable Messagingのリソースアダプタを開始するときに，OutOfMemoryErrorが発生しKDJE48571-Eが出力された場合，Reliable Messagingの内部状態が不正になる可能性があります。この場合Application Serverを再起動してください。

4.1.2　アプリケーションの開始（永続版リソースアダプタの場合）

アプリケーションを開始するには，あらかじめReliable Messagingが開始されている必要があります。各手順で使用するサーバ管理コマンドおよび各属性ファイルの詳細については，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」およびマニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

アプリケーションを開始する手順を次に示します。

キューの作成

アプリケーションで使用するキューを作成していない場合は，hrmmkqueコマンドを使用してキューを作成します。

キューの作成の詳細については，「4.2　キューの運用（永続版リソースアダプタの場合）」を参照してください。

アプリケーションのインポート

サーバ管理コマンドを使用して，Reliable Messagingのアプリケーションをインポートします。

J2EEアプリケーションのプロパティ設定

テキストエディタを使って，Session Bean属性ファイル，Entity Bean属性ファイル，WAR属性ファイル，またはMessageDrivenBean属性ファイルを編集して，リソースアダプタのリファレンス定義，リソース環境のリファレンス定義およびメッセージ参照の設定項目を設定します。

実行状態への移行

次に示す場合は，hrmstartコマンドを入力してReliable Messagingを管理状態から実行状態に移行してください。

初めてReliable Messagingを開始した場合

前回のオンラインで管理状態のときにReliable Messagingを停止した場合

Reliable Messagingの状態については，hrmlsstatコマンドによって確認できます。状態遷移については，「4.1.4　Reliable Messagingの状態遷移（永続版リソースアダプタの場合）」を参照してください。

アプリケーションの開始

サーバ管理コマンドを使用して，アプリケーションを開始します。

4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）

サーバ管理コマンドを使用して，アプリケーションを停止させてから，Reliable Messagingを停止させます。サーバ管理コマンドについては，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

Reliable Messagingを停止する手順を次に示します。

アプリケーションの停止

サーバ管理コマンドを使用して，アプリケーションを停止します。一つのReliable Messagingを利用する複数のアプリケーションがある場合はすべて停止します。キュー間転送用Webアプリケーションも含みます。

Reliable Messagingの停止

サーバ管理コマンドを使用して，Reliable Messagingを停止します。

DB Connector for Reliable Messagingの停止

サーバ管理コマンドを使用して，DB Connector for Reliable Messagingを停止します。

J2EEサーバの停止

アプリケーションサーバシステムを使用しない場合は，J2EEサーバとApplication Serverのサービスを停止します。

DBMSの終了

DBMSを使用しない場合は，HiRDBまたはOracleを終了します。

注意

Reliable Messagingのリソースアダプタを停止するときに，OutOfMemoryErrorが発生しKDJE42093-Eが出力された場合，Reliable Messagingの内部状態が不正になる可能性があります。この場合Application Serverを再起動してください。

4.1.4　Reliable Messagingの状態遷移（永続版リソースアダプタの場合）

アプリケーションサーバシステムにとって，Reliable Messagingには未デプロイ状態，デプロイ済み状態，およびリソースアダプタ開始状態の三つの状態があります。また，リソースアダプタ開始状態のReliable Messagingの内部状態として，実行状態，管理状態，閉塞状態および開始中状態があります。

Reliable Messagingの状態について次に説明します。

実行状態

アプリケーションにサービスを提供する状態です。管理状態からhrmstartコマンドの入力によって移行します。

管理状態

Reliable Messagingが提供するコマンドを入力して，キューを作成したり，メッセージを削除したりするためのシステム管理用の状態です。実行状態からhrmstopコマンドの入力によって移行します。

閉塞状態

Reliable Messaging内部のメモリ状態不正などによって，処理の続行ができなくなった状態です。実行状態，管理状態，または開始中状態から移行します。この状態では，アプリケーションにサービスは提供されません。

開始中状態

リソースアダプタを開始して，前回の状態によって管理状態または実行状態に移行するまでの一時的な状態です。この状態では，DB上に格納されているキューやメッセージ情報をメモリ上に復元します。復元に掛かる時間は，DBに格納されているメッセージの数に比例します。

(1)　状態遷移

Reliable Messagingの状態遷移を次の図に示します。

図4‒1　Reliable Messagingの状態遷移

リソースアダプタを開始した直後は，前回のオンラインでReliable Messagingを停止したときの内部状態に移行します。また，コマンドによっては特定の内部状態のときだけに入力できます。詳細については，「8.2　コマンドの一覧」を参照してください。

(2)　管理状態への移行処理

管理状態に移行するときは，あらかじめアプリケーションを停止させてください。

hrmstopコマンドを入力すると，Reliable Messagingは実行状態から管理状態へ移行します。移行時には，仕掛かり中のメッセージ処理に影響を与えないように，次に示す処理が実行されます。

新しいメッセージ受信を停止し，仕掛かり中のメッセージ受信処理が完了するまで待ちます。

新しいメッセージ送信を停止し，仕掛かり中のメッセージ送信処理が完了するまで待ちます。

キュー間転送での新しいSOAPメッセージの受信を停止し，仕掛かり中のSOAPメッセージの受信処理が完了するまで待ちます。

キュー間転送での新しいSOAPメッセージの送信を停止し，仕掛かり中のSOAPメッセージの送信処理で応答が返されるのを待ちます。

共用キュー連携時は新しいイベントの受信を停止し，仕掛かり中のメッセージ受信処理が完了するまで待ちます。

アプリケーションからの新しいAPI呼び出しに対して例外を返し，仕掛かり中のAPI処理が完了するまで待ちます。なお，仕掛かり中のトランザクションがあっても，Reliable Messagingはトランザクションをロールバックしません。

(3)　キュー間転送用Webアプリケーションの状態遷移

Reliable Messagingのキュー間転送用WebアプリケーションをJ2EEアプリケーションとしてデプロイします。J2EEコンテナから見たキュー間転送用Webアプリケーションの状態として，未デプロイ状態，デプロイ状態，および開始状態の三つの状態があります。また，開始状態のキュー間転送用Webアプリケーションの内部状態として，実行状態があります。

キュー間転送用Webアプリケーションが開始状態に遷移できるのは，Reliable Messagingがリソースアダプタ開始状態であることが前提となります。

キュー間転送用Webアプリケーションの状態遷移を次の図に示します。

図4‒2　キュー間転送用Webアプリケーションの状態遷移

4.2　キューの運用（永続版リソースアダプタの場合）

ローカルキュー，共用キュー，転送キュー，およびデッドメッセージキューの運用方法について説明します。

4.2.1　ローカルキューによるシステム内アプリケーション間連携

自システム内のアプリケーション間で，ローカルキューを介してメッセージを送受信する手順を次に説明します。

Reliable Messagingのリソースアダプタの開始

管理状態への移行

Reliable Messagingを管理状態にします。hrmlsstatコマンドでReliable Messagingの状態を確認してください。実行状態の場合はhrmstopコマンドを入力すると管理状態に移行します。

ローカルキューの作成

hrmmkqueコマンドの-tオプションにlocalを指定して，メッセージを受信するためのローカルキューを作成します。hrmmkqueコマンドについては，「8.3.17　hrmmkque（ローカルキューの作成）」を参照してください。

実行状態への移行

hrmstartコマンドを入力して，Reliable Messagingを実行状態にします。

4.2.2　共用キューによるシステム間連携

(1)　共用キューによるシステム間連携の手順

共用キューによるシステム間連携の手順を次に説明します。共用キューを使用する場合，共用キューのバージョンについてあらかじめ確認してください。共用キューのバージョンについては，「4.2.2(2)　Reliable Messagingのバージョンと共用キューのバージョン」を参照してください。

受信側システムの手順

Reliable Messagingのリソースアダプタの開始

管理状態への移行

Reliable Messagingを管理状態にします。hrmlsstatコマンドでReliable Messagingの状態を確認してください。実行状態の場合はhrmstopコマンドを入力すると管理状態に移行します。

受信用共用キューの作成

hrmmkqueコマンドの-tオプションにshr_receiveを指定して，メッセージを受信するための受信用共用キューを作成します。hrmmkqueコマンドについては，「8.3.18　hrmmkque（受信用共用キューの作成）」を参照してください。

実行状態への移行

hrmstartコマンドを入力して，Reliable Messagingを実行状態にします。

送信側システムの手順

Reliable Messagingのリソースアダプタの開始

管理状態への移行

Reliable Messagingを管理状態にします。hrmlsstatコマンドでReliable Messagingの状態を確認してください。実行状態の場合はhrmstopコマンドを入力すると管理状態に移行します。

送信用共用キューの作成

hrmmkqueコマンドの-tオプションにshr_sendを指定して，送信用共用キューを作成します。hrmmkqueコマンドについては，「8.3.19　hrmmkque（送信用共用キューの作成）」を参照してください。

実行状態への移行

hrmstartコマンドを入力して，Reliable Messagingを実行状態にします。

ユーザアプリケーションの開始

ユーザアプリケーションを開始して，共用キューによるシステム間連携を行います。

(2)　Reliable Messagingのバージョンと共用キューのバージョン

Reliable Messagingのバージョンによって共用キューに格納する情報が異なるため，Reliable Messagingのバージョンに対応して共用キューにもバージョンが存在します。

また，Reliable Messagingのバージョンによって使用できる共用キューのバージョンが決められています。したがって，共用キューを使用する場合は，送信側システムと受信側システムのReliable Messagingのバージョンを統一し，必要に応じて共用キューをバージョンアップする必要があります。

Reliable Messagingのバージョンと，それに対応する共用キューのバージョンを次の表に示します。

表4‒1　Reliable Messagingのバージョンと共用キューのバージョン

Reliable Messagingのバージョン

共用キューのバージョン

01-00

0100

01-01以降

0200

なお，共用キューのバージョン0200を使用してTP1/EEとシステム間連携する場合は，TP1/EEのDBキュー機能オプションはTYPE1に指定してください。共用キューのバージョン0100を使用する場合は，TP1/EEのDBキュー機能オプションはTYPE0に指定してください。

4.2.3　キュー間転送によるシステム間連携

キュー間転送を行う場合は，事前に受信側システムのあて先アドレスを確認しておいてください。

キュー間転送の手順を次に説明します。

受信側システムの手順

Reliable Messagingのリソースアダプタの開始

このとき，キュー間転送用Webアプリケーションは停止しておきます。

管理状態への移行

Reliable Messagingを管理状態にします。hrmlsstatコマンドでReliable Messagingの状態を確認してください。実行状態の場合はhrmstopコマンドを入力すると管理状態に移行します。

ローカルキューの作成

hrmmkqueコマンドの-tオプションにlocalを指定して，メッセージを受信するためのローカルキューを作成します。hrmmkqueコマンドについては，「8.3.17　hrmmkque（ローカルキューの作成）」を参照してください。

実行状態への移行

hrmstartコマンドを入力して，Reliable Messagingを実行状態にします。

キュー間転送用Webアプリケーションの開始

送信側システムの手順

Reliable Messagingのリソースアダプタの開始

このとき，キュー間転送用Webアプリケーションは停止しておきます。

管理状態への移行

Reliable Messagingを管理状態にします。hrmlsstatコマンドでReliable Messagingの状態を確認してください。実行状態の場合はhrmstopコマンドを入力すると管理状態に移行します。

受信側システムのあて先アドレスの登録

hrmmkaddrコマンドを入力して，受信側システムのあて先アドレスをあて先情報テーブルに登録します。

転送キューの作成

hrmmkqueコマンドの-tオプションにtransmitを指定して，転送キューを作成します。受信側システムのReliable Messagingのバージョンが01-02以前の場合は，hrmmkqueコマンドの-iオプションにcompatibleを指定して，転送キューを作成します。hrmmkqueコマンドについては，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

実行状態への移行

hrmstartコマンドを入力して，Reliable Messagingを実行状態にします。

キュー間転送用Webアプリケーションの開始

ユーザアプリケーションの開始

ユーザアプリケーションを開始して，キュー間転送を行います。

4.2.4　デッドメッセージキューによるデッドメッセージの再登録

デッドメッセージキューを作成する方法は，ローカルキューと同じです。ただし，RMDeadMessageQueueNameプロパティにキュー名を指定する必要があります。ローカルキューの作成方法については，「4.2.1　ローカルキューによるシステム内アプリケーション間連携」を参照してください。

ここでは，デッドメッセージを再登録する場合の手順について説明します。有効期限切れ，配信回数超過，通信失敗などで，デッドメッセージキューに移動したメッセージを，移動前のキュー（ローカルキュー，受信用共用キュー，または転送キュー）に新しいメッセージとして再登録できます。デッドメッセージを再登録する場合の手順を次の図に示します。

図4‒3　デッドメッセージの再登録

デッドメッセージキュー移動時にログファイルに出力されるデッドメッセージID（DMID）を参照します。

ログファイルは，Application Server用メッセージログに出力されます。また，DMIDについては，「4.2.4(1)　DMID」を参照してください。

DMIDを基に，hrmlsdmsgコマンドでデッドメッセージキューに移動したデッドメッセージの内容（JMSヘッダ，プロパティ，ペイロード，デッドメッセージ固有の属性情報など）を確認します。

hrmlsdmsgコマンドについては，「8.3.10　hrmlsdmsg（デッドメッセージの参照）」を参照してください。

該当メッセージをデッドメッセージキューに移動する前のキューに再登録したい場合は，hrmregdmsgコマンドを使用します。

該当メッセージはデッドメッセージキューから削除され，デッドメッセージキューに移動する前のキューに再登録されます。このとき，新しいメッセージとして登録されます。※hrmregdmsgコマンドについては，「8.3.21　hrmregdmsg（デッドメッセージの再登録）」を参照してください。

注※

デッドメッセージ移動前のキューに再登録する場合，ユーザが指定したメッセージの情報は引き継がれます。ただし，メッセージIDやメッセージ有効期限などのReliable Messagingがメッセージ登録時に設定する情報は再設定されます。また，デッドメッセージ固有の属性情報（DMID，移動前キュー名，デッドメッセージキュー移動原因，デッドメッセージキュー移動時刻）は失われます。

(1)　DMID

デッドメッセージID（DMID）とは，デッドメッセージを識別するために設定される一意のIDです。hrmlsdmsgコマンドでデッドメッセージを参照したり，hrmregdmsgコマンドでデッドメッセージを再登録したりするときの引数として使用します。

DMIDは，デッドメッセージキュー移動時のログメッセージに出力されます。また，JMSメッセージのReliable Messaging固有のプロパティやhrmlsdmsgコマンドの実行結果として参照できます。

(2)　サーバ間転送での注意事項

サーバ間転送時の送信側システムのデッドメッセージキューには，受信側システムに到達しているメッセージや受信側デッドメッセージキューに格納されているメッセージが存在する場合があります。

この場合，送信側システムの転送キューからデッドメッセージキュー移動したデッドメッセージを転送キューに再登録する前に，メッセージIDなどで受信側システムのメッセージ到達状態を確認して，受信側システムに到達済みのメッセージを再登録しないようにしてください。送信側システムで転送キューに再登録したメッセージは，最初に転送キューに登録したメッセージとは別のメッセージとして転送されます。そのため，送信側システムで再登録すると，受信側システムで同じ内容のメッセージが重複して受信されることになります。

受信側システムのメッセージ到達状態を確認するには，送信側システムで該当するデッドメッセージのデッドメッセージキュー移動時のメッセージログ（KFRM40012-I）に出力されるDMID，グループID，グループ内シーケンス番号と，受信側システムで回線トレースに出力されるグループID，グループ内シーケンス番号とを照合してください。回線トレースについては，「9.3.5　回線トレース」を参照してください。

送信側・受信側システム両方のデッドメッセージキューに，同じメッセージが格納される場合を次の図に示します。

図4‒4　送信側・受信側システムのデッドメッセージキューに，同じメッセージが格納される場合

転送キューからローカルキューへの送信は成功します。

受信システムからの受信成功通知に失敗します。

ローカルキューに格納されたメッセージは有効期限に到達するなどして，受信側システムのデッドメッセージキューに格納されます。

転送キューからメッセージが再送されますが，有効期限に到達して，失敗通知が送信側システムに通知されます。これによって，送信側システムのデッドメッセージキューに同じメッセージが格納されます。

4.2.5　キューの状態遷移（永続版リソースアダプタの場合）

キューには，通常状態，抑止状態（一部抑止状態および完全抑止状態），閉塞状態があります。キューの抑止状態は，システムを管理状態に移行して，すべてのキューに対してメッセージの送受信を抑止するのではなく，特定のキューに対してメッセージの送受信を抑止する場合などに利用します。

キューの状態について次に説明します。

通常状態

正常に使用できる状態です。

一部抑止状態

メッセージの送受信が一部抑止されている状態です。指定するキューの種類によって，抑止される形態が異なります。キューの種類と抑止される形態については，「8.3.27(3)　オプション」を参照してください。

完全抑止状態

メッセージの送受信が完全に抑止されている状態です。指定するキューの種類に応じて，抑止できる形態をすべて抑止します。

閉塞状態

キューに障害が発生した状態です。hrmlsqueコマンドおよびhrmdelqueコマンドだけを受け付け，それ以外のコマンドおよびメッセージの送受信を実行できません。

キューの状態遷移を，キューの種類別に次の図に示します。

図4‒5　キューの状態遷移

注

送信用共用キューは抑止および抑止解除状態はありません。

注1

デッドメッセージキューは，抑止形態が一つであるため一部抑止および一部抑止解除状態がありません。

注2

デッドメッセージキューが閉塞状態に移行すると，システムが閉塞します。

図中で使用されるイベントの意味は次のとおりです。

一部抑止

hrmstopqueコマンドの-yオプションにap_send，ap_receive，trs_send，trs_receive，またはap_allを指定して，実行します。

完全抑止

hrmstopqueコマンドの-yオプションにallを指定して，実行します。

一部抑止解除

hrmstartqueコマンドの-yオプションにap_send，ap_receive，trs_send，trs_receive，またはap_allを指定して，実行します。

完全抑止解除

hrmstartqueコマンドの-yオプションにallを指定して，実行します。

障害検知

Reliable Messagingがキューに関連する障害を検知したことを示します。

4.3　DBの運用

Reliable Messagingは，メッセージを格納するキューや管理情報をDB上の管理情報テーブルに保存します。テーブルの移行手順や接続ユーザ名の変更手順などについて説明します。

DBMSとしてHiRDBまたはOracleを使用できます。それぞれのDBMSで必要な設定について説明します。ここで説明していない設定内容や手順については，HiRDBまたはOracleのマニュアルを参照してください。

4.3.1　管理情報テーブルの移行

DBMSの動作マシンの入れ替えなどによって，管理情報テーブルを異なるDBに移行するときの手順について，次に示します。

(1)　管理情報を格納するDBがHiRDBの場合

Reliable Messagingの停止

Reliable Messagingを停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

テーブルの移行

HiRDBのディクショナリ搬出入ユティリティ（pdexpコマンド）とデータベース再編成ユティリティ（pdrorgコマンド）を使用して管理情報テーブルを移行します。詳細については，マニュアル「HiRDB システム運用ガイド」および「HiRDB コマンドリファレンス」を参照してください。

環境設定の変更

次のどちらかの方法で環境設定を変更します。

HiRDBクライアント環境変数登録ツールを使用して，移行先マシンに合わせて環境変数を変更します（Windowsの場合）。または，HiRDBのクライアント環境変数グループの設定ファイルに記載している環境変数を，移行先マシンに合わせて変更します（UNIXの場合）。該当する環境変数については，「3.4.1(2)(b)　HiRDBの環境変数グループの登録」を参照してください。

HiRDBクライアント環境変数登録ツールを使用して，新しい環境変数グループを登録し，DB Connector for Reliable Messagingのコンフィグレーションプロパティを変更します（Windowsの場合）。または，HiRDBのクライアント環境変数グループの設定ファイルを新しく作成し，DB Connector for Reliable Messagingのコンフィグレーションプロパティを変更します（UNIXの場合）。詳細については，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

(2)　管理情報を格納するDBがOracleの場合

Reliable Messagingの停止

Reliable Messagingを停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

テーブルの移行

エクスポート・ユーティリティおよびインポート・ユーティリティを使用して管理情報テーブルを移行します。詳細については，Oracleのマニュアルを参照してください。

環境設定の変更

次のどちらかの方法で環境設定を変更します。

DBクライアントの環境設定時に作成したネット・サービスのネットワーク情報を，移行先のマシンに合わせて変更します。DBクライアントの環境設定については，「3.4.2(2)　DBクライアントの設定」を参照してください。

Oracle Clientの環境設定時に作成したネット・サービスのネットワーク情報に従って新たにネット・サービス名を作成し，DB Connector for Reliable Messagingのコンフィグレーションプロパティを変更します。詳細については，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

4.3.2　管理情報テーブルの削除

DBMSの動作マシンの入れ替えやReliable Messagingのアンインストールなどによって，管理情報テーブルをDBから削除するときの手順について，次に示します。

アプリケーションの停止

Reliable Messagingを使用しているアプリケーションをすべて停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

管理状態への移行

hrmstopコマンドを使用してReliable Messagingを管理状態に移行します。

Reliable Messagingの再開始

コネクションプーリングで使用中のDBのコネクションや未決着のトランザクションが残らないようにReliable Messagingを一度停止したあと，再度開始します。

全キューの削除

hrmdelqueコマンドを使用して，作成済みのキューをすべて削除します。

Reliable Messagingの停止

Reliable Messagingを停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

テーブルの削除

SQLファイルを使用して，Reliable Messagingの管理情報テーブルを削除します。管理情報テーブルの削除方法を「4.3.2(1)　テーブル削除用SQLファイルの使用」で説明します。

なお，キューが削除されている場合も，手順1.〜手順3.，手順5.を実行してから手順6.を実行してください。

(1)　テーブル削除用SQLファイルの使用

(a)　HiRDBの場合

DBMSとしてHiRDBを使用する場合，次に示す手順で管理情報テーブルを削除します。HiRDB SQL Executerの使用方法については，HiRDB SQL Executerのドキュメントを参照してください。

SQLファイルの編集

テーブル削除用SQLファイル（%HRMDIR%¥sql¥deletetableshirdb.sql）を任意の場所にコピーしたあと，"<RMSystemName>"の部分を「3.3.1　Reliable Messagingのシステム名の決定」で決定した値に変更します。

SQLファイルの実行

Windowsの場合

次に示すコマンドでHiRDB SQL Executerを開始したあと，HiRDB SQL Executerの［ファイル］メニューから［ファイルから実行］を選択し，手順1.で編集したSQLファイルを指定して実行します。

pdsqlw -u <接続ユーザ名>/<パスワード>※
       -h <HiRDBサーバのホスト名またはIPアドレス>
       -n <HiRDBサーバのポート番号>

UNIXの場合

環境変数PDUSER※，PDHOST，PDNAMEPORTを設定したあと，次に示すコマンドでHiRDB SQL ExecuterからSQLファイルを実行します。

pdsql  <  <手順1.で編集したSQLファイルのパス>

注※

接続ユーザ名には，権限を付与した接続ユーザ名を指定します。詳細については，「3.4.1(1)(b)　HiRDBのユーザ権限の付与」を参照してください。

(b)　Oracleの場合

DBMSとしてOracleを使用する場合，次に示す手順で管理情報テーブルを削除します。SQL*Plusの使用方法については，Oracleのマニュアルを参照してください。

SQLファイルの編集

テーブル削除用SQLファイル（%HRMDIR%¥sql¥deletetablesoracle.sql）を任意の場所にコピーしたあと，"<RMSystemName>"の部分を「3.3.1　Reliable Messagingのシステム名の決定」で決定した値に変更します。

GUI版SQL*Plusまたはコマンドライン版sqlplusの起動

システム構築時のユーザ名を使用してデータベースに接続します。

コマンドの実行

次の形式で実行してください。

start <手順1.で任意の場所にコピーしたあと編集したSQLファイルの絶対パス>

4.3.3　接続ユーザ名の変更

DBMSの接続ユーザ名を変更する場合は，管理情報テーブルを作り直す必要があります。作り直しの対象となるテーブルについては，「4.3.6　管理情報テーブルの一覧」を参照してください。テーブルを移行したあと，環境設定を変更します。

(1)　テーブルの移行

(a)　HiRDBの場合

Reliable Messagingを停止したあと，次に示す手順でテーブルを作り直します。各手順の詳細については，マニュアル「HiRDB システム運用ガイド」および「HiRDB コマンドリファレンス」を参照してください。

定義系SQLの作成

変更前ユーザが所有するテーブルの定義系SQLをHiRDBのpddefrevコマンドによって生成したあと，生成した定義系SQLファイルからCREATE TABLE文の認可識別子の指定を削除します。

RDエリアの閉塞

移行対象のデータを格納しているRDエリアをHiRDBのpdholdコマンドによって閉塞します。

テーブルデータのアンロード

変更前ユーザが所有するテーブルのテーブルデータをHiRDBのデータベース再編成ユティリティ（pdrorg）によってアンロードします。

RDエリアの閉塞解除

手順2.で閉塞したRDエリアをHiRDBのpdrelsコマンドによって解除します。

変更後ユーザの作成とスキーマ定義

変更後ユーザにユーザ権限を付与し，管理情報テーブル用のスキーマを定義します。詳細については，「3.4.1(1)(b)　HiRDBのユーザ権限の付与」および「3.4.1(1)(c)　HiRDBのスキーマの定義」を参照してください。

バックアップの取得

データベース移行中の障害発生に備えてHiRDBのpdcopyコマンドによってバックアップを取得します。バックアップを取得するRDエリアを次に示します。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

データディクショナリ用RDエリア

移行するテーブルを格納するユーザ用RDエリア

テーブルの定義

Windowsの場合

次に示すコマンドでHiRDB SQL Executerを開始したあと，HiRDB SQL Executerの［ファイル］メニューから［ファイルから実行］を選択し，手順1.で編集した定義系SQLファイルを指定して実行します。

pdsqlw -u <変更後ユーザの接続ユーザ名>/<パスワード>
       -h <HiRDBサーバのホスト名またはIPアドレス>
       -n <HiRDBサーバのポート番号>

UNIXの場合

変更後ユーザに合わせて環境変数PDUSER，PDHOST，PDNAMEPORTを設定したあと，HiRDB SQL Executerから手順1.で編集した定義系SQLファイルを実行します。

pdsql  <　<手順1.で編集した定義系SQLファイルのパス>

RDエリアの閉塞

変更後ユーザが所有するテーブルを格納しているRDエリアをHiRDBのpdholdコマンドによって閉塞します。

テーブルデータのリロード

変更後ユーザが所有するテーブルにテーブルデータをHiRDBのデータベース再編成ユティリティ（pdrorg）によってリロードします。

RDエリアの閉塞解除

手順8.で閉塞したRDエリアをHiRDBのpdrelsコマンドによって解除します。

テーブルの削除

Windowsの場合

次に示すコマンドでHiRDB SQL Executerを開始したあと，DROP TABLE文によって変更前ユーザが所有するテーブルを削除します。

pdsqlw -u <変更前ユーザの接続ユーザ名>/<パスワード>
       -h <HiRDBサーバのホスト名またはIPアドレス>
       -n <HiRDBサーバのポート番号>

UNIXの場合

変更前ユーザに合わせて環境変数PDUSER, PDHOST, PDNAMEPORTを設定したあと，HiRDB SQL Executerを起動させて，DROP TABLE文により変更前ユーザが所有する表を削除します。

バックアップの取得

データベース移行後のバックアップをHiRDBのpdcopyコマンドによって取得します。バックアップを取得するRDエリアを次に示します。

マスタディレクトリ用RDエリア

データディレクトリ用RDエリア

データディクショナリ用RDエリア

移行したテーブルを格納するユーザ用RDエリア

(b)　Oracleの場合

各手順の詳細については，Oracleのマニュアルを参照してください。

Reliable Messagingの停止

Reliable Messagingを停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

テーブルの移行

エクスポート・ユーティリティおよびインポート・ユーティリティを使用して管理情報テーブルを移行します。詳細については，Oracleのマニュアルを参照してください。

(2)　環境設定の変更

(a)　HiRDBの場合

変更後ユーザに合わせて環境変数を変更します。変更する環境変数については，「3.4.1(2)(b)　HiRDBの環境変数グループの登録」を参照してください。

または，新しい環境変数グループ名を登録してから，DB Connector for Reliable Messagingのコンフィグレーションプロパティの指定値を変更します。詳細については，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

(b)　Oracleの場合

DB Connector for Reliable Messagingのコンフィグレーションプロパティの指定値を変更します。詳細については，「6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧」を参照してください。

4.3.4　DBのバックアップ

管理情報テーブルを保存するDBをバックアップする場合は，DBMSが提供するバックアップ取得機能を使用して実行します。バックアップの対象となるテーブルについては，「4.3.6　管理情報テーブルの一覧」を参照してください。

DBMSとしてHiRDBを使用する場合は，マニュアル「HiRDB システム運用ガイド」を参照してください。DBMSとしてOracleを使用する場合は，Oracleのマニュアルを参照してください。

4.3.5　RDエリアの容量の確保

HiRDBを使用する場合，メッセージの送受信を長時間繰り返すと，HiRDBで使用できるRDエリアの容量が徐々に減少します。RDエリアの容量が減少した場合は，再編成や使用中空きページの解放を行ない，容量を確保してください。再編成や使用中空きページの解放の方法については，マニュアル「HiRDB システム運用ガイド」を参照してください。

4.3.6　管理情報テーブルの一覧

Reliable Messagingの管理情報テーブルは，メッセージを格納するキューを保存するテーブルと管理情報を保存するテーブルによって構成されます。

管理情報テーブルを使用するのに必要な，構成情報（テーブルの個数，列数，行数，名称規則，可変長文字列数，データ長，データ型，キー名，キー長）を次の表に示します。

表4‒2　管理情報テーブルの一覧（テーブルの個数，列数，行数，名称規則）

項番

種類

個数

列数※

行数

名称規則

1

システム管理情報テーブル

1

10

1

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_SYSTEMINFORMATION"

2

キュー情報テーブル

1

23

最大キュー数

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_QUEUEINFORMATION"

3

FIFO情報テーブル

1

21

最大キュー数と最大通信用グループ数の総数

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_FIFOINFORMATION"

4

あて先情報テーブル

1

7

最大あて先数

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_ADDRESS_MAPPING"

5

メッセージ情報テーブル

永続キュー属性のローカルキューまたは永続キュー属性の転送キューの最大キュー数

21

永続キュー属性のローカルキューの最大メッセージ数とスイーパ実行間隔内で登録される最大メッセージ数または永続キュー属性の転送キューの最大メッセージ数の総数

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_MSG_"

<キュー名>

6

共用キュー受信用メッセージ情報テーブル

受信用共用キューの最大キュー数

3

受信用共用キューの最大メッセージ数

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_SHR_"

<キュー名>

"MG"

7

共用キュー受信用ライト管理テーブル

受信用共用キューの最大キュー数

4

1

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_SHR_"

<キュー名>

"WT"

8

共用キュー受信用リード管理テーブル

受信用共用キューの最大キュー数

4

1

次に示す文字列を順に連結した名称です。

<RMSystemNameプロパティ指定値>

"_SHR_"

<キュー名>

"RD"

注※

列数の詳細については，表4-4を参照してください。

表4‒3　管理情報テーブルの一覧（テーブルの可変長文字列数，データ長，データ型，キー名，キー長）

項番

種類

可変長文字列数※1

（VARCHAR≧256）

データ長（バイト）

データ型※2

キー名※3

キー長

（バイト）

1

システム管理情報テーブル

5

1024

既定義型

−

−

2

キュー情報テーブル

3

1024

QUEUE_NAME

32

3

FIFO情報テーブル

1または3

256または1024

FIFO_ID

256

4

あて先情報テーブル

1または3

512または1024

LOGICAL_ADDRESS

32

5

メッセージ情報テーブル

2または5

256または1024

FIFO_ID

256

SEQUENCE_NO

20

GROUP_NAME

256

GROUP_MESSAGE_NUMBER

20

6

共用キュー受信用メッセージ情報テーブル

0

0

MSG#

4

7

共用キュー受信用ライト管理テーブル

0

0

−

−

8

共用キュー受信用リード管理テーブル

0

0

−

−

（凡例）

−：該当しません。

注※1

HiRDBではVARCHAR型，OracleではVARCHAR2型となります。

注※2

データ型の詳細については，表4-4を参照してください。

注※3

キー名は一意にしてください。

データ型および列数の詳細を次に示します。

表4‒4　管理情報テーブルの一覧（データ型および列数の詳細）

項番

テーブル

HiRDBでのデータ型

Oracleでのデータ型

列数

1

システム管理情報テーブル

TIMESTAMP

DATE

2

INTEGER

NUMBER(10)

2

VARCHAR(128)

VARCHAR2(128)

1

VARCHAR(1024)

VARCHAR2(1024)

5

2

キュー情報テーブル

TIMESTAMP

DATE

2

INTEGER

NUMBER(10)

6

VARCHAR(20)

VARCHAR2(20)

6

VARCHAR(32)

VARCHAR2(32)

4

VARCHAR(64)

VARCHAR2(64)

1

VARCHAR(128)

VARCHAR2(128)

1

VARCHAR(1024)

VARCHAR2(1024)

3

3

FIFO情報テーブル

TIMESTAMP

DATE

2

INTEGER

NUMBER(10)

4

VARCHAR(20)

VARCHAR2(20)

8

VARCHAR(32)

VARCHAR2(32)

1

VARCHAR(256)

VARCHAR2(256)

1

VARCHAR(1024)

VARCHAR2(1024)

3

BINARY(10000000)

BLOB

2

4

あて先情報テーブル

VARCHAR(16)

VARCHAR2(16)

2

VARCHAR(32)

VARCHAR2(32)

1

VARCHAR(512)

VARCHAR2(512)

1

VARCHAR(1024)

VARCHAR2(1024)

3

5

メッセージ情報テーブル

INTEGER

NUMBER(10)

4

VARCHAR(20)

VARCHAR2(20)

8

VARCHAR(128)

VARCHAR2(128)

1

VARCHAR(256)

VARCHAR2(256)

2

VARCHAR(1024)

VARCHAR2(1024)

5

BINARY(2147483647)

LONG RAW

1

6

共用キュー受信用メッセージ情報テーブル

INTEGER

−

1

BINARY(n)※

−

1

BINARY(512)

−

1

7

共用キュー受信用ライト管理テーブル

INTEGER

−

2

SMALLINT

−

1

BINARY(256)

−

1

8

共用キュー受信用リード管理テーブル

INTEGER

−

1

SMALLINT

−

1

BINARY(256)

−

2

（凡例）

−：該当しません。

注※

nは，ユーザが受信用共用キュー作成時に指定したメッセージ長です。

(1)　管理情報テーブルの作成方法

管理情報テーブルを作成するには，SQLファイルまたはコマンドを実行します。管理情報テーブルの作成方法を次の表に示します。

表4‒5　管理情報テーブルの作成方法

項番

種類

作成方法

1

システム管理情報テーブル

テーブル作成用SQLファイルを実行して作成します。管理情報テーブルの作成については，HiRDBの場合は「3.4.1(3)　Reliable Messagingの管理情報テーブルの作成」を，Oracleの場合は「3.4.2(3)　Reliable Messagingの管理情報テーブルの作成」を参照してください。

2

キュー情報テーブル

3

FIFO情報テーブル

4

あて先情報テーブル

5

メッセージ情報テーブル

hrmmkqueコマンド（-tオプションにlocalまたはtransmitを指定し，かつ-mオプションでpersistentを指定する場合）を実行して作成します。hrmmkqueコマンドについては，「8.3.17　hrmmkque（ローカルキューの作成）」および「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

6

共用キュー受信用メッセージ情報テーブル

hrmmkqueコマンド（-tオプションにshr_receiveを指定する場合）を実行して作成します。hrmmkqueコマンドについては，「8.3.18　hrmmkque（受信用共用キューの作成）」を参照してください。

7

共用キュー受信用ライト管理テーブル

8

共用キュー受信用リード管理テーブル

(2)　管理情報テーブルの削除方法

管理情報テーブルを削除するには，SQLファイルまたはコマンドを実行します。管理情報テーブルの削除方法を次の表に示します。

表4‒6　管理情報テーブルの削除方法

項番

種類

削除方法

1

システム管理情報テーブル

テーブル削除用SQLファイルを実行して削除します。管理情報テーブルの削除については，「4.3.2(1)　テーブル削除用SQLファイルの使用」を参照してください。

2

キュー情報テーブル

3

FIFO情報テーブル

4

あて先情報テーブル

5

メッセージ情報テーブル

hrmdelqueコマンドを実行して削除します。hrmdelqueコマンドについては，「8.3.8　hrmdelque（キューの削除）」を参照してください。

6

共用キュー受信用メッセージ情報テーブル

7

共用キュー受信用ライト管理テーブル

8

共用キュー受信用リード管理テーブル

4.3.7　アプリケーション認証によるDBアクセス設定

アプリケーション認証を使うと，Reliable Messagingの初期設定を行ったDBA権限を持つユーザ（DBAユーザ）以外のユーザ（一般ユーザ）も，Reliable Messagingにアクセスできるようになります。

アプリケーション認証を利用するには，DBに格納したReliable Messagingの管理情報テーブルごとに，一般ユーザに適切なアクセス権限を与える必要があります。

ユーザに与えるアクセス権限の種類を次の表に示します。

表4‒7　アクセス権限の種類

項番

アクセス権限の種類

説明

1

SELECT権限

テーブルの行を参照できる

2

INSERT権限

テーブルに行を追加できる

3

DELETE権限

テーブルから行を削除できる

4

UPDATE権限

テーブルの行を更新できる

(1)　HiRDBの場合

DBAユーザ権限を持つユーザ（DBAユーザ）が，アプリケーション認証によってReliable Messagingのテーブルにアクセスするユーザ（一般ユーザ）に権限を与えるには，次のSQL文を実行します。

GRANT CONNECT TO <一般ユーザ> IDENTIFIED BY <一般ユーザのパスワード>;
GRANT SELECT,INSERT,DELETE,UPDATE
ON <DBAユーザ>.<管理情報テーブル名> TO <一般ユーザ>;

ユーザ権限の設定に関する詳細は，マニュアル「HiRDB システム運用ガイド」を参照してください。

(2)　Oracleの場合

DBAユーザ権限を持つユーザ（DBAユーザ）が，アプリケーション認証によってReliable Messagingのテーブルにアクセスするユーザ（一般ユーザ）に権限を与えるには，次のSQL文を実行します。

CREATE USER <一般ユーザ> IDENTIFIED BY <一般ユーザのパスワード>;
GRANT SELECT,INSERT,DELETE,UPDATE
ON <DBAユーザ>.<管理情報テーブル名> TO <一般ユーザ>;

ユーザ権限の設定に関する詳細は，Oracleのマニュアルを参照してください。

4.4　PRFトレースファイルの運用（永続版リソースアダプタの場合）

Application ServerのPRFトレースファイルを利用して，Reliable Messagingの性能を解析できます。

PRFトレースファイルの運用方法，取得レベル，および編集について説明します。

4.4.1　PRFトレースファイルの運用方法

PRFトレースを取得するには，Performance Tracer（以降，パフォーマンストレーサと呼びます）をインストールしておく必要があります。パフォーマンストレーサは，J2EEサーバの起動に合わせて起動するため，運用管理ドメインやJ2EEサーバでの設定が必要となります。これらの設定はManagement Serverを利用して実施します。Management Serverでの設定手順を次に示します。なお，設定方法の詳細については，マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」を参照してください。

パフォーマンストレーサの追加

運用管理ドメインで，パフォーマンストレーサを追加します。

パフォーマンストレーサの設定

論理サーバの環境設定で，パフォーマンストレーサの設定をします。

J2EEサーバで利用するパフォーマンストレーサの設定

論理サーバの環境設定で，J2EEサーバで利用するパフォーマンストレーサを選択します。

4.4.2　PRFトレースファイルの取得レベル

PRFトレースファイルの取得レベルには標準レベルと詳細レベルがあり，パフォーマンストレーサにPRFトレース取得レベルを設定できます。Reliable Messagingでは，標準レベルの場合，主にアプリケーションインタフェースでのトレース情報を取得し，詳細レベルの場合，さらに内部インタフェースのトレース情報を取得します。

PRFトレース取得レベルは，パフォーマンストレーサの起動中に任意のタイミングで変更できます。PRFトレース取得レベルの変更方法については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

4.4.3　PRFトレースファイルの編集

PRFトレースはバイナリ形式で出力されるため，cprfedコマンドで編集する必要があります。cprfedコマンドの詳細については，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。また，PRFトレースの出力については，「9.3.6　PRFトレース」を参照してください。

4.5　Reliable Messaging運用時の注意事項（永続版リソースアダプタの場合）

永続版リソースアダプタを使用する場合の，Reliable Messagingの運用時の注意事項について説明します。

4.5.1　Windows使用時の注意事項

Windowsで，Reliable Messagingのシステムを構築，運用する場合の注意事項について説明します。

(1)　UAC(ユーザーアカウント制御)機能が有効な環境でReliable Messagingが提供するコマンドを使用する時の注意事項

Reliable Messagingが提供するコマンドは，管理者特権で実行する必要があります。Reliable Messagingが提供するコマンドは，「管理者：コマンドプロンプト」で実行してください。

「管理者：コマンドプロンプト」は，Windowsで提供されている機能を使用して起動してください。

(2)　JIS X0213:2004に含まれるUnicodeの補助文字を使用する場合の注意事項

JIS X0213:2004の第三水準および第四水準の文字の一部には，Unicodeの補助文字が含まれます。Unicodeの補助文字とは，基本多言語面以外の文字（UnicodeのコードポイントがU+10000〜U+10FFFFの範囲の文字）のことです。UTF-16エンコーディングでは，サロゲートペアとして表されます。

Unicodeの補助文字を使用する場合の注意事項を次に示します。

(a)　リクエストで使用する場合の注意事項

Reliable Messagingに対して，クライアントからUnicodeの補助文字を含むリクエストを送信した場合，Unicodeの補助文字は，ログやPRFトレースに正しく出力されません。ただし，その場合も，Unicodeの補助文字以外の文字は，ログやPRFトレースに正しく出力されます。

また，リクエストにUnicodeの補助文字が含まれる場合も，アプリケーションは正しく動作します。

リクエストでのUnicodeの補助文字の使用を制限したい場合には，アプリケーションでの対応などを検討してください。

(b)　環境構築／運用時の注意事項

Reliable Messagingのシステムを構築，運用する場合，およびアプリケーションやリソースをデプロイする場合に使用する定義に，Unicodeの補助文字は使用できません。

Unicodeの補助文字を使用できない定義の例を示します。

EAR，WAR，JAR，EJB-JAR，サーブレット，JSP，クラス，メソッド，引数，または変数の名称

DD内の各種定義

システムのインストール先の指定値

そのほか，各種定義ファイルの設定値

4.5.2　永続版リソースアダプタと非永続版リソースアダプタを切り替える場合の注意事項

永続版リソースアダプタから非永続版リソースアダプタに切り替える場合，または非永続版リソースアダプタから永続版リソースアダプタに切り替える場合，Application Serverの提供するリソースアダプタバージョンアップコマンドによる更新はできません。永続版リソースアダプタと非永続版リソースアダプタを切り替えるには，切り替え前のリソースアダプタのアンデプロイ（cjundeployrar）とリソース削除（cjdeleteres）を実行し，新しく切り替え後のリソースアダプタのインポート（cjimportres）とデプロイ（cjdeployrar）を実行してください。

切り替え前のリソースアダプタで作成したキューや定義情報は，切り替え後のリソースアダプタで使用できません。切り替え後のリソースアダプタの仕様に従って再定義する必要があります。リソースアダプタの属性ファイル（Connector属性ファイル）は，切り替え後のリソースアダプタをJ2EEサーバにインポート（またはデプロイ）したあと，Application Serverの属性ファイル取得／設定コマンドcjgetresprop／cjsetresprop（またはcjgetrarprop／cjsetrarprop）で設定し直してください。

4.5.3　Reliable Messagingが動作するマシンの時刻設定の注意事項

NTPプログラムでマシン時刻の補正をする場合はslewモードを使用し，なおかつマシン時刻が戻らないようにしてください。

大幅な時刻補正が必要な場合は，製品のプロセスを停止してから時刻補正を行なうようにしてください。その場合，補正後の時刻がプロセス停止時刻以前の時刻にならないように注意してください。

製品のプロセスを停止せずにマシン時刻を戻すと，時刻補正前に登録したメッセージと補正後に登録したメッセージの受信順序が入れ替わる場合があります。

5　Reliable Messaging（非永続版リソースアダプタ）の運用

Reliable Messagingのアプリケーションを開始するには，あらかじめReliable Messagingを開始しておく必要があります。Reliable Messagingを停止するには，あらかじめアプリケーションを停止しておく必要があります。

この章では，非永続版リソースアダプタを使用する場合の，Reliable Messagingおよびアプリケーションの開始と停止，ローカルキューの運用などについて説明します。

5.1　Reliable Messagingとアプリケーションの開始と停止（非永続版リソースアダプタの場合）

非永続版リソースアダプタを使用する場合の，Reliable Messagingとアプリケーションの開始手順および停止手順について説明します。

5.1.1　Reliable Messagingの開始（非永続版リソースアダプタの場合）

Reliable Messagingを開始するには，あらかじめプロパティのカスタマイズとデプロイを完了させている必要があります。詳細については，「3.5.3　Reliable Messagingのプロパティ定義（非永続版リソースアダプタの場合）」を参照してください。また，Reliable Messagingの開始時に使用するサーバ管理コマンドについては，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

Reliable Messagingを開始する手順を次に示します。

J2EEサーバの開始

Application Serverを開始します。また，アプリケーションの要件に合わせて，必要なApplication Serverのサービスを開始してください。

Reliable Messagingの開始

サーバ管理コマンドを使用して，リソースアダプタとしてReliable Messagingを開始します。

注意

非永続版リソースアダプタの場合，Reliable Messagingが正常に開始すると，実行状態になります。

非永続版リソースアダプタの場合，起動時にキュー作成ファイルの読み込みや解析で続行できないエラーが発生すると，閉塞状態で起動します。

Connector属性ファイルの<transaction-support>タグにLocalTransactionまたはNoTransactionを指定した場合，Reliable Messagingが開始状態になっても，実際には開始処理に失敗していることがあります。このときにアプリケーションを開始するとReliable Messagingがコネクションを取得する契機でエラーとなります。このため，Reliable Messagingが正常に開始していることをApplication Serverのログメッセージで確認してください。Reliable Messagingが正常に開始している場合，ログメッセージとしてKFRM01009-Iが表示されます。

Reliable Messagingの開始中は，Reliable Messagingが使用しているキュー定義ファイルおよびキュー作成ファイルを削除したり，読み込みができなくなったりするようなアクセス権限の変更は行わないでください。

Reliable Messagingのリソースアダプタを開始するときに，OutOfMemoryErrorが発生しKDJE48571-Eが出力された場合，Reliable Messagingの内部状態が不正になる可能性があります。この場合Application Serverを再起動してください。

5.1.2　アプリケーションの開始（非永続版リソースアダプタの場合）

アプリケーションを開始するには，あらかじめReliable Messagingが開始されている必要があります。各手順で使用するサーバ管理コマンドおよび各属性ファイルの詳細については，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」およびマニュアル「アプリケーションサーバ リファレンス 定義編(アプリケーション／リソース定義)」を参照してください。

アプリケーションを開始する手順を次に示します。

アプリケーションのインポート

サーバ管理コマンドを使用して，Reliable Messagingのアプリケーションをインポートします。

J2EEアプリケーションのプロパティ設定

テキストエディタを使って，Session Bean属性ファイル，Entity Bean属性ファイル，WAR属性ファイル，またはMessageDrivenBean属性ファイルを編集して，リソースアダプタのリファレンス定義，リソース環境のリファレンス定義およびメッセージ参照の設定項目を設定します。

アプリケーションの開始

サーバ管理コマンドを使用して，アプリケーションを開始します。

5.1.3　Reliable Messagingの停止（非永続版リソースアダプタの場合）

サーバ管理コマンドを使用して，アプリケーションを停止させてから，Reliable Messagingを停止させます。サーバ管理コマンドについては，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

Reliable Messagingを停止する手順を次に示します。

アプリケーションの停止

サーバ管理コマンドを使用して，アプリケーションを停止します。一つのReliable Messagingを利用する複数のアプリケーションがある場合はすべて停止します。

Reliable Messagingの停止

サーバ管理コマンドを使用して，Reliable Messagingを停止します。

J2EEサーバの停止

アプリケーションサーバシステムを使用しない場合は，J2EEサーバとApplication Serverのサービスを停止します。

注意

Reliable Messagingのリソースアダプタを停止するときに，OutOfMemoryErrorが発生しKDJE42093-Eが出力された場合，Reliable Messagingの内部状態が不正になる可能性があります。この場合Application Serverを再起動してください。

5.1.4　Reliable Messagingの状態遷移（非永続版リソースアダプタの場合）

アプリケーションサーバシステムにとって，Reliable Messagingには未デプロイ状態，デプロイ済み状態，およびリソースアダプタ開始状態の三つの状態があります。また，非永続版リソースアダプタを使用する場合，リソースアダプタ開始状態のReliable Messagingの内部状態として，実行状態，閉塞状態および開始中状態があります。なお，非永続版リソースアダプタには，管理状態はありません。

Reliable Messagingの状態について次に説明します。

実行状態

アプリケーションにサービスを提供する状態です。

閉塞状態

Reliable Messaging内部のメモリ状態不正などによって，処理の続行ができなくなった状態です。アプリケーションにサービスは提供されなくなります。

開始中状態

リソースアダプタを開始して，実行状態に移行するまでの一時的な状態です。

(1)　状態遷移

非永続版リソースアダプタを使用する場合のReliable Messagingの状態遷移を次の図に示します。

図5‒1　非永続版リソースアダプタを使用する場合のReliable Messagingの状態遷移

5.2　ローカルキューの運用（非永続版リソースアダプタの場合）

5.2.1　ローカルキューの操作方法

Reliable Messagingの非永続版リソースアダプタを開始すると，キュー作成ファイルを基にローカルキューが作成されます。Reliable Messagingが実行状態に移行すると，メッセージの送受信ができます。

非永続版リソースアダプタを使用する場合のローカルキューの操作について次に説明します。

キューの追加，削除，および属性変更をする場合

キュー作成ファイルを編集し，Reliable Messagingを再起動してください。非永続版リソースアダプタでは非永続キューだけを提供するため，Reliable Messagingを再起動するとすべてのメッセージがなくなります。キュー作成ファイルの詳細については，「3.5.1　キュー作成ファイルの作成」を参照してください。

キュー情報の表示，メッセージの表示，メッセージの削除をする場合

次に示すコマンドを実行してください。コマンドの詳細については，「8.　コマンドリファレンス」を参照してください。

hrmlsque（キュー情報の表示）

hrmlsmsg（メッセージの表示）

hrmdelmsg（メッセージの削除）

5.2.2　ローカルキューの状態遷移（非永続版リソースアダプタの場合）

キューには，通常状態，抑止状態（一部抑止状態および完全抑止状態）があります。キューの抑止状態は，特定のキューに対してメッセージの送受信を抑止する場合などに利用します。

キューの状態について次に説明します。

通常状態

正常に使用できる状態です。

一部抑止状態

メッセージの送受信が一部抑止されている状態です。指定するキューの種類によって，抑止される形態が異なります。キューの種類と抑止される形態については，「8.3.27(3)　オプション」を参照してください。

完全抑止状態

メッセージの送受信が完全に抑止されている状態です。指定するキューの種類に応じて，抑止できる形態をすべて抑止します。

キューの状態遷移を次の図に示します。

図5‒2　キューの状態遷移

5.3　PRFトレースファイルの運用（非永続版リソースアダプタの場合）

Application ServerのPRFトレースファイルを利用して，Reliable Messagingの性能を解析できます。

PRFトレースを取得するには，Performance Tracer（以降，パフォーマンストレーサと呼びます）をインストールしておく必要があります。パフォーマンストレーサは，J2EEサーバの起動に合わせて起動するため，運用管理ドメインやJ2EEサーバでの設定が必要となります。これらの設定はManagement Serverを利用して実施します。設定手順，および設定内容の詳細については，「4.4　PRFトレースファイルの運用（永続版リソースアダプタの場合）」を参照してください。

5.4　Reliable Messaging運用時の注意事項（非永続版リソースアダプタの場合）

非永続版リソースアダプタを使用する場合の，Reliable Messagingの運用時の注意事項について説明します。

5.4.1　Windows使用時の注意事項

Windowsで，Reliable Messagingのシステムを構築，運用する場合の注意事項について説明します。

(1)　UAC（ユーザーアカウント制御）機能が有効な環境でReliable Messagingが提供するコマンドを使用する時の注意事項

Reliable Messagingが提供するコマンドは，管理者特権で実行する必要があります。Reliable Messagingが提供するコマンドは，「管理者：コマンドプロンプト」で実行してください。

「管理者：コマンドプロンプト」は，Windowsで提供されている機能を使用して起動してください。起動方法の例を次に示します。

［スタート］ボタンをクリックします。

［アクセサリ］を選択します。

［コマンド プロンプト］を右クリックして，［管理者として実行］をクリックします。

管理者のパスワードまたは確認を求められた場合は，画面の指示に従って，パスワードを入力するか，または確認情報を提供してください。

(2)　JIS X0213:2004に含まれるUnicodeの補助文字を使用する場合の注意事項

JIS X0213:2004の第三水準および第四水準の文字の一部には，Unicodeの補助文字が含まれます。Unicodeの補助文字とは，基本多言語面以外の文字（UnicodeのコードポイントがU+10000〜U+10FFFFの範囲の文字）のことです。UTF-16エンコーディングでは，サロゲートペアとして表されます。

Unicodeの補助文字を使用する場合の注意事項を次に示します。

(a)　リクエストで使用する場合の注意事項

Reliable Messagingに対して，クライアントからUnicodeの補助文字を含むリクエストを送信した場合，Unicodeの補助文字は，ログやPRFトレースに正しく出力されません。ただし，その場合も，Unicodeの補助文字以外の文字は，ログやPRFトレースに正しく出力されます。

また，リクエストにUnicodeの補助文字が含まれる場合も，アプリケーションは正しく動作します。

リクエストでのUnicodeの補助文字の使用を制限したい場合には，アプリケーションでの対応などを検討してください。

(b)　環境構築／運用時の注意事項

Reliable Messagingのシステムを構築，運用する場合，およびアプリケーションやリソースをデプロイする場合に使用する定義に，Unicodeの補助文字は使用できません。

Unicodeの補助文字を使用できない定義の例を示します。

EAR，WAR，JAR，EJB-JAR，サーブレット，JSP，クラス，メソッド，引数，または変数の名称

DD内の各種定義

システムのインストール先の指定値

そのほか，各種定義ファイルの設定値

5.4.2　永続版リソースアダプタと非永続版リソースアダプタを切り替える場合の注意事項

永続版リソースアダプタから非永続版リソースアダプタに切り替える場合，または非永続版リソースアダプタから永続版リソースアダプタに切り替える場合，Application Serverの提供するリソースアダプタバージョンアップコマンドによる更新はできません。永続版リソースアダプタと非永続版リソースアダプタを切り替えるには，切り替え前のリソースアダプタのアンデプロイ（cjundeployrar）とリソース削除（cjdeleteres）を実行し，新しく切り替え後のリソースアダプタのインポート（cjimportres）とデプロイ（cjdeployrar）を実行してください。

切り替え前のリソースアダプタで作成したキューや定義情報は，切り替え後のリソースアダプタで使用できません。切り替え後のリソースアダプタの仕様に従って再定義する必要があります。リソースアダプタの属性ファイル（Connector属性ファイル）は，切り替え後のリソースアダプタをJ2EEサーバにインポート（またはデプロイ）したあと，Application Serverの属性ファイル取得／設定コマンドcjgetresprop／cjsetresprop（またはcjgetrarprop／cjsetrarprop）で設定し直してください。

5.4.3　Reliable Messagingが動作するマシンの時刻設定の注意事項

NTPプログラムでマシン時刻の補正をする場合はslewモードを使用し，なおかつマシン時刻が戻らないようにしてください。

大幅な時刻補正が必要な場合は，製品のプロセスを停止してから時刻補正を行なうようにしてください。その場合，補正後の時刻がプロセス停止時刻以前の時刻にならないように注意してください。

製品のプロセスを停止せずにマシン時刻を戻すと，時刻補正前に登録したメッセージと補正後に登録したメッセージの受信順序が入れ替わる場合があります。

6　コンフィグレーションプロパティ

Reliable MessagingおよびDB Connector for Reliable Messagingを開始するには，ユーザの環境に合わせてコンフィグレーションプロパティを設定する必要があります。

この章では，Reliable MessagingおよびDB Connector for Reliable Messagingのコンフィグレーションプロパティの詳細について説明します。

6.1　Reliable Messagingのコンフィグレーションプロパティの一覧

コンフィグレーションプロパティはReliable Messagingの動作内容を指定するプロパティです。プロパティを定義したら，サーバ管理コマンドを使用して，Reliable Messagingをインポートします。そのあと，プロパティを設定します。プロパティ定義の詳細については，永続版リソースアダプタの場合は「3.4.5　Reliable Messagingのプロパティ定義（永続版リソースアダプタの場合）」を，非永続版リソースアダプタの場合は「3.5.3　Reliable Messagingのプロパティ定義（非永続版リソースアダプタの場合）」を参照してください。

Reliable Messagingが提供するコンフィグレーションプロパティの一覧を次の表に示します。

表6‒1　Reliable Messagingのコンフィグレーションプロパティの一覧

項番

プロパティ名

設定内容

永続版リソースアダプタでの指定

非永続版リソースアダプタでの指定

1

RMSystemName

システム名

◎

◎

2

RMLinkedDBConnectorName

連携するDB Connectorの表示名

◎

×

3

QueueMakeFileName

キュー作成ファイルの場所

×

◎

4

QueueConfigFileName

キュー定義ファイルの場所

○※1

○※1

5

RMDeadMessageQueueName

デッドメッセージキュー名

○

×

6

RMWaitRestoration

キュー定義ファイル未使用時のReliable Messaging開始時の復元完了待ち合わせの有無

○※2

×

7

RMStartTimeout

Reliable Messaging開始処理のタイムアウト時間（無限待ちの回避）

○※3

×

8

RMAssociateJDBCFlag

DB Connectorとのコネクション共有の利用有無

○

×

9

RMSweepTimerInterval

メッセージ削除処理の実行間隔

○

○

10

RMDeleteMessageImmediately

メッセージ即時削除の利用有無

○

×

11

RMPassByReference

メッセージ送受信時の参照渡し方式の利用の有無

○

○

12

RMMaxDeliveryNum

配送回数の最大値

○

○

13

RMMethodTraceLevel

メソッドトレースの出力レベル

○

○

14

RMLineTraceLevel

回線トレースの出力レベル

○

×

15

RMLogTraceFileNum

トレースファイルの最大面数

○

○

16

RMLogTraceFileSize

トレースファイルのファイルサイズ

○

○

17

RMSHConnectFlag

共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信用共用キューの有無

○

×

18

RMSHPort

共用キューを使用して複数システム間でのアプリケーション連携をする場合のイベント受信用ポート番号

○※4

×

19

RMSHRecoveryTimerInterval

共用キューを使用して複数システム間でのアプリケーション連携をする場合のリカバリスレッド監視間隔

○※4

×

20

RMTRConnectFlag

キュー間転送の使用有無

○

×

21

RMTRSendThreadNum

送信スレッドの起動数

○※5

×

22

RMTRResendInterval1Num

再送間隔1での再送回数

○※5

×

23

RMTRResendInterval1

再送間隔1

○※5

×

24

RMTRResendInterval2

再送間隔2

○※5

×

25

RMTRResendTimerInterval

再送タイマ監視間隔

○※5

×

26

RMTRPendingNotifyInterval

滞留メッセージの監視時間

○※5

×

27

RMTRTransferControlDir

クライアント定義ファイルが格納されているディレクトリのパス

○※5

×

28

RMAutoDeleteMessage

デッドメッセージキュー未使用時の無効メッセージ自動削除の有無

○

×

（凡例）

◎：必ず指定します。

○：必要に応じて指定します。

×：指定不要です。

注※1

キュー定義ファイルを使用する場合，QueueConfigFileNameプロパティは必須です。キュー定義ファイルを使用しない場合は，QueueConfigFileNameプロパティを省略するか，プロパティの値を空にしてください。

注※2

キュー定義ファイルを使用する場合，RMWaitRestorationプロパティは無視されます。

注※3

キュー定義ファイルを使用する場合，またはRMWaitRestorationプロパティにfalseを指定する場合，RMStartTimeoutプロパティは無視されます。

注※4

RMSHConnectFlagプロパティにfalseを指定する場合，これらのプロパティは無視されます。

注※5

RMTRConnectFlagプロパティにfalseを指定する場合，これらのプロパティは無視されます。

6.2　Reliable Messagingのコンフィグレーションプロパティの詳細説明

各コンフィグレーションプロパティの詳細について説明します。

6.2.1　RMSystemName ＝ システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字：java.lang.String＞

Reliable Messagingが連携するシステム全体で一意なシステム名を指定します。このプロパティは必須です。

このプロパティの指定がない場合や空白を指定している場合，Reliable Messagingの開始時にエラーが発生します。

6.2.2　RMLinkedDBConnectorName = 連携するDB Connectorの表示名

　〜＜文字列：java.lang.String＞((1〜128))

連携するDB Connectorの表示名を指定します。このプロパティは必須です。

プロパティが省略された場合や，プロパティに指定した表示名のDB Connectorが起動していない場合，起動に失敗します。

6.2.3　QueueMakeFileName = キュー作成ファイルの場所

　〜＜文字列：java.lang.String＞

キュー作成ファイル名を絶対パスで指定します。非永続版リソースアダプタではこのプロパティは必須です。永続版リソースアダプタではこのプロパティは指定不要です。

非永続版リソースアダプタでこのプロパティの指定がない場合，または指定したキュー作成ファイルの読み取りに失敗した場合，Reliable Messagingの開始時にエラーが発生します。

キュー作成ファイルの詳細については，「3.5.1　キュー作成ファイルの作成」を参照してください。

6.2.4　QueueConfigFileName = キュー定義ファイルの場所

　〜＜文字列：java.lang.String＞

キュー定義ファイル名を絶対パスで指定します。

このプロパティは，キュー定義ファイルを使用する場合は必須です。キュー定義ファイルを使用しない場合はこのプロパティを省略するか，プロパティの値を空にしてください。

キュー定義ファイルを使用しない場合，キュー作成時に指定した表示名に従って生成されたキューの識別名がJNDIネーミングサービスに登録されます。

指定したキュー定義ファイルの読み取りに失敗した場合，Reliable Messagingの開始時にエラーが発生します。

キュー定義ファイルの詳細については，永続版リソースアダプタの場合，「3.4.4　キュー定義ファイルの作成（永続版リソースアダプタの場合）」を参照してください。非永続版リソースアダプタの場合，「3.5.2　キュー定義ファイルの作成（非永続版リソースアダプタの場合）」を参照してください。

6.2.5　RMDeadMessageQueueName ＝ デッドメッセージキュー名

　〜＜1〜20文字の識別子：java.lang.String＞

デッドメッセージキューを使用する場合に，デッドメッセージキューとして使用するローカルキュー名を指定します。ローカルキュー以外のキュー名を指定する場合，Reliable Messagingの開始時にエラーが発生します。このプロパティの指定がない場合，または存在しないキュー名を指定した場合，デッドメッセージキューを使用できません。デッドメッセージキューとして使用するキューは，ユーザがhrmmkqueコマンドでローカルキューとして作成してください。

なお，このプロパティを変更して別のローカルキューをデッドメッセージキューにする場合，変更前のデッドメッセージキューに格納されているメッセージをすべて削除してください。

キュー間転送では，転送できなかったメッセージは転送キューに蓄積されます。転送キュー内のメッセージが格納できる最大メッセージ数に達すると，転送キュー内のメッセージが減らないかぎり，新たにメッセージを転送キューに格納し送信できなくなります。

デッドメッセージキューを使用すると，転送できなかったメッセージを削除処理のタイミングで転送キューからデッドメッセージキューに移動できます。これによって，転送キューがいっぱいになるのを防止できます。

6.2.6　RMWaitRestoration = Reliable Messaging開始時の復元完了待ち合わせの有無

　〜＜java.lang.Boolean＞((true｜false))《true》

キュー定義ファイルを使用しない場合に，Reliable Messagingを開始するときに非同期に実行する復元処理（DBに格納されているキュー情報を読み込みキューを復元すること）が完了するまで，Reliable Messagingの開始を待ち合わせるかどうかを指定します。

キュー定義ファイルを使用する場合，このプロパティは無視されます。

非永続版リソースアダプタの場合，Reliable Messagingの開始処理と復元処理を同期で実行しているためこのプロパティは使用しません。

このプロパティにtrueを指定した場合，復元処理の完了を待ち合わせてReliable Messagingを開始します。falseを指定した場合，復元処理の完了を待ち合わせないでReliable Messagingを開始します。

このプロパティにtrueを指定した場合，Reliable Messagingの開始を待ち合わせることにより，次のような影響があります。

Reliable Messagingとアプリケーションが開始している状態でApplication Serverを再起動したときに，DBからの復元処理に時間が掛かるとアプリケーションの開始処理の完了が遅くなります。

Application Serverが開始している状態で，Reliable Messagingを開始するときに，Reliable Messagingの復元処理に時間が掛かると，リソースアダプタの開始コマンドがタイムアウトすることがあります。

DBほか関連リソースにアクセスできないなど，Reliable Messagingが正常に開始完了（非閉塞状態で開始し，KFRM01009-Iメッセージが出力される）できない環境でReliable Messagingを開始すると，次のような現象が発生します。

表6‒2　Reliable Messagingを正常に開始完了できない環境で発生する現象

トランザクションサポートレベル

Reliable Messagingの開始時の環境

Application Server再起動の延長の場合

Application Server起動状態の場合

XATransaction

関連リソースに正常アクセスできるまで，またはRMStartTimeoutで指定した値に到達し開始処理のリトライがタイムアウトするまで，Application Serverの開始処理が完了しません。

Reliable Messagingの開始処理が失敗します。

LocalTransaction,

NoTransaction

関連リソースに正常アクセスできるまで，またはRMStartTimeoutで指定した値に到達し開始処理のリトライがタイムアウトするまで，Application Serverの開始処理が完了しません。

関連リソースに正常アクセスできるまで，またはRMStartTimeoutで指定した値に到達し開始処理のリトライがタイムアウトするまで，Reliable Messagingの開始処理が完了しません。

Application ServerまたはReliable Messagingの開始を待っている状態で，開始処理を中断する場合は，cjstopsvコマンドに-fオプションを指定してJ2EEサーバを強制停止してください。cjstopsvコマンドについては，マニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。

このプロパティにfalseを指定した場合，タイミングによって次の現象が発生します。

Reliable Messagingを利用するアプリケーションがJNDIネーミングサービスからキューをルックアップするときに，ルックアップに失敗します（ただし，Message-driven Bean（MDB）を除きます）。なお，次の二つの条件を満たしている場合，アプリケーション開始時にキューのルックアップを実行します。

Stateless Session Beanでインスタンスプールの最小値が1以上である

ejbCreate()メソッド内でキューのルックアップ処理を実装，またはEJBのアノテーション機能によってキューを定義している

これらの条件を満たしている場合にキューのルックアップに失敗したときは，アプリケーションの開始が失敗しますので注意してください。

ルックアップについては，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」のJNDI名前空間とルックアップについての記述を参照してください。

Stateless Session Beanについては，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)」を参照してください。

アノテーション機能については，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。

Reliable Messagingを利用するアプリケーションを開始するときに，表示名に対応したキュー名を正しく取得できずにエラーとなり，アプリケーションの開始に失敗します。

このプロパティは省略できます。

6.2.7　RMStartTimeout = Reliable Messaging開始処理のタイムアウト時間

　〜＜数字：java.lang.Integer＞((0〜600))《60》（単位：秒）

このプロパティを設定することで，Reliable Messagingの開始処理を待ち合わせる場合，タイムアウトが発生するまで待つことを避けることができます。

非永続版リソースアダプタの場合，開始処理でリトライするエラー要因がないため，このプロパティは使用しません。

Reliable Messagingの開始時に非同期に実行する復元処理（DBに格納されているキュー情報を読み込みキューを復元すること）が完了するまでReliable Messagingの開始を待ち合わせる場合，開始処理失敗時のリトライをタイムアウトする時間を指定します。このプロパティは，RMWaitRestorationプロパティがtrueで，かつキュー定義ファイルを使用しないときにだけ有効となります。それ以外のとき，このプロパティの設定値は無視されタイムアウトしません。

このプロパティの値は，Reliable MessagingやReliable Messagingを利用するアプリケーションを開始する場合，実行するコマンドなどがタイムアウトする時間よりも小さい値を指定することをお勧めします。値に0を指定したとき，Reliable Messagingの開始処理はタイムアウトしないため，開始処理が正常に完了する（非閉塞状態で開始し，KFRM01009-Iメッセージが出力される）まで待ち合わせます。

なお，実際にタイムアウトする時間は，指定した値よりも数秒遅れることがあります。

タイムアウト後，Reliable Messagingは開始処理のリトライを中止し，システム閉塞状態で開始するため，Reliable Messaging開始の待ち合わせは解除されます。この場合，Application ServerまたはReliable Messagingを停止し，正しい設定・環境で再度Reliable Messagingを開始してください。

Reliable Messagingが開始処理に失敗しリトライするエラー要因を次の表に示します。

表6‒3　Reliable Messagingが開始処理に失敗しリトライするエラー要因

トランザクションサポートレベル

Reliable Messagingの開始時の環境

Application Server再起動の延長の場合

Application Server起動状態の場合

XATransaction

DB停止しているなど一時的な障害

Application Server再起動前と再起動後で接続先DBのIPアドレスが変更されるような場合

リトライするエラー要因はありません

LocalTransaction,

NoTransaction

DB停止しているなど一時的な障害

DB接続に関する設定の誤り（ユーザ名・パスワードの不正など）

DB停止しているなど一時的な障害

DB接続に関する設定の誤り（ユーザ名・パスワードの不正など）

このプロパティは省略できます。

6.2.8　RMAssociateJDBCFlag=DB Connectorとのコネクション共有機能の使用有無

　〜＜java.lang.Boolean＞((true｜false))《true》

DB Connectorとのコネクション共有機能を使用するかどうかを指定します。

DB Connectorとのコネクション共有機能を使用する場合はtrue，使用しない場合はfalseを指定します。このプロパティがtrueの場合，非永続キューだけを利用していても，DBに対してトランザクション命令を発行します。非永続キューだけを利用する場合はfalseを指定します。ただし，このプロパティをfalseに設定すると，連携するDB Connectorのコネクションは取得できないため，注意してください。

また，このプロパティをfalseに設定してHiRDBをXATransactionモードで利用する場合は，DB Connectorのステートメントプールを利用しないでください。

6.2.9　RMSweepTimerInterval ＝ メッセージ削除処理の実行間隔

　〜＜数字：java.lang.Integer＞((60〜86400))《600》（単位：秒）

メッセージの削除処理を実行する間隔を指定します。

キューに登録されたメッセージをアプリケーションが読み出したときや，キュー上のメッセージが有効期間に達したとき，その時点ではメッセージは削除されません。RMSweepTimerIntervalプロパティ指定値の間隔で実行されるメッセージ削除処理によって削除されます。

永続版リソースアダプタの場合

指定値が大き過ぎるとメモリ使用量やDBのエリア使用量が増加し，小さ過ぎるとDBアクセスが増加するので注意してください。また，転送キューを利用する場合，転送に成功したメッセージはメッセージ削除処理によって削除されるまでキューに格納されたままなので，指定値を大きくし過ぎないように注意してください。

RMSweepTimerIntervalの値を大きくすると，削除対象となるメッセージ数が増える可能性があります。削除対象メッセージ数が増えると，遅延削除のDB更新処理にかかる時間が増加するため，HiRDBを使用する場合，HiRDBのクライアント環境変数PDCWAITTIMEの値をチューニングしなおす必要があります。

PDCWAITTIMEのチューニング方法については，「3.4.1(2)(b)　HiRDBの環境変数グループの登録」を参照してください。

非永続版リソースアダプタの場合

指定値が大き過ぎるとメモリ使用量が増加し，小さ過ぎるとDBアクセス頻度に関係なくCPUに負荷の掛かる頻度が高くなります。

このプロパティは省略できます。

6.2.10　RMDeleteMessageImmediately = メッセージ即時削除の利用有無

　〜＜java.lang.Boolean＞((true｜false))《false》

メッセージの取り出しで，キュー内のメッセージを配信済みの状態にしないで，すぐに削除するかどうかを指定します。

非永続版リソースアダプタの場合，即時削除だけを使用できます。遅延削除は使用できないためこのプロパティは使用しません。

メッセージをすぐに削除する場合はtrueを指定します。RMSweepTimerIntervalプロパティで指定した間隔で定期的に削除する場合はfalseを指定します。

このプロパティがtrueの場合，取り出し時にメッセージを削除するため，永続キューのスループットが低下するおそれがありますが，一時的なメモリ使用量を削減できます。なお，有効期限切れのメッセージはRMSweepTimerIntervalプロパティで指定した間隔で定期的に削除されます。

次のメッセージがこのプロパティの対象になります。

アプリケーションからローカルキューに登録されたメッセージ

デッドメッセージキューに登録されたメッセージ

即時削除・遅延削除の詳細については，「2.3.4　メッセージの削除」を参照してください。

6.2.11　RMPassByReference = メッセージ送受信時の参照渡し方式の利用の有無

　〜＜java.lang.Boolean＞((true｜false))《false》

メッセージの送受信時に，参照渡し方式を利用するかどうかを設定します。

メッセージの参照渡し方式を利用する場合はtrueを指定します。利用しない場合はfalseを指定します。このプロパティがtrueの場合，アプリケーションがReliable Messagingと同じメッセージのインスタンスを参照するため，高速にメッセージを送受信できます。

ただし，このプロパティをtrueに指定するとき，アプリケーション側でメッセージ送受信後にメッセージオブジェクトに対する変更や再利用はできません。これらの動作を行った場合，メッセージオブジェクトに対するメソッドの処理結果は保証できないため，注意してください。詳細は「2.6.7(10)　参照渡し方式利用時のJMSメッセージの再利用」を参照してください。

6.2.12　RMMaxDeliveryNum = 配送回数の最大値

　〜＜数字：java.lang.Integer＞((0〜512))《10》

Reliable Messagingから受信側アプリケーションへのメッセージの配送回数の最大値を指定します。0を指定したときメッセージは無制限に再配送されます。

メッセージ配送中にQueueSession.recover()メソッドが発行されるかトランザクションがロールバックされると，このプロパティの回数内でメッセージは再配送の対象となります。

永続版リソースアダプタの場合

配送回数の最大値に達したとき，デッドメッセージキューがあればメッセージはデッドメッセージキューに移動されます。ただし，次に示すとき，メッセージは元のキューに戻されます。

デッドメッセージキューがないとき

デッドメッセージキューの最大メッセージ数を超えるとき

なお，メッセージの配送回数はDBによって永続化されないため，Reliable Messagingを再度開始したときには0に戻ります。

非永続版リソースアダプタの場合

配送回数の最大値を超えて配送されたメッセージは，デッドメッセージキューに移動されないで削除されます。

6.2.13　RMMethodTraceLevel = メソッドトレースの出力レベル

　〜＜数字：java.lang.Integer＞((1〜5))《1》

Reliable Messagingが出力するメソッドトレースの出力レベルを指定します。範囲外の値を指定した場合はデフォルト値が設定されます。

各レベルの出力情報については，「9.3.3　メソッドトレース」を参照してください。

6.2.14　RMLineTraceLevel = 回線トレースの出力レベル

　〜＜数字：java.lang.Integer＞((1〜5))《3》

Reliable Messagingが出力する回線トレースのトレースの出力レベルを指定します。範囲外の値を指定した場合はデフォルト値が設定されます。

各レベルの出力情報については，「9.3.5　回線トレース」を参照してください。

6.2.15　RMLogTraceFileNum = トレースファイルの最大面数

　〜＜数字：java.lang.Integer＞((2〜16))《2》

Reliable Messagingが出力するトレースファイル共通の出力ファイルの最大面数を指定します。範囲外の値を指定した場合はデフォルト値が設定されます。

6.2.16　RMLogTraceFileSize = トレースファイルのファイルサイズ

　〜＜数字：java.lang.Integer＞((4096〜2147483647))《2097152》（単位：バイト）

Reliable Messagingが出力するトレースファイル共通のファイル1面当たりの最大のファイルサイズを指定します。範囲外の値を指定した場合はデフォルト値が設定されます。

6.2.17　RMSHConnectFlag = 共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信用共用キューの有無

　〜＜java.lang.Boolean＞((true｜false))《false》

共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信用共用キューの有無を指定します。

共用キューを使用して複数システム間でのアプリケーション連携をする場合に自システムで受信用共用キューを使用するときはtrue，使用しないときはfalseを指定します。

Reliable Messagingが接続するDBの種別がOracleの場合にtrueを指定すると，開始処理に失敗します。

このプロパティにfalseを設定した場合，次に示す機能は使用できません。

イベント受信機能

リカバリスレッド機能

受信用共用キューに対するメッセージの登録および取り出し

受信用共用キューに対するメッセージの参照および削除

受信用共用キューからデッドメッセージキューに移動したメッセージの再登録

6.2.18　RMSHPort = 共用キューを使用して複数システム間でのアプリケーション連携をする場合のイベント受信用ポート番号

　〜＜数字：java.lang.Integer＞((1024〜65535))《20351》

共用キューを使用して複数システム間でのアプリケーション連携をする場合のイベント受信用のポート番号を指定します。

6.2.19　RMSHRecoveryTimerInterval = 共用キューを使用して複数システム間でのアプリケーション連携をする場合のリカバリスレッド監視間隔

　〜＜数字：java.lang.Integer＞((5〜300))《60》（単位：秒）

共用キューを使用して複数システム間でのアプリケーション連携をする場合に動作する，リカバリスレッドの監視間隔を指定します。リカバリスレッドについては，「2.6.4　共用キューでのメッセージ受信時の処理の流れ」を参照してください。

このプロパティの指定値が大き過ぎると未処理のメッセージが滞留することがあり，小さ過ぎるとDBアクセスが増加するので注意してください。

6.2.20　RMTRConnectFlag=キュー間転送の使用有無

　〜＜java.lang.Boolean＞((true｜false))《false》

キュー間転送を使用するかどうかを指定します。キュー間転送を使用する場合はtrueを，使用しない場合はfalseを指定します。キュー間転送を使用したメッセージの送受信を行う場合，trueを指定してください。

このプロパティをtrueに設定してHiRDBをXATransactionモードで利用する場合は，DB Connectorのステートメントプールを利用しないでください。

このプロパティにfalseを設定した場合，次に示す内容は実行できません。

キュー間転送およびキュー間転送によるメッセージの受信

転送キューへのメッセージの登録

このプロパティがtrueのときに転送キューから受信したメッセージの削除

転送キューからデッドメッセージキューに移動したメッセージの再登録

次に示すコマンドの実行（引数に転送キューを指定）

hrmmkque（キューの作成）

hrmdelque（キューの削除）

hrmlsque（キュー情報の表示）

hrmchgque（キューの属性変更）

hrmlsmsg（メッセージの表示）

hrmdelmsg（メッセージの削除）

hrmstopque（キューの抑止）

hrmstoptrs（送受信抑止）

次に示すコマンドの実行

hrmmkaddr（あて先登録）

hrmdeladdr（あて先削除）

hrmlsaddr（あて先表示）

hrmskipmsg（受信待ちメッセージのスキップ）

hrmlstrs（通信状態表示）

6.2.21　RMTRSendThreadNum=送信スレッドの起動数

　〜＜数字：java.lang.Integer＞((1〜128))《1》（単位：個）

キュー間転送で，メッセージの送信を行うために利用するスレッドの最大起動数を指定します。このプロパティを省略した場合，何も指定しなかった場合，および範囲外の値を指定した場合は，1が指定されたものとして動作します。

一つのメッセージを送信する処理を一つのスレッドで行うため，このプロパティの値を増やすことで同時に送信できるメッセージ数を増やすことができます。しかし，マシンへの負荷が増加しスループットが低下する場合があります。

6.2.22　RMTRResendInterval1Num=再送間隔1での再送回数

　〜＜数字：java.lang.Integer＞((1〜100))《6》（単位：送信回数）

キュー間転送で，再送間隔1で再送する回数を指定します。メッセージの再送間隔をこのプロパティで切り替えることができます。切り替える前の再送間隔を再送間隔1に指定し，切り替えたあとの再送間隔を再送間隔2に指定します。

このプロパティを省略した場合や，何も指定しなかった場合，範囲外の値を指定した場合は，デフォルト値を指定したものとして動作します。

6.2.23　RMTRResendInterval1=再送間隔1

　〜＜数字：java.lang.Integer＞((1〜86400))《10》（単位：秒）

キュー間転送で，転送先からの応答が返ってこないメッセージを再び送信するまでの時間を指定します。このプロパティはRMTRResendInterval1Numによって切り替える前の再送間隔です。このプロパティを省略した場合や範囲外の値を指定した場合は，デフォルト値が指定されたものとして動作します。

6.2.24　RMTRResendInterval2 = 再送間隔2

　〜＜数字：java.lang.Integer＞((1〜86400))《600》（単位：秒）

キュー間転送で，転送先からの応答が返ってこないメッセージを再び送信するまでの時間を指定します。このプロパティはRMTRResendInterval1Numによって切り替えたあとの再送間隔です。このプロパティを省略した場合や範囲外の値を指定した場合は，デフォルト値が指定されたものとして動作します。

6.2.25　RMTRResendTimerInterval = 再送タイマ監視間隔

　〜＜数字：java.lang.Integer＞((1〜3600))《10》（単位：秒）

再送タイマ監視間隔を指定します。再送タイマ監視間隔とは，あるメッセージの前回の送信時から経過した時間が，再送間隔を超えているかどうか監視を行う間隔です。

このプロパティを省略した場合や範囲外の値を指定した場合は，デフォルト値が指定されたものとして動作します。

6.2.26　RMTRPendingNotifyInterval = 滞留メッセージの監視時間

　〜＜数字：java.lang.Integer＞((1〜86400))《600》（単位：秒）

滞留メッセージを監視する時間を指定します。滞留メッセージを監視するタイミングは，メッセージ削除処理と同じです。メッセージの監視中に，このプロパティに指定した時間より長く滞留しているメッセージが存在する場合は，メッセージの滞留を通知するKFRM13011-W（メッセージログの出力レベルに関係なく出力します）が出力されます。

このプロパティを省略した場合や範囲外の値を指定した場合は，デフォルト値が指定されたものとして動作します。

6.2.27　RMTRTransferControlDir = クライアント定義ファイルが格納されているディレクトリのパス

　〜＜文字列：java.lang.String＞

キュー間転送の動作制御内容を定義する，クライアント定義ファイルが格納されているディレクトリのパスを指定します。

同じサーバ上でReliable Messagingを複数デプロイする場合は，このプロパティに，コピーしたクライアント定義ファイルが格納されているディレクトリのパスを指定してください。クライアント定義ファイルの詳細については，「3.4.13(1)　SOAP通信基盤の設定」を参照してください。

このプロパティを省略した場合や空文字を指定した場合は，デフォルトのクライアント定義ファイルのあるディレクトリのパス（%HRMDIR%¥conf）が指定されたものとして動作します。

6.2.28　RMAutoDeleteMessage = デッドメッセージキュー未使用時の無効メッセージ自動削除の有無

　〜＜java.lang.Boolean＞((true｜false))《false》

キュー間転送でデッドメッセージキューを使用しない場合，次の条件を満たすメッセージを自動的に削除するかどうかを指定します。

電文不正などによって転送できなかったメッセージ

順序保証のグループが閉鎖した時点で，対象グループに属していた滞留メッセージ

trueを指定すると1.，2.のメッセージとも自動的に削除します。falseを指定すると，1.のメッセージはキュー内に残るため，削除する場合は手作業でhrmdelmsg（メッセージの削除）コマンドを起動します。2.のメッセージは滞留メッセージとして残り，通信層のメッセージ有効期限切れになった時点で削除されます。

このプロパティの指定がない場合はfalseが指定されたものとして動作します。また，デッドメッセージキューを使用する場合，このプロパティの指定は無視されます。

自動削除を行うと，転送できなかったメッセージは削除処理のタイミングで削除されます。

自動削除を行わない場合は，メッセージの削除コマンドを手作業で実行し，転送できなかったメッセージを削除してください。転送できなかったメッセージを削除しなかったときは，転送キューに蓄積されます。転送キュー内のメッセージが格納できる最大数に達すると，キュー間転送が行えなくなります。

このプロパティは省略できます。

6.3　DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧

DB Connector for Reliable Messagingのコンフィグレーションプロパティは，リソースアダプタの属性を取得・編集するときに指定するプロパティです。プロパティを定義したら，サーバ管理コマンドを使用して，DB Connector for Reliable Messagingをインポートします。そのあと，プロパティを設定します。プロパティ定義の詳細については，「3.4.8　DB Connector for Reliable Messagingのプロパティ定義」を参照してください。

DB Connector for Reliable Messagingが提供するコンフィグレーションプロパティの一覧について，データベースへの接続方法ごとに説明します。

6.3.1　DABroker Libraryを使用してOracleまたはHiRDBに接続する場合

DBConnector_DABJ_CP_Cosminexus_RM.rar

トランザクション管理をしない場合，またはローカルトランザクションを使用する場合に使用します。

指定できるプロパティについては，表6-4を参照してください。

DBConnector_DABJ_XA_Cosminexus_RM.rar

グローバルトランザクションを使用する場合に使用します。

指定できるプロパティについては，表6-5を参照してください。

なお，DABroker Libraryで使用するAPIについては，マニュアル「アプリケーションサーバ リファレンス API編」を参照してください。

表6‒4　DBConnector_DABJ_CP_Cosminexus_RM.rarを使用する場合に指定できるプロパティ

プロパティ名（config-property-name）

データ型（config-property-type）

プロパティの値（config-property-value）

linkedResourceAdapterName

java.lang.String

連携するReliable Messagingリソースアダプタの表示名を指定します。

DBConnector_DABJ_CP_Cosminexus_RM.rarを使用する場合に指定できます。

networkProtocol

java.lang.String

DABroker Libraryとの接続種別を設定します。設定された値は，DABroker LibraryのsetNetworkProtocolメソッドに渡されます。

"lib"

description

java.lang.String

接続するデータベースに必要な接続付加情報を設定します。設定された値は，DABroker LibraryのsetDescriptionメソッドに渡されます。

HIRDBの場合

HiRDBシステムのポート番号，またはHiRDBクライアントの環境変数グループ名を指定します。

ORACLEの場合

SQL*Netの接続文字列を指定します。

DBHostName

java.lang.String

接続するHiRDBのホスト名を設定します。設定された値は，DABroker LibraryのsetDBHostNameメソッドに渡されます。

loginTimeout

java.lang.Integer

データベースへの接続試行中に，データソースが待機する最長時間（単位：秒）を設定します。デフォルト値は0です。

serverName

java.lang.String

接続するDABroker Libraryのホスト名またはIPアドレスを設定します。設定された値は，DABroker LibraryのsetServerNameメソッドに渡されます。

portNumber

java.lang.Integer

接続するDABroker Libraryのポート番号を設定します。設定された値は，DABroker LibraryのsetPortNumberメソッドに渡されます。デフォルト値は40179です。

databaseName

java.lang.String

接続するデータベースの種別を設定します。設定された値は，DABroker LibraryのsetDatabaseNameメソッドに渡されます。

HIRDB

HiRDBおよびXDM/RD E2に接続する場合に指定します。

ORACLE，ORACLE8I

Oracleに接続する場合に指定します。

DBConnector_DABJ_CP_Cosminexus_RM.rarの場合，デフォルト値はHIRDBです。

DBEnv

java.lang.String

DABroker Libraryの接続先データベース定義情報を設定します。設定された値は，DABroker LibraryのsetDBEnvメソッドに渡されます。

encodLang

java.lang.String

エンコード文字形態を設定します。設定された値は，DABroker LibraryのsetEncodLangメソッドに渡されます。

JDBC_IF_TRC

java.lang.Boolean

JDBCインタフェースメソッドトレースの取得の有無を設定します。設定された値は，DABroker LibraryのsetJDBC_IF_TRCメソッドに渡されます。

trueを指定した場合

トレースを取得します。

falseを指定した場合

トレースを取得しません。

なお，trueを指定した場合，Driverが出力するトレースは，Component ContainerからセットされるPrintWriterと，ユーザがコネクションファクトリ（javax.sql.DataSourceクラス）のsetLogWriter()メソッドで指定したPrintWriterに出力します。デフォルト値はfalseです。

SV_EVENT_TRC

java.lang.Boolean

DABroker Libraryとのイベントトレースの取得の有無を設定します。設定された値は，DABroker LibraryのsetSV_EVENT_TRCメソッドに渡されます。

trueを指定した場合

トレースを取得します。

falseを指定した場合

トレースを取得しません。

なお，trueを指定した場合，Driverが出力するトレースは，Component ContainerからセットされるPrintWriterと，ユーザがコネクションファクトリ（javax.sql.DataSourceクラス）のsetLogWriter()メソッドで指定したPrintWriterに出力します。デフォルト値はfalseです。

TRC_NO

java.lang.Integer

トレースのエントリ数を，10〜1000の範囲で設定します。設定された値は，DABroker LibraryのsetTRC_NOメソッドに渡されます。デフォルト値は500です。

uapName

java.lang.String

アプリケーション名称を設定します。設定された値は，DABroker LibraryのsetUapNameメソッドに渡されます。

bufSize

java.lang.Integer

DABroker Libraryからの受信データのバッファ長を，1〜16000の範囲（単位：キロバイト）で設定します。設定された値は，DABroker LibraryのsetBufSizeメソッドに渡されます。デフォルト値は64です。

rowSize

java.lang.Integer

DABroker LibraryがJDBCで取り扱うバッファ長を，16〜512の範囲（単位：メガバイト）で設定します。設定された値は，DABroker LibraryのsetRowSizeメソッドに渡されます。デフォルト値は16です。

OSAuthorize

java.lang.Boolean

OS認証機能を使用してデータベースに接続するかどうかを設定します。設定された値は，DABroker LibraryのsetOSAuthorizeメソッドに渡されます。

trueを指定した場合

OS認証機能を使用します。

falseを指定した場合

OS認証機能を使用しません。

デフォルト値はfalseです。

HiRDBCursorMode

java.lang.Boolean

HiRDBで検索時にカーソルがCommit，またはRollbackにわたって有効かどうかを設定します。設定された値は，DABroker LibraryのsetHiRDBCursorModeメソッドに渡されます。

trueを指定した場合

カーソルは保持されます。アプリケーションは続けてFetchできます。

falseを指定した場合

カーソルはクローズされますが，ステートメントは有効です。アプリケーションは，Prepareしないで，再度Executeできます。

デフォルト値はfalseです。

blockUpdate

java.lang.Boolean

接続データベースがHiRDBの場合，？パラメタを使用したデータベースの更新で，複数のパラメタセットを一度に処理するかどうかを設定します。設定された値は，DABroker LibraryのsetBlockUpdateメソッドに渡されます。

trueを指定した場合

複数のパラメタセットを一度に処理します。

falseを指定した場合

複数のパラメタセットを一つずつ分割して処理します。

デフォルト値はfalseです。

executeDirectMode

java.lang.Boolean

接続データベースがHiRDBの場合，Statementクラスを使用したINSERT， UPDATE， DELETEなどのデータベースの更新で，HiRDBのEXECUTE DIRECT機能を使用するかどうかを設定します。設定された値は，DABroker LibraryのsetExecuteDirectModeメソッドに渡されます。

trueを指定した場合

Execute Direct機能を使用します。

falseを指定した場合

Execute Direct機能を使用しません。

デフォルト値はfalseです。

SQLWarningIgnore

java.lang.Boolean

データベースから返される警告をConnectionクラスで保持するかどうかを設定します。設定された値は，DABroker LibraryのsetSQLWarningIgnoreメソッドに渡されます。

trueを指定した場合

警告を保持しません。

falseを指定した場合

警告を保持します。

デフォルト値はfalseです。

LONGVARBINARY_Access

java.lang.String

LONGVARBINARY（列属性BLOB，列属性BINARY）のデータベースアクセス方法を設定します。設定された値は，DABroker LibraryのsetLONGVARBINARY_Accessメソッドに渡されます。

REAL

LOCATOR

デフォルト値はREALです。

bufferPoolSize

java.lang.Integer

受信データのバッファをプールする最大数を設定します。設定された値は，DABroker LibraryのsetBufferPoolSizeメソッドに渡されます。

デフォルト値は0です。

PreparedStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのPreparedStatementのプールサイズを設定します。0〜1024の整数で指定します。デフォルト値は10です。また，PreparedStatementPoolSizeとCallableStatementPoolSizeの合計値は，1024以下に設定してください。有効範囲外の値を指定した場合は，デフォルト値が設定されます。

CallableStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのCallableStatementのプールサイズを設定します。0〜1024の整数で指定します。デフォルト値は10です。また，PreparedStatementPoolSizeとCallableStatementPoolSizeの合計値は，1024以下に設定してください。有効範囲外の値を指定した場合は，デフォルト値が設定されます。

CancelStatement

java.lang.Boolean

トランザクションタイムアウトや業務アプリケーション強制停止時に，Statementクラス，CallableStatementクラスおよびPreparedStatementクラスで実行中のSQLをキャンセルするかどうかを指定します。

trueを指定した場合

実行中のSQLをキャンセルします。

falseを指定した場合

実行中のSQLをキャンセルしません。

デフォルト値はtrueです。

Oracleに接続する場合で，データベースのサーバまたはクライアントのどちらかがWindowsプラットフォームで，専用サーバ接続をする場合，falseを設定してください。

XDM/RDに接続する場合，falseを設定してください。

DBConnector_DABJ_CP.rarを使用する場合に指定できます。

ConnectionIDUpdate

java.lang.Boolean

コネクションIDをDataSource#getConnectionメソッドごとに更新するかどうかを指定します。

trueを指定した場合

DataSource#getConnectionメソッドのたびにコネクションIDを生成します。

falseを指定した場合

DataSource#getConnectionメソッドで新規の物理コネクションを確立したときにコネクションIDを生成し，そのあとは更新しません。

デフォルト値はfalseです。

このプロパティは，接続するデータベースがOracleの場合に指定できます。

logLevel

java.lang.String

DB Connectorが出力するログ・トレースのレベルを指定します。

次の値が指定できます。

0またはERROR

10またはWARNING

20またはINFORMATION

デフォルトは，0またはERRORです。

表6‒5　DBConnector_DABJ_XA_Cosminexus_RM.rarを使用する場合に指定できるプロパティ

プロパティ名（config-property-name）

データ型（config-property-type）

プロパティの値（config-property-value）

linkedResourceAdapterName

java.lang.String

連携するReliable Messagingリソースアダプタの表示名を指定します。

DBConnector_DABJ_XA_Cosminexus_RM.rarを使用する場合に指定できます。

networkProtocol

java.lang.String

DABroker Libraryとの接続種別を設定します。設定された値は，DABroker LibraryのsetNetworkProtocolメソッドに渡されます。

"lib"

description

java.lang.String

接続するデータベースに必要な接続付加情報を設定します。設定された値は，DABroker LibraryのsetDescriptionメソッドに渡されます。

HIRDBの場合

HiRDBクライアントの環境変数グループ名を指定します。

ORACLEの場合

SQL*Netの接続文字列を指定します。

DBHostName

java.lang.String

接続するHiRDBのホスト名を設定します。設定された値は，DABroker LibraryのsetDBHostNameメソッドに渡されます。

XAOpenString

java.lang.String

XA_OPEN文字列を設定します。設定された値は，DABroker LibraryのsetXAOpenStringメソッドに渡されます。

loginTimeout

java.lang.Integer

データベースへの接続試行中に，データソースが待機する最長時間（単位：秒）を設定します。デフォルト値は0です。

serverName

java.lang.String

接続するDABroker Libraryのホスト名を設定します。設定された値は，DABroker LibraryのsetServerNameメソッドに渡されます。

portNumber

java.lang.Integer

接続するDABroker Libraryのポート番号を設定します。設定された値は，DABroker LibraryのsetPortNumberメソッドに渡されます。デフォルト値は40179です。

databaseName

java.lang.String

接続するデータベースの種別を設定します。設定された値は，DABroker LibraryのsetDatabaseNameメソッドに渡されます。

次の値が指定できます。

HIRDB

HiRDBに接続する場合に指定します。

ORACLE，ORACLE8I

Oracleに接続する場合に指定します。

DBConnector_DABJ_XA_Cosminexus_RM.rarの場合，デフォルト値はHIRDBです。

DBEnv

java.lang.String

DABroker Libraryの接続先データベース定義情報を設定します。設定された値は，DABroker LibraryのsetDBEnvメソッドに渡されます。

encodLang

java.lang.String

エンコード文字形態を設定します。設定された値は，DABroker LibraryのsetEncodLangメソッドに渡されます。

JDBC_IF_TRC

java.lang.Boolean

JDBCインタフェースメソッドトレースの取得の有無を設定します。設定された値は，DABroker LibraryのsetJDBC_IF_TRCメソッドに渡されます。

trueを指定した場合

トレースを取得します。

falseを指定した場合

トレースを取得しません。

なお，trueを指定した場合，Driverが出力するトレースは，Component ContainerからセットされるPrintWriterと，ユーザがコネクションファクトリ（javax.sql.DataSourceクラス）のsetLogWriter()メソッドで指定したPrintWriterに出力します。デフォルト値はfalseです。

SV_EVENT_TRC

java.lang.Boolean

DABroker Libraryとのイベントトレースの取得の有無を設定します。設定された値は，DABroker LibraryのsetSV_EVENT_TRCメソッドに渡されます。

trueを指定した場合

トレースを取得します。

falseを指定した場合

トレースを取得しません。

なお，trueを指定した場合，Driverが出力するトレースは，Component ContainerからセットされるPrintWriterと，ユーザがコネクションファクトリ（javax.sql.DataSourceクラス）のsetLogWriter()メソッドで指定したPrintWriterに出力します。デフォルト値はfalseです。

TRC_NO

java.lang.Integer

トレースのエントリ数を設定します。設定された値は，DABroker LibraryのsetTRC_NOメソッドに渡されます。デフォルト値は500です。

uapName

java.lang.String

アプリケーション名称を設定します。設定された値は，DABroker LibraryのsetUapNameメソッドに渡されます。

bufSize※

java.lang.Integer

DABroker Libraryからの受信データのバッファ長を，1〜16000の範囲（単位：キロバイト）で設定します。設定された値は，DABroker LibraryのsetBufSizeメソッドに渡されます。デフォルト値は64です。

rowSize

java.lang.Integer

DABroker LibraryがJDBCで取り扱うバッファ長を，16〜512の範囲（単位：メガバイト）で設定します。設定された値は，DABroker LibraryのsetRowSizeメソッドに渡されます。デフォルト値は16です。

OSAuthorize

java.lang.Boolean

OS認証機能を使用してデータベースに接続するかどうかを設定します。設定された値は，DABroker LibraryのsetOSAuthorizeメソッドに渡されます。

trueを指定した場合

OS認証機能を使用します。

falseを指定した場合

OS認証機能を使用しません。

デフォルト値はfalseです。

HiRDBCursorMode

java.lang.Boolean

HiRDBで検索時にカーソルがCommit，またはRollbackにわたって有効かどうかを設定します。設定された値は，DABroker LibraryのsetHiRDBCursorModeメソッドに渡されます。

trueを指定した場合

カーソルは保持されます。アプリケーションは続けてFetchできます。

falseを指定した場合

カーソルはクローズされますが，ステートメントは有効です。アプリケーションは，Prepareしないで，再度Executeできます。

デフォルト値はfalseです。

blockUpdate

java.lang.Boolean

接続データベースがHiRDBの場合，？パラメタを使用したデータベースの更新で，複数のパラメタセットを一度に処理するかどうかを設定します。設定された値は，DABroker LibraryのsetBlockUpdateメソッドに渡されます。

trueを指定した場合

複数のパラメタセットを一度に処理します。

falseを指定した場合

複数のパラメタセットを一つずつ分割して処理します。

デフォルト値はfalseです。

executeDirectMode

java.lang.Boolean

接続データベースがHiRDBの場合，Statementクラスを使用したINSERT， UPDATE， DELETEなどのデータベースの更新で，HiRDBのEXECUTE DIRECT機能を使用するかどうかを設定します。設定された値は，DABroker LibraryのsetExecuteDirectModeメソッドに渡されます。

trueを指定した場合

Execute Direct機能を使用します。

falseを指定した場合

Execute Direct機能を使用しません。

デフォルト値はfalseです。

SQLWarningIgnore

java.lang.Boolean

データベースから返される警告をConnectionクラスで保持するかどうかを設定します。設定された値は，DABroker LibraryのsetSQLWarningIgnoreメソッドに渡されます。

trueを指定した場合

警告を保持しません。

falseを指定した場合

警告を保持します。

デフォルト値はfalseです。

LONGVARBINARY_Access

java.lang.String

LONGVARBINARY（列属性BLOB，列属性BINARY）のデータベースアクセス方法を設定します。設定された値は，DABroker LibraryのsetLONGVARBINARY_Accessメソッドに渡されます。

REAL

LOCATOR

デフォルト値はREALです。

bufferPoolSize

java.lang.Integer

受信データのバッファをプールする最大数を設定します。設定された値は，DABroker LibraryのsetBufferPoolSizeメソッドに渡されます。

デフォルト値は0です。

XACloseString

java.lang.String

XA_CLOSE文字列を設定します。設定された値は，DABroker LibraryのsetXACloseStringメソッドに渡されます。

RMID

java.lang.Integer

リソースマネジャの識別子を，1以上の正の整数で設定します。設定された値は，DABroker LibraryのsetRMIDメソッドに渡されます。デフォルト値は1です。

XAThreadMode

java.lang.Boolean

XA使用時のスレッドモードを設定します。設定された値は，DABroker LibraryのsetXAThreadModeメソッドに渡されます。

trueを指定した場合

マルチスレッドモード

falseを指定した場合

シングルスレッドモード

デフォルト値はtrueです。

XALocalCommitMode

java.lang.Boolean

XA使用時，トランザクションが分散トランザクションでないとき，データベースのオートコミットモードを有効にするかどうかを設定します。設定された値はDABroker LibraryのsetXALocalCommitModeメソッドに渡されます。

trueを指定した場合

データベースのオートコミットを有効にします。

falseを指定した場合

データベースのオートコミットを無効にします。

デフォルト値はtrueです。

このプロパティはデフォルト値から変更しないでください。

PreparedStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのPreparedStatementのプールサイズを設定します。0〜1024の整数で指定します。デフォルト値は10です。また，PreparedStatementPoolSizeとCallableStatementPoolSizeの合計値は，1024以下に設定してください。有効範囲外の値を指定した場合は，デフォルト値が設定されます。

CallableStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのCallableStatementのプールサイズを設定します。0〜1024の整数で指定します。デフォルト値は10です。また，PreparedStatementPoolSizeとCallableStatementPoolSizeの合計値は，1024以下に設定してください。有効範囲外の値を指定した場合は，デフォルト値が設定されます。

CancelStatement

java.lang.Boolean

トランザクションタイムアウトや業務アプリケーション強制停止時に，Statementクラス，CallableStatementクラスおよびPreparedStatementクラスで実行中のSQLをキャンセルするかどうかを指定します。

trueを指定した場合

実行中のSQLをキャンセルします。

falseを指定した場合

実行中のSQLをキャンセルしません。

HiRDBに接続する場合は，falseを指定してください。

Oracleに接続する場合で，データベースのサーバまたはクライアントのどちらかがWindowsプラットフォームで，専用サーバ接続をする場合，falseを設定してください。

DBConnector_DABJ_XA.rarを使用する場合に指定できます。

ConnectionIDUpdate

java.lang.Boolean

コネクションIDをDataSource#getConnectionメソッドごとに更新するかどうかを指定します。

trueを指定した場合

DataSource#getConnectionメソッドのたびにコネクションIDを生成します。

falseを指定した場合

DataSource#getConnectionメソッドで新規の物理コネクションを確立したときにコネクションIDを生成し，そのあとは更新しません。

デフォルト値はfalseです。

このプロパティは，接続するデータベースがOracleの場合に指定できます。

logLevel

java.lang.String

DB Connectorが出力するログ・トレースのレベルを指定します。

次の値が指定できます。

0またはERROR

10またはWARNING

20またはINFORMATION

デフォルト値は，0またはERRORです。

注※

bufSizeプロパティに設定するバッファサイズを見積もるための計算式は次のとおりです。

ローカルキューまたは転送キューを使用する場合

（5000＋N＋M＋L＋S）/1024（小数点以下切り上げ）（単位：キロバイト）

N＝ユーザが設定できるJMSヘッダの設定サイズ

設定するヘッダによって次の値を加算します。

JMSReplyTo：シリアライズしたオブジェクトのサイズ

JMSCorrelationID：半角文字数＋全角文字数×3

JMSType：半角文字数＋全角文字数×3

M＝JMS定義プロパティの設定サイズ

設定するプロパティによって次の値を加算します。

JMSXGroupID：半角文字数＋全角文字数×3

JMSXGroupSeq：100

L＝l＋m

l：ユーザ定義プロパティ名のサイズ（（半角文字数＋全角文字数×3）×プロパティ数）

m：ユーザ定義プロパティ値のサイズ

プロパティの型によって次の値を加算します。

java.lang.String：（半角文字数＋全角文字数×3）×プロパティ数

java.lang.String以外：100×プロパティ数

S＝JMSメッセージのペイロード設定サイズ

メッセージのインタフェースによって次の値を加算します。

TextMessage：半角文字数＋全角文字数×3

BytesMessage：半角文字数＋全角文字数×2

ObjectMessage：シリアライズしたオブジェクトのサイズ

共用キューを使用する場合

（1000＋S）/1024（小数点以下切り上げ）（単位：キロバイト）

S＝JMSメッセージのペイロード設定サイズ

メッセージのインタフェースによって次の値を加算します。

TextMessage：半角文字数＋全角文字数×3

BytesMessage：半角文字数＋全角文字数×2

ObjectMessage：シリアライズしたオブジェクトのサイズ

HiRDBを使用する場合で，サイズの大きいメッセージを送受信するときには，連携先のDB ConnectorのbufSizeプロパティをメッセージのサイズより十分大きく設定してください。bufSizeプロパティの値が小さいと，メッセージの受信に失敗する場合があります。

6.3.2　HiRDB Type4 JDBC Driverを使用してHiRDBに接続する場合

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rar

トランザクション管理をしない場合，またはローカルトランザクションを使用する場合に使用します。

指定できるプロパティについては，表6-6を参照してください。

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rar

グローバルトランザクションを使用する場合に使用します。

指定できるプロパティについては，表6-7を参照してください。

表6‒6　DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarを使用する場合に指定できるプロパティ

プロパティ名（config-property-name）

データ型（config-property-type）

プロパティの値（config-property-value）

linkedResourceAdapterName

java.lang.String

連携するReliable Messagingリソースアダプタの表示名を指定します。

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarを使用する場合に指定できます。

description

java.lang.String

データベースへの接続に必要な接続付加情報を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetDescriptionメソッドに渡されます。

DBHostName

java.lang.String

接続するHiRDBのホスト名を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetDBHostNameメソッドに渡されます。

environmentVariables

java.lang.String

HiRDBクライアント環境変数を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetEnvironmentVariablesメソッドに渡されます。

loginTimeout

java.lang.Integer

getConnectionメソッドでConnectionオブジェクトを取得する際の，HiRDBサーバとの物理接続確立の最大待ち時間（秒）を指定します。

デフォルト値は8です。

encodeLang

java.lang.String

データ変換時の文字セット名称を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetEncodeLangメソッドに渡されます。

JDBC_IF_TRC

java.lang.Boolean

JDBCインタフェースメソッドトレースの取得の有無を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetJDBC_IF_TRACEメソッドに渡されます。

デフォルト値はfalseです。

TRC_NO

java.lang.Integer

JDBCインタフェースメソッドトレースのエントリ数を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetTRC_NOメソッドに渡されます。

デフォルト値は500です。

uapName

java.lang.String

アプリケーション名称を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetUapNameメソッドに渡されます。

LONGVARBINARY_Access

java.lang.String

JDBC SQL タイプLONGVARBINARY（HiRDBデータ型である列属性BLOB，列属性BINARY）のデータベースアクセス方法を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetLONGVARBINARY_Accessメソッドに渡されます。

デフォルト値はREALです。

SQLInNum

java.lang.Integer

実行するSQLの入力パラメタの最大数を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLInNumメソッドに渡されます。

デフォルト値は300です。

SQLOutNum

java.lang.Integer

実行するSQLの検索項目の最大数を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLOutNumメソッドに渡されます。

デフォルト値は300です。

SQLWarningLevel

java.lang.String

SQL実行時に発生した警告保持レベルを指定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLWarningLevelメソッドに渡されます。

デフォルト値はSQLWARNです。

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarを使用する場合，IGNOREは指定しないでください。指定した場合，Reliable Messagingのキューから取り出すメッセージが破損するおそれがあります。

SQLWarningIgnore

java.lang.Boolean

データベースから返される警告をConnectionクラスで保持しないかどうかの情報を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLWarningIgnoreメソッドに渡されます。

デフォルト値はfalseです。

HiRDBCursorMode

java.lang.Boolean

HiRDBがコミットを行った場合にResultSetクラスのオブジェクトを有効とするかを指定します。設定された値は，HiRDB Type4 JDBC DriverのsetHiRDBCursorModeメソッドに渡されます。

デフォルト値はfalseです。

maxBinarySize※

java.lang.Integer

JDBC SQLタイプLONGVARBINARY型データ取得時のデータサイズの上限を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetMaxBinarySizeメソッドに渡されます。DBConnector_HiRDB_Type4_CP.rarを使用する場合，デフォルト値は0です。

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarを使用する場合，デフォルト値は64000です。

DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rarを使用する場合，0は指定しないでください。

LONGVARBINARY_AccessSize

java.lang.Integer

HiRDBサーバに対して一度に要求するJDBC SQLタイプLONGVARBIANRY型データの長さを指定します。設定された値は，HiRDB Type4 JDBC DriverのsetLONGVARBINARY_AccessSizeメソッドに渡されます。

デフォルト値は0です。

PreparedStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのPreparedStatementのプールサイズを設定します。有効範囲は0〜4095です。

デフォルト値は10です。

CallableStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのCallableStatementのプールサイズを設定します。有効範囲は0〜4095です。

デフォルト値は10です。

CancelStatement

java.lang.Boolean

トランザクションタイムアウトやUAP強制停止時にステートメントキャンセルを実行するかどうかを設定します。

trueを指定した場合

実行中のSQLをキャンセルします。

falseを指定した場合

実行中のSQLをキャンセルしません。

デフォルト値はtrueです。

DBConnector_HiRDB_Type4_CP.rarを使用する場合に指定できます。

logLevel

java.lang.String

DB Connectorが出力するログトレースのレベルを指定します。

0またはERROR

10またはWARNING

20またはINFORMATION

デフォルト値は0またはERRORです。

注※

maxBinarySizeプロパティに設定するデータサイズを見積もるための計算式は，bufSizeプロパティに設定するバッファサイズを見積もるための計算式と同じです。ただし，maxBinarySizeプロパティとbufSizeプロパティでは，データサイズの単位が異なります。そのため，見積もったデータサイズを設定する際は，単位に注意してください。

データサイズを見積もるための計算式の詳細は，「6.3.1　DABroker Libraryを使用してOracleまたはHiRDBに接続する場合」の表下の注釈を参照してください。

データサイズには，0を指定しないでください。0を指定した場合，メモリ不足が発生し，J2EEサーバがダウンするおそれがあります。

HiRDBを使用する場合で，サイズの大きいメッセージを送受信するときには，連携先のDB ConnectorのmaxBinarySizeプロパティをメッセージのサイズより十分大きく設定してください。maxBinarySizeプロパティの値が小さいと，メッセージの受信に失敗する場合があります。

表6‒7　DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarを使用する場合に指定できるプロパティ

プロパティ名（config-property-name）

データ型（config-property-type）

プロパティの値（config-property-value）

linkedResourceAdapterName

java.lang.String

連携するReliable Messagingリソースアダプタの表示名を指定します。

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarを使用する場合に指定できます。

description

java.lang.String

データベースへの接続に必要な接続付加情報を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetDescriptionメソッドに渡されます。

DBHostName

java.lang.String

接続するHiRDBのホスト名を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetDBHostNameメソッドに渡されます。

environmentVariables

java.lang.String

HiRDBクライアント環境変数を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetEnvironmentVariablesメソッドに渡されます。

XAOpenString

java.lang.String

XA_OPEN文字列を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetXAOpenStringメソッドに渡されます。

loginTimeout

java.lang.Integer

getConnectionメソッドでConnectionオブジェクトを取得する際の，HiRDBサーバとの物理接続確立の最大待ち時間（秒）を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetLoginTimeoutメソッドに渡されます。

デフォルト値は8です。

encodeLang

java.lang.String

データ変換時の文字セット名称を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetEncodeLangメソッドに渡されます。

JDBC_IF_TRC

java.lang.Boolean

JDBCインタフェースメソッドトレースの取得の有無を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetJDBC_IF_TRACEメソッドに渡されます。

TRC_NO

java.lang.Integer

JDBCインタフェースメソッドトレースのエントリ数を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetTRC_NOメソッドに渡されます。

デフォルト値は500です。

uapName

java.lang.String

アプリケーション名称を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetUapNameメソッドに渡されます。

LONGVARBINARY_Access

java.lang.String

JDBC SQL タイプLONGVARBINARY（HiRDBデータ型である列属性BLOB，列属性BINARY）のデータベースアクセス方法を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetLONGVARBINARY_Accessメソッドに渡されます。

デフォルト値はREALです。

SQLInNum

java.lang.Integer

実行するSQLの入力パラメタの最大数を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLInNumメソッドに渡されます。

デフォルト値は300です。

SQLOutNum

java.lang.Integer

実行するSQLの検索項目の最大数を指定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLOutNumメソッドに渡されます。

デフォルト値は300です。

SQLWarningLevel

java.lang.String

SQL実行時に発生した警告保持レベルを指定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLWarningLevelメソッドに渡されます。

デフォルト値はSQLWARNです。

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarを使用する場合，IGNOREは指定しないでください。指定した場合，Reliable Messagingのキューから取り出すメッセージが破損するおそれがあります。

SQLWarningIgnore

java.lang.Boolean

データベースから返される警告をConnectionクラスで保持しないかどうかの情報を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetSQLWarningIgnoreメソッドに渡されます。

デフォルト値はfalseです。

HiRDBCursorMode

java.lang.Boolean

HiRDBがコミットを行った場合にResultSetクラスのオブジェクトを有効とするかを指定します。設定された値は，HiRDB Type4 JDBC DriverのsetHiRDBCursorModeメソッドに渡されます。

デフォルト値はfalseです。

maxBinarySize※

java.lang.Integer

JDBC SQLタイプLONGVARBINARY型データ取得時のデータサイズの上限を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetMaxBinarySizeメソッドに渡されます。DBConnector_HiRDB_Type4_XA.rarを使用する場合，デフォルト値は0です。

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarを使用する場合，デフォルト値は64000です。

DBConnector_HiRDB_Type4_XA_Cosminexus_RM.rarを使用する場合，0は指定しないでください。

LONGVARBINARY_AccessSize

java.lang.Integer

HiRDBサーバに対して一度に要求するJDBC SQLタイプLONGVARBIANRY型データの長さを指定します。設定された値は，HiRDB Type4 JDBC DriverのsetLONGVARBINARY_AccessSizeメソッドに渡されます。

デフォルト値は0です。

XACloseString

java.lang.String

XAクローズ文字列を設定します。設定された値は，HiRDB Type4 JDBC DriverのsetXACloseStringメソッドに渡されます。

XALocalCommitMode

java.lang.Boolean

トランザクションがグローバルトランザクションでない場合にオートコミット機能を有効にするかを設定します。設定された値はHiRDB Type4 JDBC DriverのsetXALocalCommitModeメソッドに渡されます。

デフォルト値はtrueです。

このプロパティはデフォルト値から変更しないでください。

PreparedStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのPreparedStatementのプールサイズを設定します。有効範囲は0〜4095です。

デフォルト値は10です。

CallableStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのCallableStatementのプールサイズを設定します。有効範囲は0〜4095です。

デフォルト値は10です。

CancelStatement

java.lang.Boolean

トランザクションタイムアウトやUAP強制停止時にステートメントキャンセルを実行するかどうかを設定します。

trueの場合

実行中のSQLをキャンセルします。

falseの場合

実行中のSQLをキャンセルしません。

デフォルト値はtrueです。

DBConnector_HiRDB_Type4_XA.rarを使用する場合に指定できます。

logLevel

java.lang.String

DB Connectorが出力するログトレースのレベルを指定します。

0またはERROR

10またはWARNING

20またはINFORMATION

デフォルト値は0またはERRORです。

注※

maxBinarySizeプロパティに設定するデータサイズを見積もるための計算式は，bufSizeプロパティに設定するバッファサイズを見積もるための計算式と同じです。ただし，maxBinarySizeプロパティとbufSizeプロパティでは，データサイズの単位が異なります。そのため，見積もったデータサイズを設定する際は，単位に注意してください。

データサイズを見積もるための計算式の詳細は，「6.3.1　DABroker Libraryを使用してOracleまたはHiRDBに接続する場合」の表下の注釈を参照してください。

データサイズには，0を指定しないでください。0を指定した場合，メモリ不足が発生し，J2EEサーバがダウンするおそれがあります。

HiRDBを使用する場合で，サイズの大きいメッセージを送受信するときには，連携先のDB ConnectorのmaxBinarySizeプロパティをメッセージのサイズより十分大きく設定してください。maxBinarySizeプロパティの値が小さいと，メッセージの受信に失敗する場合があります。

6.3.3　Oracle JDBC Thin Driverを使用してOracleに接続する場合

DBConnector_Oracle_CP_Cosminexus_RM.rar

トランザクション管理をしない場合，またはローカルトランザクションを使用する場合に使用します。

指定できるプロパティについては，表6-8を参照してください。

DBConnector_Oracle_XA_Cosminexus_RM.rar

グローバルトランザクションを使用する場合に使用します。

指定できるプロパティについては，表6-9を参照してください。

なお，プロパティで設定可能な値については，Oracleのマニュアルを参照してください。

表6‒8　DBConnector_Oracle_CP_Cosminexus_RM.rarを使用する場合に指定できるプロパティ

プロパティ名（config-property-name）

データ型（config-property-type）

プロパティの値（config-property-value）

linkedResourceAdapterName

java.lang.String

連携するReliable Messagingリソースアダプタの表示名を指定します。

DBConnector_Oracle_CP_Cosminexus_RM.rarを使用する場合に指定できます。

databaseName

java.lang.String

Oracleサーバ上の特定のデータベース名（SID）を指定します。設定された値は，Oracle JDBC Thin DriverのsetDatabaseNameメソッドに渡されます

serverName

java.lang.String

Oracleサーバのホスト名またはIPアドレスを指定します。設定された値は，Oracle JDBC Thin DriverのsetServerNameメソッドに渡されます。

portNumber

java.lang.Integer

Oracleのサーバが要求をリスニングするポート番号を指定します。デフォルトは1521番ポートです。設定された値は，Oracle JDBC Thin DriverのsetPortNumberメソッドに渡されます。

url

java.lang.String

Oracle JDBC Thin Driverがデータベースに接続するために必要なJDBC URLを指定します。

このプロパティに値が設定された場合，databaseName，portNumber，serverNameで指定された値は無視されます。また，ユーザがurlで指定を行う場合はJDBC URLにthinドライバを指定します。

（例）

jdbc:oracle:thin:@ServerA:1521:service1

loginTimeout

java.lang.Integer

データベースへの接続試行のタイムアウト（単位：ミリ秒）を指定します。0を指定するとタイムアウトは無限となり，接続が確立されるかエラーが発生するまでブロックされます。デフォルト値は8000です。設定された値はOracle JDBC Thin DriverのsetLoginTimeoutメソッドに渡されます。Oracle JDBC Thin Driver 9.2.0.8以降，10.1.0.5以降および10.2以降の場合は秒単位に切り上げてsetLoginTimeoutメソッドに渡されます。

PreparedStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのPreparedStatementのプールサイズを設定します。デフォルトは10です。

CallableStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのCallableStatementのプールサイズを設定します。デフォルトは10です。

CancelStatement

java.lang.Boolean

トランザクションタイムアウトや業務アプリケーション強制停止時に，Statementクラス，CallableStatementクラスおよびPreparedStatementクラスで実行中のSQLをキャンセルするかどうかを指定します。

trueを指定した場合

実行中のSQLをキャンセルします。

falseを指定した場合

実行中のSQLをキャンセルしません。

デフォルト値はtrueです。

専用サーバ接続をする場合は，falseを指定してください。

DBConnector_Oracle_CP.rarを使用する場合に，指定できます。

ConnectionIDUpdate

java.lang.Boolean

コネクションIDをDataSource#getConnectionメソッドごとに更新するかどうかを指定します。

trueを指定した場合

DataSource#getConnectionメソッドのたびにコネクションIDを生成します。

falseを指定した場合

DataSource#getConnectionメソッドで新規の物理コネクションを確立したときにコネクションIDを生成し，そのあとは更新しません。

デフォルト値はfalseです。

logLevel

java.lang.String

DB Connectorが出力するログ・トレースのレベルを指定します。

次の値が指定できます。

0またはERROR

10またはWARNING

20またはINFORMATION

デフォルトは，0またはERRORです。

表6‒9　DBConnector_Oracle_XA_Cosminexus_RM.rarを使用する場合に指定できるプロパティ

プロパティ名（config-property-name）

データ型（config-property-type）

プロパティの値（config-property-value）

linkedResourceAdapterName

java.lang.String

連携するReliable Messagingリソースアダプタの表示名を指定します。

DBConnector_Oracle_CP_Cosminexus_RM.rarを使用する場合に指定できます。

databaseName

java.lang.String

Oracleサーバ上の特定のデータベース名（SID）を指定します。設定された値は，Oracle JDBC Thin DriverのsetDatabaseNameメソッドに渡されます。

serverName

java.lang.String

Oracleサーバのホスト名またはIPアドレスを指定します。設定された値は，Oracle JDBC Thin DriverのsetServerNameメソッドに渡されます。

portNumber

java.lang.Integer

Oracleのサーバが要求をリスニングするポート番号を指定します。デフォルトは1521番ポート。設定された値は，Oracle JDBC Thin DriverのsetPortNumberメソッドに渡されます。

url

java.lang.String

Oracle JDBC Thin Driverがデータベースに接続するために必要なJDBC URLを指定します。

このプロパティに値が設定された場合，databaseName,portNumber,serverNameで指定された値は無視されます。また，ユーザがurlで指定を行う場合はJDBC URLにthinドライバを指定します。

loginTimeout

java.lang.Integer

データベースへの接続試行のタイムアウト（単位：ミリ秒）を指定します。0を指定するとタイムアウトは無限となり，接続が確立されるかエラーが発生するまでブロックされます。デフォルト値は8000です。設定された値はOracle JDBC Thin DriverのsetLoginTimeoutメソッドに渡されます。Oracle JDBC Thin Driver 9.2.0.8以降，10.1.0.5以降および10.2以降の場合は秒単位に切り上げてsetLoginTimeoutメソッドに渡されます。

sessionTimeout

java.lang.Integer

Oracleサーバでのセッションタイムアウト（トランザクションブランチがアクティブでない状態でいられる最大時間）を秒単位で指定します。J2EEサーバのトランザクションタイムアウトよりも長い時間を指定する必要があります。デフォルト値は300秒です。設定された値はOracle JDBC Thin DriverのXAResource.setTransactionTimeoutメソッドに渡されます。

PreparedStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのPreparedStatementのプールサイズを設定します。デフォルト値は10です。

CallableStatementPoolSize

java.lang.Integer

コネクションプールに割り当てられるコネクションごとのCallableStatementのプールサイズを設定します。デフォルト値は10です。

CancelStatement

java.lang.Boolean

トランザクションタイムアウトや業務アプリケーション強制停止時に，Statementクラス，CallableStatementクラスおよびPreparedStatementクラスで実行中のSQLをキャンセルするかどうかを指定します。

trueを指定した場合

実行中のSQLをキャンセルします。

falseを指定した場合

実行中のSQLをキャンセルしません。

デフォルト値はtrueです。

専用サーバ接続をする場合は，falseを指定してください。DBConnector_Oracle_XA.rarを使用する場合に指定できます。

ConnectionIDUpdate

java.lang.Boolean

コネクションIDをDataSource#getConnectionメソッドごとに更新するかどうかを指定します。

trueを指定した場合

DataSource#getConnectionメソッドのたびにコネクションIDを生成します。

falseを指定した場合

DataSource#getConnectionメソッドで新規の物理コネクションを確立したときにコネクションIDを生成し，そのあとは更新しません。

デフォルト値はfalseです。

logLevel

java.lang.String

DB Connectorが出力するログ・トレースのレベルを指定します。

次の値が指定できます。

0またはERROR

10またはWARNING

20またはINFORMATION

デフォルト値は，0またはERRORです。

7　インタフェース

Reliable Messagingのアプリケーションは，Reliable Messagingが提供するインタフェースを使用して実装します。アプリケーションの実装については，「2.6　アプリケーションからのメッセージ操作」を参照してください。

この章では，Reliable Messagingが提供するインタフェースの種類，インタフェースの種類別のクラス，メソッドの詳細およびアプリケーションの障害時に設定される障害コードについて説明します。

7.1　インタフェースの種類

7.1.1　Reliable Messagingが提供するインタフェースの種類

Reliable Messagingが提供するインタフェース用のパッケージには，次の2種類があります。

JMSインタフェース

Reliable Messagingがメッセージを送受信する際に使用するインタフェースです。永続版リソースアダプタ，非永続版リソースアダプタの両方で使用します。

JMSインタフェースの詳細については，「7.2　JMSインタフェースの一覧」，「7.3　JMSインタフェース継承図」，および「7.4　JMSインタフェースの詳細」を参照してください。

転送データ相互接続用インタフェース

BytesContainerを使用して，Reliable Messaging同士，またはReliable Messagingと他ベンダのメッセージングシステムなどとの間でメッセージを送受信する際に使用するインタフェースです。非永続版リソースアダプタでは使用できません。

転送データ相互接続用インタフェースの詳細については，「7.5　転送データ相互接続用インタフェースの一覧」，「7.6　転送データ相互接続用インタフェース継承図」，「7.7　転送データ相互接続用インタフェースの使い方」，および「7.8　転送データ相互接続用インタフェースの詳細」を参照してください。

7.1.2　非永続版リソースアダプタ使用時の注意事項

非永続版リソースアダプタの場合，永続版リソースアダプタと同様にJMSインタフェースを使用できます。ただし，転送データ相互接続用インタフェースは使用できません。

また，JMSインタフェース使用時には次の点に注意してください。

BytesContainerを使用した処理はできません。

ローカルキューに関するインタフェースだけを使用できます。そのほかの種類のキューに関するインタフェースは使用できません。

非永続版リソースアダプタの場合，DBを使用しないため，DBやDB Connectorに関係するインタフェースは使用できません。

7.2　JMSインタフェースの一覧

Reliable MessagingのJMSインタフェースは，永続版リソースアダプタ，非永続版リソースアダプタともに使用できます。

JMSインタフェースは，次に示すパッケージによって提供されます。

javax.jms

Reliable Messagingが提供するJMSインタフェースの一覧を次の表に示します。

表7‒1　JMSインタフェースの一覧

項番

インタフェース名※

機能

1

BytesMessage

設定したデータをバイトストリームで保持します。提供する機能は，ペイロードの設定と取得およびアクセスモードの変更です。

なお，Messageインタフェースが提供する機能も含みます。

2

ConnectionMetaData

JMSの基本情報を提供します。提供する基本情報は，JMS APIのバージョン，JMSプロバイダのバージョン，JMSプロバイダ名およびJMSXプロパティ名の列挙などです。

3

DeliveryMode

メッセージの永続化と非永続化を示す定数を提供します。

4

Message

BytesMessage，ObjectMessageおよびTextMessageのルートインタフェースです。提供する機能は，ヘッダの設定と取得，プロパティの設定，取得と初期化，ペイロードの初期化およびメッセージ受信の承認です。

5

ObjectMessage

設定したデータをjava.io.Serializable型で保持します。提供する機能は，ペイロードの設定と取得です。

なお，Messageインタフェースが提供する機能も含みます。

6

Queue

（Destination）

JMSプロバイダ特有のキュー名を保持します。提供する機能は，キュー名の取得です。

7

QueueBrowser

JMSクライアントがキューからメッセージを削除しないで参照するための機能を提供します。提供する機能は，現在のキューにあるメッセージ一覧の取得，メッセージセレクタの取得，QueueBrowserオブジェクトのクローズおよびキューの取得です。

8

QueueConnection

（Connection）

アプリケーションがReliable Messagingにアクセスするために使用するアプリケーションレベルのハンドルを提供します。提供する機能は，QueueSessionオブジェクトの生成，配送の開始と停止，ConnectionMetaDataオブジェクトの取得，コネクションのクローズです。

9

QueueConnectionFactory

（ConnectionFactory）

コネクションを生成する機能を提供します。

10

QueueReceiver

（MessageConsumer）

JMSクライアントがキューからメッセージを取得するための機能を提供します。提供する機能は，メッセージの受信，メッセージセレクタの取得，QueueReceiverオブジェクトのクローズおよびキューの取得です。

11

QueueSender

（MessageProducer）

JMSクライアントがあて先にメッセージを送信するための機能を提供します。提供する機能は，メッセージの送信，QueueSenderオブジェクトのクローズです。

12

QueueSession

（Session）

アプリケーションが論理的なコネクションハンドルとして利用するインタフェースです。提供する機能は，Message，BytesMessage，ObjectMessage，TextMessage，QueueSender，QueueReceiverおよびQueueBrowserオブジェクトの生成，ローカルトランザクションのコミットとロールバック，セッションのクローズならびに配送するメッセージのリカバーです。

13

TextMessage

設定したデータをjava.lang.String型で保持します。提供する機能は，ペイロードの設定と取得です。

なお，Messageインタフェースが提供する機能も含みます。

注

Oracle Corporationが提供するJMS 1.0.2bとReliable Messagingが提供するJMSインタフェースとの機能差については，「付録A　JMS仕様との差異」を参照してください。

注※

丸括弧内は継承元となる親インタフェース名です。

JMSインタフェース使用時の例外クラスは，次に示すパッケージによって提供されます。

javax.jms

JMSインタフェース使用時の例外クラスの一覧を次の表に示します。

表7‒2　JMSインタフェースの例外クラスの一覧

項番

例外クラス名

例外が発生する状況

1

IllegalStateException

メソッドが不正なタイミングや不適切なタイミングで発行された場合，またはJMSプロバイダが要求された操作に対して適切な状態にない場合

2

InvalidClientIDException

JMSクライアントがコネクションのJMSクライアント識別子をJMSプロバイダに拒否された値に設定しようとした場合

3

InvalidDestinationException

あて先がJMSプロバイダによって理解されない，つまりあて先が有効でない場合

4

InvalidSelectorException

JMSクライアントが不正な構文のメッセージセレクタをJMSプロバイダに指定した場合

5

JMSException

JMS API例外が発生した場合。すべてのJMS API例外のルートクラスであるため，特定のタイミングに該当しません。

6

JMSSecurityException

JMSクライアントが送信したユーザ名またはパスワードがJMSプロバイダに拒否された場合

7

MessageEOFException

BytesMessageインタフェースの読み取り中に予期しないストリーム終端に達した場合

8

MessageFormatException

JMSクライアントがメッセージによってサポートされていないデータタイプを使おうとした場合，またはメッセージデータを間違った型で読み取ろうとした場合

9

MessageNotReadableException

JMSクライアントが書き込み専用のメッセージを読み取ろうとした場合

10

MessageNotWriteableException

JMSクライアントが読み取り専用のメッセージに書き込もうとした場合

11

ResourceAllocationException

JMSプロバイダがメソッドによって要求されたリソースを割り当てられない場合

12

TransactionInProgressException

トランザクションが進行中であるために操作が無効である場合

13

TransactionRolledBackException

Session.commit()メソッドの発行の結果が現在のトランザクションのロールバックに帰着する場合

注意事項

Reliable Messagingを一つのJ2EEサーバに複数デプロイして，一つのアプリケーションから複数のReliable Messagingを利用する場合，一つのReliable Messaging側で作成したオブジェクトを他方のReliable Messaging側に渡すような操作はしないでください。

例えば，Reliable Messaging1で作成したメッセージをReliable Messaging2のjavax.jms.QueueSenderによって送信するなどの操作はしないでください。

7.3　JMSインタフェース継承図

Reliable Messagingが提供するJMSインタフェースおよび例外クラスには，それぞれ継承関係があります。

JMSインタフェースの継承を次の図に示します。

図7‒1　JMSインタフェースの継承

例外クラスの継承を次の図に示します。

図7‒2　例外クラスの継承

7.4　JMSインタフェースの詳細

JMSインタフェースを名前のアルファベット順に説明します。

7.4.1　BytesMessageインタフェース

BytesMessageインタフェースはバイトストリームを含むメッセージを送受信するために使用します。BytesMessageインタフェースはMessageインタフェースを継承しているため，Messageインタフェースの機能を持っています。

(1)　ペイロードの設定と取得

BytesMessageインタフェースを使用することによってペイロードを設定および取得できます。このペイロードはバイトストリームです。JMSメッセージの各要素については，「2.5.1　JMSメッセージの構成」を参照してください。

(2)　形式

public interface BytesMessage extends Message
{
  public boolean readBoolean() throws JMSException;
  public byte    readByte() throws JMSException;
  public int     readBytes(byte[] value) throws JMSException;
  public int     readBytes(byte[] value, int length)
                   throws JMSException;
  public char    readChar() throws JMSException;
  public double  readDouble() throws JMSException;
  public float   readFloat() throws JMSException;
  public int     readInt() throws JMSException;
  public long    readLong() throws JMSException;
  public short   readShort() throws JMSException;
  public int     readUnsignedByte() throws JMSException;
  public int     readUnsignedShort() throws JMSException;
  public java.lang.String
                 readUTF() throws JMSException;
  public void    reset() throws JMSException;
  public void    writeBoolean(boolean value) throws JMSException;
  public void    writeByte(byte value) throws JMSException;
  public void    writeBytes(byte[] value) throws JMSException;
  public void    writeBytes(byte[] value, int offset, int length)
                   throws JMSException;
  public void    writeChar(char value) throws JMSException;
  public void    writeDouble(double value) throws JMSException;
  public void    writeFloat(float value) throws JMSException;
  public void    writeInt(int value) throws JMSException;
  public void    writeLong(long value) throws JMSException;
  public void    writeObject(java.lang.Object value)
                   throws JMSException;
  public void    writeShort(short value) throws JMSException;
  public void    writeUTF(java.lang.String value) throws JMSException;
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　readBooleanメソッド

public boolean readBoolean() throws JMSException

バイトストリームからboolean型の値を読み取ります。

引数

ありません。

戻り値

読み取られたbooleanの値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　readByteメソッド

public byte readByte() throws JMSException

バイトストリームから符号付き8ビット値を読み取ります。

引数

ありません。

戻り値

符号付き8ビットとみなされるバイトストリームの次のバイト。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(c)　readBytesメソッド

public int readBytes(byte[] value) throws JMSException

バイトストリームからバイト配列を読み取ります。バイトストリームの長さより配列valueの長さが短い場合，配列valueの長さまでのバイトストリームを読み取ることができます。残りのバイトストリームも再度メソッドを発行することによって配列valueの長さまで読み取ることができます。バイトストリームの長さより配列valueの長さが長い場合，バイトストリームをすべて読み取ることができます。

このとき，読み取られる総バイト数を示す戻り値は，配列valueの長さよりも短くなり，バイトストリームから読み取るバイトが残っていないことを表します。バイトストリームからさらに読み取りを実行すると，-1を返します。

引数

引数名

説明

value

データの読み取り先のバッファ

戻り値

バッファに読み取られるバイトの総数。ストリームの終端に達してデータがなくなった場合は-1です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(d)　readBytesメソッド

public int readBytes(byte[] value, int length) throws JMSException

バイトストリームの一部を読み取ります。

引数

引数名

説明

value

データの読み取り先のバッファ

length

読み取るバイト数（value.length以下）

戻り値

バッファに読み取られるバイトの総数。ストリームの終端に達してデータがなくなった場合は-1です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　readCharメソッド

public char readChar() throws JMSException

バイトストリームからUnicode文字値を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の2バイトで表されるUnicode文字。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　readDoubleメソッド

public double readDouble() throws JMSException

バイトストリームからdouble値を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の8バイトをdoubleと解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(g)　readFloatメソッド

public float readFloat() throws JMSException

バイトストリームからfloat値を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の4バイトをfloatと解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(h)　readIntメソッド

public int readInt() throws JMSException

バイトストリームから符号付き32ビット整数を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の4バイトをintと解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(i)　readLongメソッド

public long readLong() throws JMSException

バイトストリームから符号付き64ビット整数を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の8バイトをlongと解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(j)　readShortメソッド

public short readShort() throws JMSException

バイトストリームから符号付き16ビット数を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の2バイトを符号付き16ビットと解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(k)　readUnsignedByteメソッド

public int readUnsignedByte() throws JMSException

バイトストリームから符号なし8ビット数を読み取ります。

引数

ありません。

戻り値

バイトストリームの次のバイトを符号なし8ビットと解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(l)　readUnsignedShortメソッド

public int readUnsignedShort() throws JMSException

バイトストリームから符号なし16ビット数を読み取ります。

引数

ありません。

戻り値

バイトストリームの次の2バイトを符号なし16ビット整数と解釈した値です。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(m)　readUTFメソッド

public java.lang.String readUTF() throws JMSException

修正UTF-8形式を使用してエンコードされた文字列をバイトストリームから読み取ります。一度の発行で読み取られる文字列は65535バイトまでです。

引数

ありません。

戻り値

バイトストリームから読み取られたUnicode文字列。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの読み取りに失敗しました。

MessageEOFException

バイトストリームの予期しない終端に達しました。

MessageNotReadableException

書き込み専用モードのペイロードから情報を読み取ろうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(n)　resetメソッド

public void reset() throws JMSException

ペイロードを書き込み専用モードから読み取り専用モードに移行してから，バイトストリームを先頭に再配置します。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージのリセットに失敗しました。

MessageFormatException

メッセージ形式不正が原因でメッセージのリセットに失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(o)　writeBooleanメソッド

public void writeBoolean(boolean value) throws JMSException

booleanをバイトストリームに1バイト値として書き込みます。

引数

引数名

説明

value

書き込まれるboolean値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(p)　writeByteメソッド

public void writeByte(byte value) throws JMSException

byteをバイトストリームに1バイト値として書き込みます。

引数

引数名

説明

value

書き込まれるbyte値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(q)　writeBytesメソッド

public void writeBytes(byte[] value) throws JMSException

バイト配列をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるバイト配列

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(r)　writeBytesメソッド

public void writeBytes(byte[] value, int offset, int length)
  throws JMSException

バイト配列の一部をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるバイト配列値

offset

バイト配列内の初期オフセット

length

書き込まれるバイト数

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(s)　writeCharメソッド

public void writeChar(char value) throws JMSException

上位バイトを先頭とする2バイト値として，char型引数をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるchar値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(t)　writeDoubleメソッド

public void writeDouble(double value) throws JMSException

Double.doubleToLongBits()メソッドを使用してdouble型引数をlongに変換し，上位バイトを先頭とする8バイトとして，long値をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるdouble値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(u)　writeFloatメソッド

public void writeFloat(float value) throws JMSException

Float.floatToIntBits()メソッドを使用してfloat型引数をintに変換し，上位バイトを先頭とする4バイトとして，int値をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるfloat値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(v)　writeIntメソッド

public void writeInt(int value) throws JMSException

上位バイトを先頭とする4バイト値として，int型引数をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるint値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(w)　writeLongメソッド

public void writeLong(long value) throws JMSException

上位バイトを先頭とする8バイト値として，long型引数をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるlong値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(x)　writeObjectメソッド

public void writeObject(java.lang.Object value) throws JMSException

オブジェクトをバイトストリームに書き込みます。引数に設定できる型はオブジェクト化されたプリミティブオブジェクト型（Integer，DoubleおよびLongなど），Stringオブジェクトおよびバイト配列だけです。

引数

引数名

説明

value

書き込まれるJavaプログラミング言語のオブジェクト（Javaオブジェクト）

戻り値

ありません。

例外

例外クラス

説明

java.lang.NullPointerException

引数の値がnullなので，ペイロードの書き込みに失敗しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageFormatException

引数の型が無効なためペイロードの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(y)　writeShortメソッド

public void writeShort(short value) throws JMSException

上位バイトを先頭とする2バイト値として，short型引数をバイトストリームに書き込みます。

引数

引数名

説明

value

書き込まれるshort値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(z)　writeUTFメソッド

public void writeUTF(java.lang.String value) throws JMSException

マシンに依存しないUTF-8エンコーディング形式を使用して，文字列をバイトストリームに書き込みます。一度の発行で書き込まれる文字列は65535バイトまでです。

引数

引数名

説明

value

書き込まれるString型の値

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの書き込みに失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.2　ConnectionMetaDataインタフェース

ConnectionMetaDataインタフェースはJMSの基本情報を提供します。

(1)　JMS基本情報の取得

次に示すJMS基本情報を取得できます。

JMS APIのメジャーバージョン番号

JMS APIのマイナーバージョン番号

JMS APIのバージョン

JMSプロバイダのメジャーバージョン番号

JMSプロバイダのマイナーバージョン番号

JMSプロバイダのバージョン

JMSプロバイダ名

JMSXプロパティ名の列挙

(2)　形式

public interface ConnectionMetaData
{
  public int      getJMSMajorVersion() throws JMSException;
  public int      getJMSMinorVersion() throws JMSException;
  public java.lang.String
                  getJMSProviderName() throws JMSException;
  public java.lang.String
                  getJMSVersion() throws JMSException;
  public java.util.Enumeration
                  getJMSXPropertyNames() throws JMSException;
  public int      getProviderMajorVersion() throws JMSException;
  public int      getProviderMinorVersion() throws JMSException;
  public java.lang.String
                  getProviderVersion() throws JMSException;
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　getJMSMajorVersionメソッド

public int getJMSMajorVersion() throws JMSException

JMS APIのメジャーバージョン番号を示す整数である1を返します。

引数

ありません。

戻り値

JMS APIのメジャーバージョン番号。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　getJMSMinorVersionメソッド

public int getJMSMinorVersion() throws JMSException

JMS APIのマイナーバージョン番号を示す整数である0を返します。

引数

ありません。

戻り値

JMSのマイナーバージョン番号。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(c)　getJMSProviderNameメソッド

public java.lang.String getJMSProviderName() throws JMSException

JMSプロバイダ名を示す文字列である"Cosminexus Reliable Messaging"を返します。

引数

ありません。

戻り値

JMSプロバイダ名。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(d)　getJMSVersionメソッド

public java.lang.String getJMSVersion() throws JMSException

JMS APIのバージョンを示す文字列である"1.0"を返します。

引数

ありません。

戻り値

JMS APIのバージョン。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　getJMSXPropertyNamesメソッド

public java.util.Enumeration getJMSXPropertyNames() throws JMSException

Reliable Messagingで使用できるJMS定義JMSXプロパティ名を示す文字列の列挙（"JMSXRcvTimestamp"，"JMSXDeliveryCount"，"JMSXGroupID"および"JMSXGroupSeq"）を返します。

引数

ありません。

戻り値

JMSXプロパティ名の列挙。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　getProviderMajorVersionメソッド

public int getProviderMajorVersion() throws JMSException

JMSプロバイダのメジャーバージョン番号を返します。この値は，Reliable Messagingのバージョンに対応します。例えば，Reliable Messaging 01-02の場合，1を返します。

引数

ありません。

戻り値

JMSプロバイダのメジャーバージョン番号。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(g)　getProviderMinorVersionメソッド

public int getProviderMinorVersion() throws JMSException

JMSプロバイダのマイナーバージョン番号を返します。この値は，Reliable Messagingのリビジョンに対応します。例えば，Reliable Messaging 01-02の場合，2を返します。

引数

ありません。

戻り値

JMSプロバイダのマイナーバージョン番号。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(h)　getProviderVersionメソッド

public java.lang.String getProviderVersion() throws JMSException

JMSプロバイダのバージョンを示す文字列を返します。この文字列は，Reliable Messagingのバージョンおよびリビジョンに対応します。ただし，限定コードは対象外です。例えば，Reliable Messaging 01-02-01の場合は，"1.2"を返します。

引数

ありません。

戻り値

JMSプロバイダのバージョン。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメタデータの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.3　DeliveryModeインタフェース

DeliveryModeインタフェースは，JMSでサポートしているメッセージの管理形態を表す定数を定義するインタフェースです。

(1)　形式

public interface DeliveryMode
{
  public static final int  NON_PERSISTENT;
  public static final int  PERSISTENT;
}

(2)　フィールド

「(1)　形式」に記載した順序で各フィールドを説明します。

(a)　NON_PERSISTENTフィールド

public static final int NON_PERSISTENT

非永続メッセージを表す定数です。メッセージの送受信で，メッセージを補助記憶装置に記録しないで処理することを意味します。その代わり，PERSISTENTと比べてメッセージ送受信のオーバヘッドが小さくなります。非永続メッセージの管理形態については，「2.5.3(2)　キュー作成時の指定値とメッセージのヘッダ」を参照してください。

(b)　PERSISTENTフィールド

public static final int PERSISTENT

永続メッセージを表す定数です。メッセージの送受信で，メッセージを補助記憶装置に記録して処理することを意味します。永続メッセージの管理形態については，「2.5.3(2)　キュー作成時の指定値とメッセージのヘッダ」を参照してください。

(3)　メソッド

ありません。

7.4.4　Messageインタフェース

Messageインタフェースはペイロードを持たないメッセージを送受信するために使用できます。Messageインタフェースは，すべてのJMSメッセージのルートインタフェースです。

JMSメッセージはヘッダとプロパティとペイロード（メッセージ本体）の3要素から構成されます。JMSメッセージ，構成要素およびアクセスモードについては，「2.5　メッセージの構成」を参照してください。

(1)　ヘッダの設定と取得

Messageインタフェースを使用することでヘッダを設定および取得できます。

(2)　プロパティの設定，取得および初期化

Messageインタフェースを使用することでプロパティを設定，取得および初期化できます。また，プロパティの値は上書きできます。プロパティの初期化にはclearProperties()メソッドを使用します。

(3)　ペイロードの初期化

clearBody()メソッドを発行してペイロードを初期化します。

(4)　メッセージ受信の承認

acknowledge()メソッドを発行して，メッセージの受信を承認します。

(5)　形式

public interface Message
{
  public static final int   DEFAULT_DELIVERY_MODE;
  public static final int   DEFAULT_PRIORITY;
  public static final long  DEFAULT_TIME_TO_LIVE;
  public void     acknowledge() throws JMSException;
  public void     clearBody() throws JMSException;
  public void     clearProperties() throws JMSException;
  public boolean  getBooleanProperty(java.lang.String name)
                    throws JMSException;
  public byte     getByteProperty(java.lang.String name)
                    throws JMSException;
  public double   getDoubleProperty(java.lang.String name)
                    throws JMSException;
  public float    getFloatProperty(java.lang.String name)
                    throws JMSException;
  public int      getIntProperty(java.lang.String name)
                    throws JMSException;
  public java.lang.String
                  getJMSCorrelationID() throws JMSException;
  public byte[]   getJMSCorrelationIDAsBytes() throws JMSException;
  public int      getJMSDeliveryMode() throws JMSException;
  public Destination
                  getJMSDestination() throws JMSException;
  public long     getJMSExpiration() throws JMSException;
  public java.lang.String
                  getJMSMessageID() throws JMSException;
  public int      getJMSPriority() throws JMSException;
  public boolean  getJMSRedelivered() throws JMSException;
  public Destination
                  getJMSReplyTo() throws JMSException;
  public long     getJMSTimestamp() throws JMSException;
  public java.lang.String
                  getJMSType() throws JMSException;
  public long     getLongProperty(java.lang.String name)
                    throws JMSException;
  public java.lang.Object
                  getObjectProperty(java.lang.String name)
                    throws JMSException;
  public java.util.Enumeration
                  getPropertyNames() throws JMSException;
  public short    getShortProperty(java.lang.String name)
                    throws JMSException;
  public java.lang.String
                  getStringProperty(java.lang.String name)
                    throws JMSException;
  public boolean  propertyExists(java.lang.String name)
                    throws JMSException;
  public void     setBooleanProperty(java.lang.String name,
                    boolean value) throws JMSException;
  public void     setByteProperty(java.lang.String name, byte value)
                    throws JMSException;
  public void     setDoubleProperty(java.lang.String name,
                    double value) throws JMSException;
  public void     setFloatProperty(java.lang.String name, float value)
                    throws JMSException;
  public void     setIntProperty(java.lang.String name, int value)
                    throws JMSException;
  public void     setJMSCorrelationID(java.lang.String correlationID)
                    throws JMSException;
  public void     setJMSCorrelationIDAsBytes(byte[] correlationID)
                    throws JMSException;
  public void     setJMSDeliveryMode(int deliveryMode)
                    throws JMSException;
  public void     setJMSDestination(Destination destination)
                    throws JMSException;
  public void     setJMSExpiration(long expiration)
                    throws JMSException;
  public void     setJMSMessageID(java.lang.String id)
                    throws JMSException;
  public void     setJMSPriority(int priority) throws JMSException;
  public void     setJMSRedelivered(boolean redelivered)
                    throws JMSException;
  public void     setJMSReplyTo(Destination replyTo)
                    throws JMSException;
  public void     setJMSTimestamp(long timestamp) throws JMSException;
  public void     setJMSType(java.lang.String type)
                    throws JMSException;
  public void     setLongProperty(java.lang.String name, long value)
                    throws JMSException;
  public void     setObjectProperty(java.lang.String name,
                    java.lang.Object value) throws JMSException;
  public void     setShortProperty(java.lang.String name, short value)
                    throws JMSException;
  public void     setStringProperty(java.lang.String name,
                    java.lang.String value) throws JMSException;
}

(6)　フィールド

「(5)　形式」に記載した順序で各フィールドを説明します。

(a)　DEFAULT_DELIVERY_MODEフィールド

public static final int DEFAULT_DELIVERY_MODE

メッセージの属性を示す値のデフォルト値を保持しています。デフォルト値はDeliveryMode.PERSISTENT（永続）です。

(b)　DEFAULT_PRIORITYフィールド

public static final int DEFAULT_PRIORITY

メッセージの優先度を示す値のデフォルト値を保持しています。デフォルト値は4です。

(c)　DEFAULT_TIME_TO_LIVEフィールド

public static final long DEFAULT_TIME_TO_LIVE

メッセージの保持時間を示す値のデフォルト値を保持しています。デフォルト値は0です。

(7)　メソッド

「(5)　形式」に記載した順序で各メソッドを説明します。

(a)　acknowledgeメソッド

public void acknowledge() throws JMSException

現在のメッセージおよび同じセッションで以前に受信し，かつ以前に承認していないすべてのメッセージに対して，メッセージの受信を承認します。メソッドが正常に終了した場合，受信側は承認したメッセージを何度も受信しないで済みます。

メソッドを発行できる条件を次に示します。条件外でメソッドを発行した場合はJMSExceptionが発生します。

メッセージを同期受信で取得しました。

メッセージは，トランザクション設定がfalseかつメッセージ承認モードがCLIENT_ACKNOWLEDGEのQueueSessionオブジェクトによって生成されました。

メッセージが関連づけられているコネクションおよびセッションがクローズされていません。

トランザクションがトランザクションマネジャによって制御されていません。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

IllegalStateException

トランザクションマネジャでのトランザクションが開始しているときに，メソッドが発行されました。

クローズされたセッションに対して，メソッドが発行されました。

JMSException

トランザクション設定がtrueのときに，メソッドが発行されました。

トランザクション設定がfalseかつメッセージ承認モードがAUTO_ACKNOWLEDGEのときに，メソッドが発行されました。

トランザクション設定がfalseかつメッセージ承認モードがDUPS_OK_ACKNOWLEDGEのときに，メソッドが発行されました。

非同期受信でメッセージを受信したときに，メソッドが発行されました。

キューブラウザで取得した閲覧用のメッセージに対して，メソッドが発行されました。

内部エラーのためにメソッドの実行に失敗し，Session.recover()メソッドが正常に終了した際と同じ状態になりました。

内部エラーのためにJMSプロバイダがメッセージの承認に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　clearBodyメソッド

public void clearBody() throws JMSException

BytesMessage，ObjectMessageおよびTextMessageオブジェクトでメソッドを発行した場合，JMSメッセージのペイロード（メッセージ本体）が初期化されます。初期化されたペイロードの値は，メッセージ生成直後のペイロードの値と同じです。Messageオブジェクトでメソッドを発行した場合は無視されます。なお，メソッドを発行してもヘッダとプロパティは初期化されません。

ペイロードが読み取り専用モードの際にメソッドを発行した場合，ペイロードが初期化されるとともにペイロードの書き込みができるようになります。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージ本体の初期化に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(c)　clearPropertiesメソッド

public void clearProperties() throws JMSException

メッセージのプロパティを初期化します。初期化されたプロパティの値はメッセージ生成直後のプロパティの値と同じです。なお，メソッドを実行してもヘッダとペイロードは初期化されません。

プロパティが読み取り専用モードの際にメソッドを発行した場合，プロパティが初期化されるとともにプロパティの読み取りと書き込みの両方ができるようになります。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがプロパティの初期化に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(d)　getBooleanPropertyメソッド

public boolean getBooleanProperty(java.lang.String name)
  throws JMSException

boolean型のプロパティの値を返します。

引数

引数名

説明

name

boolean型のプロパティの名前

戻り値

boolean型のプロパティの値です。指定されたname引数に対応するプロパティ値がない場合，falseを返します。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　getBytePropertyメソッド

public byte getByteProperty(java.lang.String name) throws JMSException

byte型のプロパティの値を返します。

引数

引数名

説明

name

byte型のプロパティの名前

戻り値

byte型のプロパティの値です。

例外

例外クラス

説明

java.lang.NumberFormatException

指定されたname引数に対応するプロパティ値がありません。

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　getDoublePropertyメソッド

public double getDoubleProperty(java.lang.String name)
  throws JMSException

double型のプロパティの値を返します。

引数

引数名

説明

name

double型のプロパティの名前

戻り値

double型のプロパティの値です。

例外

例外クラス

説明

java.lang.NumberFormatException

指定されたname引数に対応するプロパティ値がありません。

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(g)　getFloatPropertyメソッド

public float getFloatProperty(java.lang.String name)
  throws JMSException

float型のプロパティの値を返します。

引数

引数名

説明

name

float型のプロパティの名前

戻り値

float型のプロパティの値です。

例外

例外クラス

説明

java.lang.NumberFormatException

指定されたname引数に対応するプロパティ値がありません。

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(h)　getIntPropertyメソッド

public int getIntProperty(java.lang.String name) throws JMSException

int型のプロパティの値を返します。

引数

引数名

説明

name

int型のプロパティの名前

戻り値

int型のプロパティの値です。

例外

例外クラス

説明

java.lang.NumberFormatException

指定されたname引数に対応するプロパティ値がありません。

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(i)　getJMSCorrelationIDメソッド

public java.lang.String getJMSCorrelationID() throws JMSException

メッセージに設定されたJMSCorrelationIDヘッダの値をString型で取得します。JMSCorrelationIDヘッダが設定されていない場合，nullを返します。

引数

ありません。

戻り値

メッセージの相関識別子。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダが相関識別子の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(j)　getJMSCorrelationIDAsBytesメソッド

public byte[] getJMSCorrelationIDAsBytes() throws JMSException

メッセージに設定されたJMSCorrelationIDヘッダの値をbyte[]で取得します。JMSCorrelationIDヘッダが設定されていない場合，nullを返します。

注意

setJMSCorrelationIDAsBytes(byte[])実行時のJ2EEサーバで有効となるJava VMのデフォルトエンコーディングと，getJMSCorrelationIDAsBytes()実行時のJ2EEサーバで有効となるJava VMのデフォルトエンコーディングは，同じエンコーディングを使用してください。

異なるエンコーディングを使用する場合，setJMSCorrelationIDAsBytes(byte[])の引数の値と，getJMSCorrelationIDAsBytes()で取得される値は異なる場合があります。

キュー間転送を用い，異なるシステム間でJMSCorrelationIDを設定したメッセージの送受信を行う場合に注意してください。

引数

ありません。

戻り値

メッセージの相関識別子。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダが相関識別子の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(k)　getJMSDeliveryModeメソッド

public int getJMSDeliveryMode() throws JMSException

メッセージに設定されたJMSDeliveryModeヘッダの値を返します。JMSDeliveryModeヘッダが設定されていない場合，DeliveryMode.PERSISTENTを返します。

引数

ありません。

戻り値

メッセージの管理形態として，次に示すどちらかの値を返します。

DeliveryMode.NON_PERSISTENT

DeliveryMode.PERSISTENT

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの管理形態の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(l)　getJMSDestinationメソッド

public Destination getJMSDestination() throws JMSException

メッセージに設定されたJMSDestinationヘッダの値を返します。JMSDestinationヘッダが設定されていない場合，nullを返します。

引数

ありません。

戻り値

メッセージに設定されたJMSDestinationヘッダの値を返します。JMSDestinationヘッダが設定されていない場合，nullを返します。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがあて先の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(m)　getJMSExpirationメソッド

public long getJMSExpiration() throws JMSException

メッセージに設定されたJMSExpirationヘッダの値を返します。JMSExpirationヘッダが設定されていない場合，0を返します。

引数

ありません。

戻り値

メッセージの有効期間値。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージの有効期間の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(n)　getJMSMessageIDメソッド

public java.lang.String getJMSMessageID() throws JMSException

メッセージに設定されたJMSMessageIDヘッダの値を返します。JMSMessageIDヘッダが設定されていない場合，nullを返します。

引数

ありません。

戻り値

メッセージ識別子。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージ識別子の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(o)　getJMSPriorityメソッド

public int getJMSPriority() throws JMSException

メッセージに設定されたJMSPriorityヘッダの値を返します。JMSPriorityヘッダが設定されていない場合，javax.jms.Messge.DEFAULT_PRIORITYを返します。

引数

ありません。

戻り値

メッセージの優先度。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージ優先度の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(p)　getJMSRedeliveredメソッド

public boolean getJMSRedelivered() throws JMSException

メッセージに設定されたJMSRedeliveredヘッダの値を返します。JMSRedeliveredヘッダが設定されていない場合，falseを返します。

引数

ありません。

戻り値

メッセージが再配送中の場合はtrueです。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダが再配送状態の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(q)　getJMSReplyToメソッド

public Destination getJMSReplyTo() throws JMSException

メッセージに設定されたJMSReplyToヘッダの値を返します。JMSReplyToヘッダが設定されていない場合，nullを返します。

引数

ありません。

戻り値

メッセージへの応答の送信先であるDestinationオブジェクト。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがJMSReplyToヘッダの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(r)　getJMSTimestampメソッド

public long getJMSTimestamp() throws JMSException

メッセージに設定されたJMSTimestampヘッダの値を返します。JMSTimestampヘッダが設定されていない場合，0を返します。

引数

ありません。

戻り値

メッセージのタイムスタンプ。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがタイムスタンプの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(s)　getJMSTypeメソッド

public java.lang.String getJMSType() throws JMSException

メッセージに設定されたJMSTypeヘッダの値を返します。JMSTypeヘッダが設定されていない場合，nullを返します。

引数

ありません。

戻り値

メッセージ型。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージ型の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(t)　getLongPropertyメソッド

public long getLongProperty(java.lang.String name) throws JMSException

long型のプロパティの値を返します。

引数

引数名

説明

name

long型のプロパティの名前

戻り値

指定された名前のlong型のプロパティ値です。

例外

例外クラス

説明

java.lang.NumberFormatException

指定されたname引数に対応するプロパティ値がありません。

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(u)　getObjectPropertyメソッド

public java.lang.Object getObjectProperty(java.lang.String name)
  throws JMSException

Object型のプロパティの値を返します。指定された名前に対応するプロパティ値がない場合，nullを返します。

メソッドはBoolean，Byte，Short，Integer，Long，Float，DoubleおよびStringクラスの値だけを返します。

引数

引数名

説明

name

Javaオブジェクトプロパティの名前

戻り値

指定された名前のJavaオブジェクトプロパティ値のオブジェクト化形式。例えば，プロパティがintとして設定された場合はIntegerを返します。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(v)　getPropertyNamesメソッド

public java.util.Enumeration getPropertyNames() throws JMSException

すべてのプロパティの名前を返します。プロパティがない場合，nullを返します。

メソッドで取得するプロパティ名の順序は保証されません。

引数

ありません。

戻り値

プロパティ値のすべての名前についての列挙。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(w)　getShortPropertyメソッド

public short getShortProperty(java.lang.String name)
  throws JMSException

short型のプロパティの値を返します。

引数

引数名

説明

name

short型のプロパティの名前

戻り値

指定された名前のshort型のプロパティ値です。

例外

例外クラス

説明

java.lang.NumberFormatException

指定されたname引数に対応するプロパティ値がありません。

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(x)　getStringPropertyメソッド

public java.lang.String getStringProperty(java.lang.String name)
  throws JMSException

String型のプロパティの値を返します。指定された名前に対応するプロパティ値がない場合，nullを返します。

引数

引数名

説明

name

String型のプロパティの名前

戻り値

指定された名前のString型のプロパティ値。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageFormatException

メッセージ形式不正が原因でプロパティの型変換に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(y)　propertyExistsメソッド

public boolean propertyExists(java.lang.String name)
  throws JMSException

指定されたプロパティ名に対応するプロパティがあればtrueを返し，なければfalseを返します。

引数

引数名

説明

name

存在を判定するプロパティの名前

戻り値

プロパティがある場合はtrue，ない場合はfalseを返します。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

内部エラーのためにJMSプロバイダがプロパティの存在確認に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(z)　setBooleanPropertyメソッド

public void setBooleanProperty(java.lang.String name, boolean value)
  throws JMSException

boolean型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

boolean型のプロパティの名前（64文字以下）

value

設定するboolean型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(aa)　setBytePropertyメソッド

public void setByteProperty(java.lang.String name, byte value)
  throws JMSException

byte型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

byte型のプロパティの名前（64文字以下）

value

設定するbyte型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ab)　setDoublePropertyメソッド

public void setDoubleProperty(java.lang.String name, double value)
  throws JMSException

double型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

double型のプロパティの名前（64文字以下）

value

設定するdouble型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ac)　setFloatPropertyメソッド

public void setFloatProperty(java.lang.String name, float value)
  throws JMSException

float型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

float型のプロパティの名前（64文字以下）

value

設定するfloat型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ad)　setIntPropertyメソッド

public void setIntProperty(java.lang.String name, int value)
  throws JMSException

int型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

int型のプロパティの名前（64文字以下）

value

設定するint型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の取得に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ae)　setJMSCorrelationIDメソッド

public void setJMSCorrelationID(java.lang.String correlationID)
  throws JMSException

メッセージのJMSCorrelationIDヘッダをString型で設定します。

ヘッダ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

correlationID

相関識別子（512文字以下）

戻り値

ありません。

例外

例外クラス

説明

JMSException

correlationID引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダが相関識別子の設定に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(af)　setJMSCorrelationIDAsBytesメソッド

public void setJMSCorrelationIDAsBytes(byte[] correlationID)
  throws JMSException

メッセージのJMSCorrelationIDヘッダをbyte[]で設定します。

ヘッダ値は上書きできます。引数の文字数制限は半角全角を問いません。

注意

引数には，J2EEサーバで有効となるJava VMのデフォルトエンコーディングで正しくStringに変換ができるbyte[]を指定してください。正しく変換できない引数を指定した場合，JMSCorrelationIDに不正なデータが設定されます。

setJMSCorrelationIDAsBytes(byte[])実行時のJ2EEサーバで有効となるJava VMのデフォルトエンコーディングと，getJMSCorrelationIDAsBytes()実行時のJ2EEサーバで有効となるJava VMのデフォルトエンコーディングは，同じエンコーディングを使用してください。

異なるエンコーディングを使用する場合，setJMSCorrelationIDAsBytes(byte[])の引数の値と，getJMSCorrelationIDAsBytes()で取得される値は異なる場合があります。

キュー間転送を用い，異なるシステム間でJMSCorrelationIDを設定したメッセージの送受信を行う場合に注意してください。

引数

引数名

説明

correlationID

相関識別子（バイト配列）（512文字以下）

戻り値

ありません。

例外

例外クラス

説明

JMSException

correlationID引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダが相関識別子の設定に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ag)　setJMSDeliveryModeメソッド

public void setJMSDeliveryMode(int deliveryMode) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

deliveryMode

メッセージの管理形態として，次に示すどちらかの値を指定できます。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

戻り値

ありません。

例外

ありません。

(ah)　setJMSDestinationメソッド

public void setJMSDestination(Destination destination)
  throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

destination

メッセージの送信先

戻り値

ありません。

例外

ありません。

(ai)　setJMSExpirationメソッド

public void setJMSExpiration(long expiration) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

expiration

メッセージの有効期間

戻り値

ありません。

例外

ありません。

(aj)　setJMSMessageIDメソッド

public void setJMSMessageID(java.lang.String id) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

id

メッセージ識別子

戻り値

ありません。

例外

ありません。

(ak)　setJMSPriorityメソッド

public void setJMSPriority(int priority) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

priority

メッセージの優先度

戻り値

ありません。

例外

ありません。

(al)　setJMSRedeliveredメソッド

public void setJMSRedelivered(boolean redelivered) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

redelivered

メッセージが再配送中であるかどうかを示す値です。値がtrueの場合，再配送中であることを示します。

戻り値

ありません。

例外

ありません。

(am)　setJMSReplyToメソッド

public void setJMSReplyTo(Destination replyTo) throws JMSException

メッセージのJMSReplyToヘッダをDestination型で設定します。

ヘッダ値は上書きできます。

引数

引数名

説明

replyTo

メッセージへの応答の送信先

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがJMSReplyToヘッダの設定に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(an)　setJMSTimestampメソッド

public void setJMSTimestamp(long timestamp) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

timestamp

メッセージのタイムスタンプ

戻り値

ありません。

例外

ありません。

(ao)　setJMSTypeメソッド

public void setJMSType(java.lang.String type) throws JMSException

メッセージのJMSTypeヘッダをStringで設定します。

ヘッダ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

type

メッセージ型（512文字以下）

戻り値

ありません。

例外

例外クラス

説明

JMSException

type引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがメッセージ型の設定に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ap)　setLongPropertyメソッド

public void setLongProperty(java.lang.String name, long value)
  throws JMSException

long型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

long型のプロパティの名前（64文字以下）

value

設定するlong型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の設定に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(aq)　setObjectPropertyメソッド

public void setObjectProperty(java.lang.String name,
  java.lang.Object value) throws JMSException

Object型のプロパティの値を設定します。

メソッドはBoolean，Byte，Short，Integer，Long，Float，DoubleおよびStringクラスの値を受け付けます。そのほかのクラスを使用すると，JMSExceptionが発生します。

プロパティ値にはnullを指定できます。

引数の文字数制限は半角全角を問いません。

プロパティ値は上書きできます。

引数

引数名

説明

name

Javaオブジェクトプロパティの名前（64文字以下）

value

設定するJavaオブジェクトプロパティ値（String型のプロパティ値の場合は512文字以下）

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

value引数にString型のクラスを指定し，その文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の設定に失敗しました。

MessageFormatException

引数valueの形式不正が原因でプロパティの型変換に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(ar)　setShortPropertyメソッド

public void setShortProperty(java.lang.String name, short value)
  throws JMSException

short型のプロパティの値を設定します。

プロパティ値は上書きできます。引数の文字数制限は半角全角を問いません。

引数

引数名

説明

name

short型のプロパティの名前（64文字以下）

value

設定するshort型のプロパティ値

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティの設定に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(as)　setStringPropertyメソッド

public void setStringProperty(java.lang.String name,
  java.lang.String value) throws JMSException

String型のプロパティの値を設定します。

プロパティ値にはnullを指定できます。

引数の文字数制限は半角全角を問いません。

プロパティ値は上書きできます。

引数

引数名

説明

name

String型のプロパティの名前（64文字以下）

value

設定するString型のプロパティ値（512文字以下）

戻り値

ありません。

例外

例外クラス

説明

JMSException

name引数にnullが指定されました。

name引数の文字数が制限値を超えました。

value引数の文字数が制限値を超えました。

内部エラーのためにJMSプロバイダがプロパティ値の設定に失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.5　ObjectMessageインタフェース

ObjectMessageインタフェースはシリアライズできるJavaオブジェクトを含むメッセージを送受信するために使用します。ObjectMessageインタフェースはMessageインタフェースを継承しているため，Messageインタフェースの機能を持っています。

(1)　ペイロードの設定と取得

ObjectMessageインタフェースを使用することでペイロードを設定および取得できます。このペイロードはシリアライズできるJavaオブジェクトです。JMSメッセージの各要素については，「2.5.1　JMSメッセージの構成」を参照してください。

(2)　形式

public interface ObjectMessage extends Message
{
  public java.io.Serializable
               getObject() throws JMSException;
  public void  setObject(java.io.Serializable object)
                 throws JMSException;
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　getObjectメソッド

public java.io.Serializable getObject() throws JMSException

直列化できるメッセージ本体データを返します。メッセージ本体が設定されていない場合はデフォルト値であるnullを返します。

引数

ありません。

戻り値

メッセージのデータを含む直列化できるオブジェクト。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがオブジェクトの取得に失敗しました。

MessageFormatException

ペイロードの型が無効なため直列化されたオブジェクトの復元が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　setObjectメソッド

public void setObject(java.io.Serializable object) throws JMSException

メッセージのデータを含む直列化できるオブジェクトを設定します。

setObjectメソッドの内部では引数オブジェクトのコピーを生成し，そのコピーをObjectMessageオブジェクトのペイロードに設定します。そのため，そのあと引数オブジェクトを変更してもObjectMessageオブジェクトのペイロードに影響しなくなります。

注意

ユーザが定義したクラスのオブジェクトをObjectMessageオブジェクトのペイロードに設定する場合は，ユーザが定義したクラスまたはクラスが含まれるJARファイルのクラスパスを，コンテナ拡張ライブラリとしてApplication ServerのJ2EEサーバ用オプション定義ファイルに指定してください。J2EEサーバ用オプション定義ファイルについては，マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」を参照してください。

クラスパスが指定されていない状態で，ObjectMessageオブジェクトのペイロードにユーザが定義したクラスのオブジェクトを設定しようとすると，JMSExceptionが発生します。

引数

引数名

説明

object

メッセージのデータ

戻り値

ありません。

例外

例外クラス

説明

JMSException

object引数にnullが指定されました。

内部エラーのためにJMSプロバイダがオブジェクトの設定に失敗しました。

MessageFormatException

引数の型が無効なためオブジェクトの直列化が失敗しました。

MessageNotWriteableException

読み取り専用モードのプロパティに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.6　Queue（Destination）インタフェース

Queue（Destination）インタフェースは，送受信するメッセージのあて先を指定するためのJMS管理オブジェクトです。Queue（Destination）インタフェースは，メッセージのあて先となるキューをカプセル化したものです。

(1)　キュー名の取得

キュー名の取得を行います。

(2)　形式

public interface Destination
{ }

public interface Queue extends Destination
{
  public java.lang.String
               getQueueName() throws JMSException;
  public java.lang.String
               toString();
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　getQueueNameメソッド

public java.lang.String getQueueName() throws JMSException

キュー名を返します。名前に依存したJMSクライアントにはポータビリティが保証されません。

引数

ありません。

戻り値

キュー名。

例外

例外クラス

説明

JMSException

内部エラーのためにQueueオブジェクトのJMSプロバイダ実装がキュー名を返すことに失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　toStringメソッド

public java.lang.String toString()

キュー名を特定するための文字列を返します。java.lang.ObjectのtoString()メソッドをオーバライドします。

引数

ありません。

戻り値

JMSプロバイダがキューを特定する識別用の値です。

例外

ありません。

7.4.7　QueueBrowserインタフェース

QueueBrowserインタフェースは，JMSクライアントがキューからメッセージを削除しないで参照するために使用します。

(1)　現在のキューにあるメッセージ一覧の取得

現在のキューにあるメッセージの一覧を取得します。メッセージセレクタを設定してQueueBrowserオブジェクトが生成されている場合は，メッセージセレクタに応じたメッセージだけを参照できます。

(2)　メッセージセレクタの取得

QueueBrowserオブジェクトを生成する際に設定されたメッセージセレクタを取得します。メッセージセレクタについては，「2.6.2　メッセージセレクタ」を参照してください。

(3)　キューブラウザのクローズ

QueueBrowserオブジェクトをクローズできます。クローズによって，QueueBrowserオブジェクトに関連づけられたすべてのリソースを解放します。

QueueBrowserインタフェースのメソッドは，複数スレッドからの同時発行をJMSで禁止されています。ただし，close()メソッドだけは複数スレッドから同時発行してパラレルに実行できます。

(4)　キューの取得

キューブラウザを生成する際に設定されたキューを取得します。

(5)　形式

public interface QueueBrowser
{
  public void     close() throws JMSException;
  public java.util.Enumeration
                  getEnumeration() throws JMSException;
  public java.lang.String
                  getMessageSelector() throws JMSException;
  public Queue    getQueue() throws JMSException;
}

(6)　フィールド

ありません。

(7)　メソッド

「(5)　形式」に記載した順序で各メソッドを説明します。

(a)　closeメソッド

public void close() throws JMSException

キューブラウザをクローズします。キューブラウザには幾つかのリソースが割り当てられている場合があるため，リソースが不要になった場合はキューブラウザをクローズしてください。

クローズされているキューブラウザをクローズしても例外は発生しません。

このメソッドはQueueBrowserインタフェースでは唯一，複数スレッドから同時に発行できます。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがキューブラウザをクローズする処理に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　getEnumerationメソッド

public java.util.Enumeration getEnumeration() throws JMSException

現在のキューにあるメッセージの列挙を取得します。

一覧を取得したあとにメッセージを閲覧する場合，メッセージがすでに削除または消失していることがあります。

キューブラウザがclose状態の場合，Enumeration.hasMoreElements()メソッドの戻り値はfalseです。

キューブラウザがclose状態の場合，Enumeration.nextElement()メソッドを発行するとNoSuchElementExceptionが発生します。

送信用共用キューおよび転送キューにgetEnumeration()メソッドを発行した場合は空のリストを返します。

引数

ありません。

戻り値

表示用メッセージの一覧。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはキューブラウザをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダがQueueBrowserオブジェクトのメッセージ一覧の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(c)　getMessageSelectorメソッド

public java.lang.String getMessageSelector() throws JMSException

キューブラウザのメッセージセレクタ構文を返します。

引数

ありません。

戻り値

キューブラウザのメッセージセレクタ構文。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはキューブラウザをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダがQueueBrowserオブジェクトのメッセージセレクタの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(d)　getQueueメソッド

public Queue getQueue() throws JMSException

キューブラウザに関連づけられたキューを返します。

引数

ありません。

戻り値

キューブラウザのQueueオブジェクト。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはキューブラウザをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダがQueueBrowserオブジェクトに関連づけられたキューの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.8　QueueConnection（Connection）インタフェース

QueueConnectionインタフェースは，アプリケーションがReliable Messagingにアクセスするために使用するアプリケーションレベルのハンドルを提供します。

QueueConnectionオブジェクトを取得するには，QueueConnectionFactory.createQueueConnection()メソッドを使用します。

(1)　キューセッションの生成

createQueueSession()メソッドを発行することでQueueSessionオブジェクトを生成します。また，createQueueSession()メソッドのtransacted引数によってトランザクション設定を指定し，acknowledgeMode引数を指定することでメッセージ承認モードを指定できます。

各引数を指定したときのトランザクションとメッセージ送受信の関係については，「2.6.6　トランザクション制御」を参照してください。

(2)　配送の開始と停止

start()およびstop()メソッドを発行することで配送の開始と停止を制御できます。QueueConnectionオブジェクトは生成時に配送停止状態に設定されています。

(3)　コネクションメタデータの取得

Reliable Messagingの製品名やバージョン，JMS APIのバージョンを保持するConnectionMetaDataオブジェクトを取得できます。

(4)　キューコネクションのクローズ

QueueConnectionオブジェクトをクローズできます。クローズによって，QueueConnectionオブジェクトに関連づけられたすべてのセッションをクローズし，QueueConnectionオブジェクトに関連づけられたすべてのリソースを解放します。

(5)　形式

public interface Connection
{
  public void     close() throws JMSException;
  public java.lang.String
                  getClientID() throws JMSException;
  public ExceptionListener
                  getExceptionListener() throws JMSException;
  public ConnectionMetaData
                  getMetaData() throws JMSException;
  public void     setClientID(java.lang.String clientID)
                    throws JMSException;
  public void     setExceptionListener(ExceptionListener listener)
                    throws JMSException;
  public void     start() throws JMSException;
  public void     stop() throws JMSException;
}

public interface QueueConnection extends javax.jms.Connection
{
  public ConnectionConsumer
                  createConnectionConsumer(Queue queue,
                    java.lang.String messageSelector,
                    ServerSessionPool sessionPool, int maxMessages)
                    throws JMSException;
  public QueueSession
                  createQueueSession(boolean transacted,
                    int acknowledgeMode) throws JMSException;
}

(6)　フィールド

ありません。

(7)　メソッド

「(5)　形式」に記載した順序で各メソッドを説明します。

(a)　closeメソッド

public void close() throws JMSException

コネクションをクローズします。メソッドを発行すると，コネクションに関連づけられているすべてのセッションがクローズされます。コネクションに代わってJavaVM外部リソースが割り当てられているので，これらのリソースが不要になった場合はコネクションをクローズしてください。メソッドを発行すると次に示すとおり動作します。

メッセージ処理が適切な方法で終了されるまで，メソッドは復帰しません。

コネクションに関連づけられているすべてのセッションのトランザクションはロールバックされます。

コネクションに関連づけられているすべてのセッションがクローズします。

コネクションに関連づけられているすべてのセッションでのすべての未承認メッセージは，QueueSession.recover()メソッドが正常終了した場合と同じ状態になります。

クローズされているコネクションをクローズしても例外は発生しません。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがコネクションのクローズに失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　getClientIDメソッド

public java.lang.String getClientID() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，nullを返します。

引数

ありません。

戻り値

一意のJMSクライアント識別子。

例外

ありません。

(c)　getExceptionListenerメソッド

public ExceptionListener getExceptionListener() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，nullを返します。

引数

ありません。

戻り値

例外リスナ。

例外

ありません。

(d)　getMetaDataメソッド

public ConnectionMetaData getMetaData() throws JMSException

コネクションのメタデータを返します。

引数

ありません。

戻り値

コネクションメタデータ。

例外

例外クラス

説明

JMSException

コネクションがクローズしている状態で，メソッドを発行しました。

内部エラーのためにJMSプロバイダがコネクション用のメタデータ取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　setClientIDメソッド

public void setClientID(java.lang.String clientID) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

java.lang.String

一意のJMSクライアント識別子

戻り値

ありません。

例外

ありません。

(f)　setExceptionListenerメソッド

public void setExceptionListener(ExceptionListener listener)
  throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

listener

例外リスナ

戻り値

ありません。

例外

ありません。

(g)　startメソッド

public void start() throws JMSException

コネクションを開始することによって，コネクションに関連づけられているすべてのセッションで，メッセージの配送を開始（または再度開始）します。stop()メソッド発行後や生成後のコネクションは配送が禁止された状態であり，start()メソッドを発行するまでコネクションでは配送が開始されません。開始しているコネクションに対するstart()メソッドの発行は無視されます。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

コネクションがクローズしている状態で，メソッドを発行しました。

内部エラーのためにJMSプロバイダがメッセージ配送の開始に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(h)　stopメソッド

public void stop() throws JMSException

コネクションでのメッセージの配送を一時的に停止します。コネクションを停止すると，コネクションに関連づけられているすべてのセッションで配送が禁止されます。停止しているコネクションに対するstop()メソッドの発行は無視されます。

メッセージの配送が停止するまで，stop()メソッドの発行は復帰しません。これは，コネクションが再度開始されるまで，receive()メソッドの復帰を待つすべてのスレッドがメッセージを保持して復帰しないことを意味します。停止したコネクションのQueueReceiver.receive()メソッドのタイマは進行し続けるため，コネクション停止中にreceive()メソッドの処理がタイムアウトすることがあります。

なお，コネクションが停止している間もメッセージは送信できます。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

コネクションがクローズしている状態で，メソッドを発行しました。

内部エラーのためにJMSプロバイダがメッセージ配送の停止に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(i)　createConnectionConsumerメソッド

public ConnectionConsumer createConnectionConsumer(Queue queue,
  java.lang.String messageSelector, ServerSessionPool sessionPool,
  int maxMessages) throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，JMSExceptionが発生します。

引数

引数名

説明

queue

アクセス対象のキュー

messageSelector

メッセージセレクタ構文に一致するプロパティを保持するメッセージだけが配送されます。

sessionPool

接続コンシューマに関連づけるサーバセッションプール

maxMessages

一度にサーバセッションに割り当てできる最大メッセージ数

戻り値

コネクションコンシューマ。

例外

例外クラス

説明

JMSException

メソッドが未サポートであることを示します。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(j)　createQueueSessionメソッド

public QueueSession createQueueSession(boolean transacted,
  int acknowledgeMode) throws JMSException

QueueSessionオブジェクトを生成します。

引数

引数名

説明

transacted

トランザクション設定を指定する引数です。セッションがトランザクション処理されるかどうかを示します。有効な値を次に示します。

true：トランザクション管理されます。

false：トランザクション管理されません。

acknowledgeMode

メッセージ承認モードを指定する引数です。JMSクライアントが受信するメッセージをどのように承認するかを示します。transacted引数がtrueの場合は無視されます。有効な値を次に示します。

Session.AUTO_ACKNOWLEDGE

Session.DUPS_OK_ACKNOWLEDGE

Session.CLIENT_ACKNOWLEDGE

戻り値

新しく作成されたキューセッション。

例外

例外クラス

説明

JMSException

コネクションがクローズしている状態で，メソッドを発行しました。

内部エラーまたはトランザクションおよびメッセージ承認モードのサポートが不足しているために，QueueConnectionオブジェクトがセッションの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.9　QueueConnectionFactory（ConnectionFactory）インタフェース

QueueConnectionFactory（ConnectionFactory）インタフェースは，QueueConnectionオブジェクトを生成するためのファクトリです。JNDIに登録されているQueueConnectionFactoryのJNDI登録名をアプリケーションがlookupすることによってQueueConnectionFactoryオブジェクトを取得します。

(1)　キューコネクションの生成

createQueueConnection()メソッドを発行することによってQueueConnectionオブジェクトを生成します。

(2)　形式

public interface ConnectionFactory
{ }

public interface QueueConnectionFactory
  extends ConnectionFactory
{
  public QueueConnection
                  createQueueConnection() throws JMSException;
  public QueueConnection
                  createQueueConnection(java.lang.String userName,
                    java.lang.String password) throws JMSException;
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　createQueueConnectionメソッド

public QueueConnection createQueueConnection()
  throws JMSException

キューコネクションを作成します。QueueConnection.start()メソッドが明示的に発行されるまで，メッセージは配送されません。

引数

ありません。

戻り値

新規に作成されたキューコネクション。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがキューコネクションの作成に失敗しました。

JMSSecurityException

無効なユーザ名またはパスワードが指定されたために，JMSクライアント認証が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　createQueueConnectionメソッド

public QueueConnection createQueueConnection(
  java.lang.String userName, java.lang.String password)
  throws JMSException

デフォルトのユーザ識別情報を使用してキューコネクションを作成します。QueueConnection.start()メソッドが明示的に発行されるまで，メッセージは配送されません。

引数

引数名

説明

userName

呼び出し側のユーザ名

password

呼び出し側のパスワード

戻り値

新規に作成されたキューコネクション。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがキューコネクションの作成に失敗しました。

JMSSecurityException

無効なユーザ名またはパスワードが指定されたために，JMSクライアント認証が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.10　QueueReceiver（MessageConsumer）インタフェース

QueueReceiver（MessageConsumer）インタフェースは，JMSクライアントがキューからメッセージを受信するために使用します。

(1)　メッセージの受信

メッセージを受信できます。メッセージセレクタを設定してQueueReceiverオブジェクトが生成されている場合は，メッセージセレクタに応じたメッセージだけを受信できます。

また，メッセージの受信処理には，次に示す種類があります。

通常のメッセージ受信処理

次メッセージがすぐに利用できるならそのメッセージを受信する処理

タイムアウト間隔内に到着する次メッセージを受信する処理

(2)　メッセージセレクタの取得

QueueReceiverオブジェクトを生成する際に設定されたメッセージセレクタを取得します。メッセージセレクタについては，「2.6.2　メッセージセレクタ」を参照してください。

(3)　キューレシーバのクローズ

QueueReceiverオブジェクトをクローズできます。クローズによって，QueueReceiverオブジェクトに関連づけられたすべてのリソースを解放します。QueueReceiver（MessageConsumer）インタフェースのメソッドは，複数スレッドからの同時発行をJMSで禁止されています。ただし，close()メソッドだけは複数スレッドから同時発行してパラレルに実行できます。

(4)　キューの取得

QueueReceiverオブジェクトを生成する際に設定されたキューを取得します。

(5)　形式

public interface MessageConsumer
{
  public void     close() throws JMSException;
  public MessageListener
                  getMessageListener() throws JMSException;
  public java.lang.String
                  getMessageSelector() throws JMSException;
  public Message  receive() throws JMSException;
  public Message  receive(long timeout) throws JMSException;
  public Message  receiveNoWait() throws JMSException;
  public void     setMessageListener(MessageListener listener)
                    throws JMSException;
}

public interface QueueReceiver extends MessageConsumer
{
  public Queue    getQueue() throws JMSException;
}

(6)　フィールド

ありません。

(7)　メソッド

「(5)　形式」に記載した順序で各メソッドを説明します。

(a)　closeメソッド

public void close() throws JMSException

メッセージコンシューマをクローズします。メッセージコンシューマには幾つかのリソースが割り当てられている場合があるため，リソースが不要になった場合はメッセージコンシューマをクローズしてください。

クローズされているメッセージコンシューマをクローズしても例外は発生しません。

このメソッドはMessageConsumerインタフェースでは唯一，複数スレッドから同時に発行できます。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージコンシューマをクローズする処理に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　getMessageListenerメソッド

public MessageListener getMessageListener() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，nullを返します。

引数

ありません。

戻り値

メッセージコンシューマのリスナまたはnull（リスナが設定されていない場合）。

例外

ありません。

(c)　getMessageSelectorメソッド

public java.lang.String getMessageSelector() throws JMSException

メッセージコンシューマのメッセージセレクタ構文を返します。

引数

ありません。

戻り値

メッセージコンシューマのメッセージセレクタ。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダがメッセージセレクタの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(d)　receiveメソッド

public Message receive() throws JMSException

メッセージコンシューマ用に生成された次のメッセージを受信します。

メソッドの発行時に，メッセージコンシューマの生成元であるコネクションがstop状態の場合はnullを返します。メソッドの実行中にコネクションがstop状態になった場合は受信待ち状態でメソッドの処理を続行します。

引数

ありません。

戻り値

メッセージコンシューマ用に生成される次のメッセージ，またはnull（メッセージコンシューマが同時にクローズされる場合）。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダが次のメッセージの受信に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　receiveメソッド

public Message receive(long timeout) throws JMSException

指定されたタイムアウト間隔内に到着する次のメッセージを受信します。メッセージが到着するか，タイムアウトになるか，またはメッセージコンシューマがクローズされる場合，このメソッドは終了します。timeout引数に0を指定するとタイムアウトになりません。

メッセージの発行時にメッセージコンシューマの生成元のコネクションがstop状態の場合はnullを返します。メソッドの実行中にコネクションがstop状態になった場合は受信を一時的に中断した状態でタイムアウトするまでメソッドの処理を続行します。

なお，receive()発行時に該当キュー内にメッセージがなかった場合は，その後1秒ごとのポーリングによってキュー内のメッセージの有無をチェックします。

引数

引数名

説明

timeout

タイムアウト値（ミリ秒）

戻り値

メッセージコンシューマ用に生成される次のメッセージ，またはnull（タイムアウトになるか，メッセージコンシューマが同時にクローズされる場合）。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダが次のメッセージの受信に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　receiveNoWaitメソッド

public Message receiveNoWait() throws JMSException

次のメッセージがすぐに利用できる場合，そのメッセージを受信します。

メッセージの発行時にメッセージコンシューマの生成元のコネクションがstop状態の場合はnullを返します。

引数

ありません。

戻り値

メッセージコンシューマ用に生成された次のメッセージ，またはnull（受信できる次のメッセージがない場合）。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダが次のメッセージの受信に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(g)　setMessageListenerメソッド

public void setMessageListener(MessageListener listener)
  throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

listener

メッセージ配送先のリスナ

戻り値

ありません。

例外

ありません。

(h)　getQueueメソッド

public Queue getQueue() throws JMSException

キューレシーバに関連したQueueオブジェクトを返します。

引数

ありません。

戻り値

レシーバのQueueオブジェクト。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージコンシューマをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダがQueueReceiverオブジェクトに関連づけられたキューの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.11　QueueSender（MessageProducer）インタフェース

QueueSender（MessageProducer）インタフェースは，JMSクライアントがあて先にメッセージを送信するために使用します。

(1)　メッセージの送信

指定したあて先にメッセージを送信できます。send()メソッドの実行中に，JMSクライアント内の他スレッドがメッセージを変更してはいけません。メッセージが変更された場合のsend()メソッドの結果は保証されません。JMSPriorityヘッダの設定は，メッセージの送信処理の一部として実行されます。

(2)　キューセンダのクローズ

QueueSenderオブジェクトをクローズできます。クローズによって，QueueSenderオブジェクトに関連づけられたすべてのリソースを解放します。QueueSender（MessageProducer）インタフェースのメソッドは，複数スレッドからの同時呼び出しをJMSで禁止されています。ただし，close()メソッドだけは，複数スレッドからの同時発行に対してパラレルに実行できます。

(3)　形式

public interface MessageProducer
{
  public void     close() throws JMSException;
  public int      getDeliveryMode() throws JMSException;
  public boolean  getDisableMessageID() throws JMSException;
  public boolean  getDisableMessageTimestamp() throws JMSException;
  public int      getPriority() throws JMSException;
  public long     getTimeToLive() throws JMSException;
  public void     setDeliveryMode(int deliveryMode)
                    throws JMSException;
  public void     setDisableMessageID(boolean value)
                    throws JMSException;
  public void     setDisableMessageTimestamp(boolean value)
                    throws JMSException;
  public void     setPriority(int defaultPriority)
                    throws JMSException;
  public void     setTimeToLive(long timeToLive) throws JMSException;
}

public interface QueueSender extends MessageProducer
{
  public Queue    getQueue() throws JMSException;
  public void     send(Message message) throws JMSException;
  public void     send(Message message, int deliveryMode, int priority,
                    long timeToLive) throws JMSException;
  public void     send(Queue queue, Message message)
                    throws JMSException;
  public void     send(Queue queue, Message message, int deliveryMode,
                   int priority, long timeToLive) throws JMSException;
}

(4)　フィールド

ありません。

(5)　メソッド

「(3)　形式」に記載した順序で各メソッドを説明します。

(a)　closeメソッド

public void close() throws JMSException

メッセージプロデューサをクローズします。メッセージプロデューサには幾つかのリソースが割り当てられている場合があるため，リソースが不要になった場合はメッセージプロデューサをクローズしてください。

クローズされているメッセージプロデューサをクローズしても例外は発生しません。

このメソッドはMessageProducerインタフェースでは唯一，複数スレッドから同時に発行できます。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがメッセージプロデューサをクローズする処理に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　getDeliveryModeメソッド

public int getDeliveryMode() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，0を返します。

引数

ありません。

戻り値

メッセージプロデューサ用のメッセージ管理形態。次に示すどちらかの値を返します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

例外

ありません。

(c)　getDisableMessageIDメソッド

public boolean getDisableMessageID() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，falseを返します。

引数

ありません。

戻り値

メッセージ識別子が無効かどうかを示す値です。

例外

ありません。

(d)　getDisableMessageTimestampメソッド

public boolean getDisableMessageTimestamp() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，falseを返します。

引数

ありません。

戻り値

メッセージのタイムスタンプが無効かどうかを示す値です。次に示すどちらかを返します。

true：メッセージ識別子は使用できません。

false：メッセージ識別子は使用できます。

例外

ありません。

(e)　getPriorityメソッド

public int getPriority() throws JMSException

メッセージプロデューサに指定された優先度を返します。なお，この値はメッセージに設定されたJMSPriorityヘッダの値と同じです。

引数

ありません。

戻り値

メッセージプロデューサ用のメッセージ優先度。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダが優先度の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　getTimeToLiveメソッド

public long getTimeToLive() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，0を返します。

引数

ありません。

戻り値

メッセージの有効期間（ミリ秒単位）。ゼロは無制限を示します。

例外

ありません。

(g)　setDeliveryModeメソッド

public void setDeliveryMode(int deliveryMode) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

deliveryMode

メッセージプロデューサのメッセージの管理形態。次に示すどちらかの値を指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

戻り値

ありません。

例外

ありません。

(h)　setDisableMessageIDメソッド

public void setDisableMessageID(boolean value) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

value

メッセージ識別子が無効かどうかを示す値

戻り値

ありません。

例外

ありません。

(i)　setDisableMessageTimestampメソッド

public void setDisableMessageTimestamp(boolean value)
  throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

value

メッセージ識別子が無効かどうかを示す値

戻り値

ありません。

例外

ありません。

(j)　setPriorityメソッド

public void setPriority(int defaultPriority) throws JMSException

プロデューサのデフォルトの優先度を指定します。0（最低）〜9（最高）の範囲の値を指定します。デフォルト値はjavax.jms.Message.DEFAULT_PRIORITYです。範囲以外の値を指定した場合，JMSExceptionが発生します。

引数

引数名

説明

defaultPriority

メッセージプロデューサ用のメッセージ優先度。0〜9の範囲で値を指定します。

戻り値

ありません。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダが優先度の設定に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(k)　setTimeToLiveメソッド

public void setTimeToLive(long timeToLive) throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

timeToLive

メッセージの有効期間（ミリ秒単位）。ゼロは無制限を示します。

戻り値

ありません。

例外

ありません。

(l)　getQueueメソッド

public Queue getQueue() throws JMSException

キューセンダに関連づけられたキューを返します。

引数

ありません。

戻り値

送信側のキュー。

例外

例外クラス

説明

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

内部エラーのためにJMSプロバイダがQueueSenderオブジェクトに関連づけられたキューの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(m)　sendメソッド

public void send(Message message) throws JMSException

メッセージをキューに送信します。キューセンダで設定した優先度が使用されます。

送信メソッドの実行時にメッセージを変更した場合，送信の結果は保証されません。

引数

引数名

説明

message

送信するメッセージ

戻り値

ありません。

例外

例外クラス

説明

InvalidDestinationException

JMSクライアントがメソッドを使用する際，キューセンダに無効なキューを指定しました。

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

message引数にnullが指定されました。

内部エラーのためにJMSプロバイダがメッセージの送信に失敗しました。

MessageFormatException

無効なメッセージが指定されました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(n)　sendメソッド

public void send(Message message, int deliveryMode, int priority,
  long timeToLive) throws JMSException

メッセージをキューに送信します。

送信メソッドの実行時にメッセージを変更した場合，送信の結果は保証されません。

このメソッドを発行した場合，deliveryMode引数とtimeToLive引数を無視して実行します。

引数

引数名

説明

message

送信するメッセージ

deliveryMode

使用するメッセージの管理形態。次に示すどちらかの値を指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

priority

メッセージの優先度。0（最低）〜9（最高）の範囲で値を指定します。

timeToLive

メッセージの有効期間（ミリ秒）

戻り値

ありません。

例外

例外クラス

説明

InvalidDestinationException

JMSクライアントがメソッドを使用する際，キューセンダに無効なキューを指定しました。

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

message引数にnullが指定されました。

内部エラーのためにJMSプロバイダがメッセージの送信に失敗しました。

MessageFormatException

無効なメッセージが指定されました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(o)　sendメソッド

public void send(Queue queue, Message message) throws JMSException

メッセージをキューに送信します。キューセンダで設定した優先度が使用されます。

queue引数にnullが指定された場合，Session.createSender()メソッドのqueue引数に指定されたキューにメッセージを送信します。

送信メソッドの実行時にメッセージを変更した場合，送信の結果は保証されません。

引数

引数名

説明

queue

メッセージのあて先キュー

message

送信するメッセージ

戻り値

ありません。

例外

例外クラス

説明

InvalidDestinationException

JMSクライアントがメソッドを使用する際，キューセンダに無効なキューを指定しました。

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

message引数にnullが指定されました。

内部エラーのためにJMSプロバイダがメッセージの送信に失敗しました。

MessageFormatException

無効なメッセージが指定されました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(p)　sendメソッド

public void send(Queue queue, Message message, int deliveryMode,
  int priority, long timeToLive) throws JMSException

メッセージをキューに送信します。

queue引数にnullが指定された場合，Session.createSender()メソッドのqueue引数に指定されたキューにメッセージを送信します。

送信メソッドの実行時にメッセージを変更した場合，送信の結果は保証されません。

このメソッドを発行した場合，deliveryMode引数とtimeToLive引数を無視して実行します。

引数

引数名

説明

queue

メッセージのあて先キュー

message

送信するメッセージ

deliveryMode

使用するメッセージの管理形態。次に示すどちらかの値を指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

priority

メッセージの優先度。0（最低）〜9（最高）の範囲で値を指定します。

timeToLive

メッセージの有効期間（ミリ秒）

戻り値

ありません。

例外

例外クラス

説明

InvalidDestinationException

JMSクライアントがメソッドを使用する際，キューセンダに無効なキューを指定しました。

JMSException

セッション，コネクションまたはメッセージプロデューサをクローズしている状態でメソッドを発行しました。

message引数にnullが指定されました。

priority引数に0〜9の範囲外の値が指定されました。

内部エラーのためにJMSプロバイダがメッセージの送信に失敗しました。

MessageFormatException

無効なメッセージが指定されました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.12　QueueSession（Session）インタフェース

QueueSession（Session）インタフェースはアプリケーションが使用する論理的なコネクションハンドルです。

(1)　メッセージオブジェクトの生成

メッセージオブジェクト（Message，BytesMessage，ObjectMessageまたはTextMessageオブジェクト）を生成します。

(2)　キューセンダの生成

QueueSenderオブジェクトを生成します。QueueSenderオブジェクトを生成する際，メッセージのあて先をcreateSender()メソッドの引数に指定します。

(3)　キューレシーバの生成

QueueReceiverオブジェクトを生成します。QueueReceiverオブジェクトを生成する際，メッセージセレクタを設定できます。

(4)　キューブラウザの生成

QueueBrowserオブジェクトを生成します。QueueBrowserオブジェクトを生成する際，メッセージセレクタを設定できます。

(5)　ローカルトランザクションのコミットとロールバック

キューセンダとキューレシーバにわたるローカルトランザクションの開始，コミットおよびロールバックを実行します。ローカルトランザクションについては，「2.6.6(1)　ローカルトランザクションの利用」を参照してください。

(6)　キューセッションのクローズ

QueueSessionオブジェクトをクローズできます。クローズによって，QueueSessionオブジェクトに関連づけられたすべてのQueueSender，QueueReceiverおよびQueueBrowserオブジェクトをクローズし，QueueSessionオブジェクトに関連づけられたすべてのリソースを解放します。

QueueSession（Session）インタフェースのメソッドは，複数スレッドからの同時発行をJMSで禁止されています。ただし，close()メソッドだけは複数スレッドから同時発行してパラレルに実行できます。また，クローズされたQueueSessionオブジェクトに関連するインタフェースのメソッドを実行するとIllegalStateExceptionが発生しますが，close()メソッドでは発生しません。

(7)　配送メッセージのリカバー

一度配送されたメッセージを再び配送できるようにします。recover()メソッドの動作については，「2.6.6(4)　トランザクションとメッセージ受信」を参照してください。

(8)　形式

public interface Session extends java.lang.Runnable
{
  public static final int  AUTO_ACKNOWLEDGE;
  public static final int  CLIENT_ACKNOWLEDGE;
  public static final int  DUPS_OK_ACKNOWLEDGE;
  public void     close() throws JMSException;
  public void     commit() throws JMSException;
  public BytesMessage
                  createBytesMessage() throws JMSException;
  public MapMessage
                  createMapMessage() throws JMSException;
  public Message  createMessage() throws JMSException;
  public ObjectMessage
                  createObjectMessage() throws JMSException;
  public ObjectMessage
                  createObjectMessage(java.io.Serializable object)
                    throws JMSException;
  public StreamMessage
                  createStreamMessage() throws JMSException;
  public TextMessage
                  createTextMessage() throws JMSException;
  public TextMessage
                  createTextMessage(java.lang.String text)
                    throws JMSException;
  public MessageListener
                  getMessageListener() throws JMSException;
  public boolean  getTransacted() throws JMSException;
  public void     recover() throws JMSException;
  public void     rollback() throws JMSException;
  public void     run();
  public void     setMessageListener(MessageListener listener)
                    throws JMSException;
}

public interface QueueSession extends Session
{
  public QueueBrowser
                  createBrowser(Queue queue) throws JMSException;
  public QueueBrowser
                  createBrowser(Queue queue,
                    java.lang.String messageSelector)
                    throws JMSException;
  public Queue    createQueue(java.lang.String queueName)
                    throws JMSException;
  public QueueReceiver
                  createReceiver(Queue queue) throws JMSException;
  public QueueReceiver
                  createReceiver(Queue queue,
                    java.lang.String messageSelector)
                    throws JMSException;
  public QueueSender
                  createSender(Queue queue) throws JMSException;
  public TemporaryQueue
                  createTemporaryQueue() throws JMSException;
}

(9)　フィールド

「(8)　形式」に記載した順序で各フィールドを説明します。

(a)　AUTO_ACKNOWLEDGEフィールド

public static final int AUTO_ACKNOWLEDGE

このメッセージ承認モードでは，次に示す場合にセッションがJMSクライアントのメッセージ受信を自動的に確認応答します。

セッションがreceive()メソッドの発行からの復帰に成功した場合

メッセージを処理するためにセッションが発行したメッセージリスナが復帰に成功した場合

(b)　CLIENT_ACKNOWLEDGEフィールド

public static final int CLIENT_ACKNOWLEDGE

このメッセージ承認モードでは，JMSクライアントがメッセージのacknowledge()メソッドを発行して処理済みのメッセージを確認応答します。

(c)　DUPS_OK_ACKNOWLEDGEフィールド

public static final int DUPS_OK_ACKNOWLEDGE

このメッセージ承認モードはAUTO_ACKNOWLEDGEと同じ動作です。

(10)　メソッド

「(8)　形式」に記載した順序で各メソッドを説明します。

(a)　closeメソッド

public void close() throws JMSException

セッションをクローズします。セッションには幾つかのリソースが割り当てられている場合があるため，リソースが不要になった場合はセッションをクローズしてください。メソッドを発行すると次に示すとおり動作します。

セッションのトランザクションはロールバックされます。

セッションに関連づけられているすべてのQueueSender，QueueReceiverおよびQueueBrowserオブジェクトがクローズされます。

メッセージ処理が適切な方法で終了されるまで，メソッドは復帰しません。

セッションのすべての未承認メッセージはQueueSession.recover()メソッドが正常終了したときと同じ状態になります。

なお，クローズされているセッションをクローズしても例外は発生しません。

複数スレッドから同時に発行できるメソッドは，QueueSessionインタフェースではこのメソッドだけです。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがセッションをクローズする処理に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　commitメソッド

public void commit() throws JMSException

トランザクションで実行されたメッセージをすべてコミットし，設定中のロックをすべて解放します。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

IllegalStateException

セッションのトランザクションが開始していない状態で，メソッドが発行されました。

トランザクションマネジャでのトランザクションが進行中（例えば，分散トランザクションがJTAによって制御されている）であるため，コミットに失敗しました。

トランザクションマネジャでのトランザクションがサスペンド中であるため，コミットに失敗しました。

セッションまたはコネクションがクローズしている状態で，メソッドが発行されました。

JMSException

内部エラーのためにJMSプロバイダがトランザクションのコミットに失敗しました。

TransactionRolledBackException

コミット時に内部エラーのためにトランザクションがロールバックされました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(c)　createBytesMessageメソッド

public BytesMessage createBytesMessage() throws JMSException

BytesMessageオブジェクトを作成します。

引数

ありません。

戻り値

BytesMessageオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(d)　createMapMessageメソッド

public MapMessage createMapMessage() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，JMSExceptionが発生します。

引数

ありません。

戻り値

MapMessageオブジェクト。

例外

例外クラス

説明

JMSException

メソッドが未サポートであることを示します。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　createMessageメソッド

public Message createMessage() throws JMSException

Messageオブジェクトを作成します。

引数

ありません。

戻り値

Messageオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　createObjectMessageメソッド

public ObjectMessage createObjectMessage() throws JMSException

ObjectMessageオブジェクトを作成します。

引数

ありません。

戻り値

ObjectMessageオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(g)　createObjectMessageメソッド

public ObjectMessage createObjectMessage(java.io.Serializable object)
  throws JMSException

ペイロードを設定済みのObjectMessageオブジェクトを，object引数を基に作成します。

引数

引数名

説明

object

メッセージの初期化に使用するオブジェクト

戻り値

ペイロードを設定済みのObjectMessageオブジェクトを，object引数を基に作成します。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(h)　createStreamMessageメソッド

public StreamMessage createStreamMessage() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，JMSExceptionが発生します。

引数

ありません。

戻り値

StreamMessageオブジェクト。

例外

例外クラス

説明

JMSException

メソッドが未サポートであることを示します。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(i)　createTextMessageメソッド

public TextMessage createTextMessage() throws JMSException

TextMessageオブジェクトを作成します。

引数

ありません。

戻り値

TextMessageオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(j)　createTextMessageメソッド

public TextMessage createTextMessage(java.lang.String text)
  throws JMSException

ペイロードを設定済みのTextMessageオブジェクトを，text引数を基に作成します。

引数

引数名

説明

text

メッセージの初期化に使用する文字列

戻り値

ペイロードを設定済みのTextMessageオブジェクトを，text引数を基に作成します。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(k)　getMessageListenerメソッド

public MessageListener getMessageListener() throws JMSException

このメソッドは未サポートです。

メソッドを発行した場合，nullを返します。

引数

ありません。

戻り値

セッションに関連づけられたメッセージリスナ。

例外

ありません。

(l)　getTransactedメソッド

public boolean getTransacted() throws JMSException

セッションがトランザクションモードであるかどうかを示します。

引数

ありません。

戻り値

セッションがトランザクションモードである場合はtrue，そうでない場合はfalseを返します。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがトランザクションモード値の取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(m)　recoverメソッド

public void recover() throws JMSException

メソッドを発行すると次に示すとおり動作します。

メッセージ配送を停止します。

今までセッションを介して配送されたメッセージに再配送マークを付けて，再配送できるようにします。

すべての配送済みの未承認メッセージを含む配送シーケンスを再開します。ただし，元の配送順序と同じ順序でメッセージが再配送されることは保証しません。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

IllegalStateException

トランザクションマネジャでのトランザクションが開始しているセッションで，メソッドが発行されました。

トランザクションマネジャでのトランザクションが開始していることによって，メソッドが失敗しました。

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがメッセージ配送の停止および再開に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(n)　rollbackメソッド

public void rollback() throws JMSException

トランザクションで実行されたメッセージをすべてロールバックし，設定中のロックをすべて解放します。

引数

ありません。

戻り値

ありません。

例外

例外クラス

説明

IllegalStateException

セッションのトランザクションが開始していない状態で，メソッドが発行されました。

トランザクションマネジャでのトランザクションが進行中（例えば，分散トランザクションがJTAによって制御されている）であるため，ロールバックに失敗しました。

トランザクションマネジャでのトランザクションがサスペンド中であるため，ロールバックに失敗しました。

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにJMSプロバイダがトランザクションのロールバックに失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(o)　runメソッド

public void run()

このメソッドは未サポートです。

このメソッドを発行した場合，実質的な処理は行われません。

引数

ありません。

戻り値

ありません。

例外

ありません。

(p)　setMessageListenerメソッド

public void setMessageListener(MessageListener listener)
  throws JMSException

このメソッドは未サポートです。

このメソッドで設定した値は実際には使用されません。

引数

引数名

説明

listener

セッションに関連づけるメッセージリスナ

戻り値

ありません。

例外

ありません。

(q)　createBrowserメソッド

public QueueBrowser createBrowser(Queue queue) throws JMSException

QueueBrowserオブジェクトを作成して，指定されたキューのメッセージを調べます。

引数

引数名

説明

queue

アクセス対象のキュー

戻り値

QueueBrowserオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

InvalidDestinationException

無効なキューが指定されたためにQueueBrowserオブジェクトの生成に失敗しました。

JMSException

内部エラーのためにセッションがQueueBrowserオブジェクトの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(r)　createBrowserメソッド

public QueueBrowser createBrowser(Queue queue,
  java.lang.String messageSelector) throws JMSException

QueueBrowserオブジェクトを作成し，メッセージセレクタを使用して指定されたキューのメッセージを調べます。

引数

引数名

説明

queue

アクセス対象のキュー

messageSelector

メッセージセレクタ構文

戻り値

QueueBrowserオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

InvalidDestinationException

無効なキューが指定されたためにQueueBrowserオブジェクトの生成に失敗しました。

InvalidSelectorException

無効なメッセージセレクタを設定しました。

JMSException

内部エラーのためにセッションがQueueBrowserオブジェクトの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(s)　createQueueメソッド

public Queue createQueue(java.lang.String queueName)
  throws JMSException

キューの名前を指定して，キューの識別情報を作成します。

queueName引数にはhrmmkqueコマンドに指定したキュー名を指定します。

引数

引数名

説明

queueName

キューの名前

戻り値

指定された名前のQueueオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

JMSException

内部エラーのためにセッションがキューの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(t)　createReceiverメソッド

public QueueReceiver createReceiver(Queue queue) throws JMSException

QueueReceiverオブジェクトを作成して，指定されたキューからメッセージを受信します。

引数

引数名

説明

queue

アクセス対象のキュー

戻り値

QueueReceiverオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

InvalidDestinationException

無効なキューが指定されたためにQueueReceiverオブジェクトの生成に失敗しました。

JMSException

内部エラーのためにセッションがQueueReceiverオブジェクトの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(u)　createReceiverメソッド

public QueueReceiver createReceiver(Queue queue,
  java.lang.String messageSelector) throws JMSException

QueueReceiverオブジェクトを作成し，メッセージセレクタを使用して指定されたキューからメッセージを受信します。

引数

引数名

説明

queue

アクセス対象のキュー。

messageSelector

メッセージセレクタ。メッセージセレクタ構文に一致するプロパティを保持するメッセージだけが配送されます。

戻り値

QueueReceiverオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

InvalidDestinationException

無効なキューが指定されたためにQueueReceiverオブジェクトの生成に失敗しました。

InvalidSelectorException

無効なメッセージセレクタを設定しました。

JMSException

内部エラーのためにセッションがQueueReceiverオブジェクトの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(v)　createSenderメソッド

public QueueSender createSender(Queue queue) throws JMSException

QueueSenderオブジェクトを作成して，指定されたキューにメッセージを送信します。

引数

引数名

説明

queue

アクセス対象のキュー

戻り値

QueueSenderオブジェクト。

例外

例外クラス

説明

IllegalStateException

セッションまたはコネクションがクローズしている状態で，メソッドを発行しました。

InvalidDestinationException

無効なキューが指定されたためにQueueSenderオブジェクトの生成に失敗しました。

JMSException

内部エラーのためにセッションがQueueSenderオブジェクトの作成に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(w)　createTemporaryQueueメソッド

public TemporaryQueue createTemporaryQueue() throws JMSException

このメソッドは未サポートです。

このメソッドを発行した場合，JMSExceptionが発生します。

引数

ありません。

戻り値

TemporaryQueueオブジェクト。

例外

例外クラス

説明

JMSException

メソッドが未サポートであることを示します。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.4.13　TextMessageインタフェース

TextMessageインタフェースはjava.lang.String型のデータを含むメッセージを送受信するために使用します。TextMessageインタフェースはMessageインタフェースを継承しているため，Messageインタフェースの機能を持っています。

(1)　ペイロードの設定と取得

TextMessageインタフェースを使用することでペイロードを設定および取得できます。このペイロードはjava.lang.String型のデータです。JMSメッセージの各要素については，「2.5.1　JMSメッセージの構成」を参照してください。

(2)　形式

public interface TextMessage extends Message
{
  public java.lang.String
                 getText() throws JMSException;
  public void    setText(java.lang.String string) throws JMSException;
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　getTextメソッド

public java.lang.String getText() throws JMSException

メッセージのデータを含む文字列を返します。メッセージ本体が設定されていない場合はデフォルト値であるnullを返します。

引数

ありません。

戻り値

メッセージのデータを含むStringオブジェクト。

例外

例外クラス

説明

JMSException

内部エラーのためにJMSプロバイダがテキストの取得に失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　setTextメソッド

public void setText(java.lang.String string) throws JMSException

メッセージのデータを含む文字列を設定します。

引数

引数名

説明

string

メッセージのデータを含むStringオブジェクト

戻り値

ありません。

例外

例外クラス

説明

JMSException

string引数にnullが指定されました。

内部エラーのためにJMSプロバイダがテキストの設定に失敗しました。

MessageNotWriteableException

読み取り専用モードのペイロードに情報を書き込もうとしました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

7.5　転送データ相互接続用インタフェースの一覧

Reliable Messagingの転送データ相互接続用インタフェースは永続版リソースアダプタだけが使用できます。非永続版リソースアダプタでは使用できません。

転送データ相互接続用インタフェースは，次に示すパッケージによって提供されます。

jp.co.Hitachi.soft.reliablemessaging.api

Reliable Messagingが提供する転送データ相互接続用インタフェースの一覧を次の表に示します。

表7‒3　転送データ相互接続用インタフェースの一覧

項番

インタフェース名

機能

1

BytesContainerFactory

BytesContainerを生成します。

2

BytesContainer

設定したデータをバイト配列で保持します。提供する機能は，次のとおりです。

バイト配列およびバイト配列のデータ型の設定

バイト配列およびバイト配列のデータ型の取得

保持するバイト配列数の取得

保持する全データの消去

転送データ相互接続用インタフェース使用時の例外クラスは，次に示すパッケージによって提供されます。

jp.co.Hitachi.soft.reliablemessaging.api

転送データ相互接続用インタフェース使用時の例外クラスの一覧を次の表に示します。

表7‒4　転送データ相互接続用インタフェースの例外クラスの一覧

項番

例外クラス名

例外が発生する状況

1

HRMException

すべての転送データ相互接続用API例外のルートクラスであるため，特定のタイミングに該当しません。

2

HRMIllegalArgumentException

メソッドの呼び出しで不正な引数を指定した場合

転送データ相互接続用インタフェースおよび例外のクラスは，次に示すライブラリで提供されます。

%HRMDIR%¥lib¥reliablemessaging-api.jar

転送データ相互接続用インタフェースを使用するアプリケーションのコンパイル時には，上に示すライブラリをクラスパスに含めてください。

7.6　転送データ相互接続用インタフェース継承図

Reliable Messagingの転送データ相互接続用インタフェースBytesContainerFactoryおよびBytesContainerには，継承関係はありません。

一方，例外クラスには継承関係があります。例外クラスの継承を次の図に示します。

図7‒3　転送データ相互接続用例外クラスの継承

7.7　転送データ相互接続用インタフェースの使い方

JMSインタフェースを使用してメッセージを送受信する際，送信メッセージにBytesContainerを設定する方法と，受信したメッセージからBytesContainerを取得する方法を次の表に示します。

表7‒5　BytesContainerの使用方法

項番

処理内容

BytesContainerの使用方法

1

送信処理

javax.jms.ObjectMessageオブジェクトのsetObjectメソッドでBytesContainerオブジェクトを設定してメッセージを送信します。

2

受信処理

受信処理で取得したjavax.jms.ObjectMessageオブジェクトのgetObjectメソッドを使用してBytesContainerオブジェクトを取得します。

Reliable Messaging同士の通信でのBytesContainerの使用方法の概要を次の図に示します。

図7‒4　Reliable Messaging同士の通信でのBytesContainer使用方法の概要

他システムとの通信でのBytesContainer使用方法の概要を次の図に示します。

図7‒5　Reliable Messagingが送信側の場合の他システムとの通信

図7‒6　Reliable Messagingが受信側の場合の他システムとの通信

7.8　転送データ相互接続用インタフェースの詳細

転送データ相互接続用インタフェースを，BytesContainerFactoryインタフェース，BytesContainerインタフェース，HRMExceptionクラス，HRMIllegalArgumentExceptionクラスの順に説明します。

7.8.1　BytesContainerFactoryインタフェース

BytesContainerFactoryインタフェースはBytesContainerを生成します。

アプリケーションでは，QueueConnectionオブジェクトのcreateQueueSessionメソッドで取得したQueueSessionオブジェクトに対してBytesContainerFactory をキャストすることによって，BytesContainerFactoryオブジェクトを取得できます。

(1)　BytesContainerの生成

createBytesContainerメソッドを呼び出すことでBytesContainerを生成します。

(2)　形式

public interface BytesContainerFactory
{
  public BytesContainer createBytesContainer();
}

(3)　フィールド

ありません。

(4)　メソッド

「(2)　形式」に記載した順序で各メソッドを説明します。

(a)　createBytesContainerメソッド

public BytesContainer createBytesContainer()

BytesContainerを作成します。

引数

ありません。

戻り値

新たに作成されたBytesContainer。

7.8.2　BytesContainerインタフェース

BytesContainerインタフェースはバイト配列を含むメッセージを送受信するために使用します。Reliable Messaging同士だけでなく，WS-Reliability1.1に準拠する他システムとデータをやり取りする際に使用できます。

(1)　BytesContainerインタフェースの仕様

BytesContainerインタフェースは，バイト配列およびバイト配列のデータ型を示す値の組を1個だけ含むインタフェースです。

BytesContainerインタフェースは，次の二つの要素で構成されます。

バイト配列

プリミティブなバイト配列です。

バイト配列のデータ型

バイト配列のデータ型を示す値が入ります。

BytesContainerインタフェースの構成を次の図に示します。

図7‒7　BytesContainerインタフェースの構成

(2)　BytesContainerインタフェースのデータ型

BytesContainerインタフェースに含まれるバイト配列のデータ型の一覧を次の表に示します。

表7‒6　バイト配列のデータ型一覧

項番

データ型の種類

バイト配列のデータ型の内容

1

HTML型

拡張子がhtml，htmのファイルの内容をバイト配列化したデータ

2

TEXT型

拡張子がtxt，textのファイルの内容をバイト配列化したデータ※

3

IEF型

拡張子がiefのファイルの内容をバイト配列化したデータ

4

TIFF型

拡張子がtiff, tifのファイルの内容をバイト配列化したデータ

5

XWD型

拡張子がxwdのファイルの内容をバイト配列化したデータ

6

POSTSCRIPT型

拡張子がai, eps, psのファイルの内容をバイト配列化したデータ

7

RTF型

拡張子がrtfのファイルの内容をバイト配列化したデータ

8

TEX型

拡張子がtexのファイルの内容をバイト配列化したデータ

9

TEXINFO型

拡張子がtexinfo，texiのファイルの内容をバイト配列化したデータ

10

ROFF型

拡張子がt，tr，roffのファイルの内容をバイト配列化したデータ

11

AU型

拡張子がauのファイルの内容をバイト配列化したデータ

12

MIDI型

拡張子がmidi，midのファイルの内容をバイト配列化したデータ

13

AIFC型

拡張子がaifcのファイルの内容をバイト配列化したデータ

14

AIF型

拡張子がaif，aiffのファイルの内容をバイト配列化したデータ

15

WAV型

拡張子がwavのファイルの内容をバイト配列化したデータ

16

MPEG型

拡張子がmpeg，mpg，mpeのファイルの内容をバイト配列化したデータ

17

QT型

拡張子がqt，movのファイルの内容をバイト配列化したデータ

18

AVI型

拡張子がaviのファイルの内容をバイト配列化したデータ

19

上に示す以外の型

上に示す以外の内容をバイト配列化したデータ

注※

データ型がTEXT型の場合，文字コード（charset）をUTF-8に指定して転送します。

(3)　バイト配列数の取得

BytesContainerインタフェースが保持するバイト配列の数を取得する機能を提供します。

(4)　保持する全データの消去

BytesContainerインタフェースが保持するデータ（バイト配列およびバイト配列のデータ型）をすべて消去する機能を提供します。

(5)　形式

public interface BytesContainer
{
  public static final String TEXT_HTML;
  public static final String TEXT_PLAIN;
  public static final String IMAGE_IEF;
  public static final String IMAGE_TIFF;
  public static final String IMAGE_X_XWINDOWDUMP;
  public static final String APPLICATION_POSTSCRIPT;
  public static final String APPLICATION_RTF;
  public static final String APPLICATION_X_TEX;
  public static final String APPLICATION_X_TEXINFO;
  public static final String APPLICATION_X_TROFF;
  public static final String AUDIO_BASIC;
  public static final String AUDIO_MIDI;
  public static final String AUDIO_X_AIFC;
  public static final String AUDIO_X_AIFF;
  public static final String AUDIO_X_WAV;
  public static final String VIDEO_MPEG ;
  public static final String VIDEO_QUICKTIME;
  public static final String VIDEO_X_MSVIDEO;
  public static final String APPLICATION_OCTET_STREAM;

  public void addPayload(byte[] payload) throws HRMException;
  public void addPayload(byte[] payload, String contentType) throws HRMException;
  public int size();
  public byte[] getPayload(int number) throws HRMException;
  public String getContentType(int number) throws HRMException;
  public void clear();
}

(6)　フィールド

「(5)　形式」に記載した順序で各フィールドを説明します。

(a)　TEXT_HTMLフィールド

public static final String TEXT_HTML

バイト配列のデータがHTML型であることを示す値です。

(b)　TEXT_PLAINフィールド

public static final String TEXT_PLAIN

バイト配列のデータがTEXT型であることを示す値です。

(c)　 IMAGE_IEFフィールド

public static final String IMAGE_IEF

バイト配列のデータがIEF型であることを示す値です。

(d)　 IMAGE_TIFFフィールド

public static final String IMAGE_TIFF

バイト配列のデータがTIFF型であることを示す値です。

(e)　 IMAGE_X_XWINDOWDUMPフィールド

public static final String IMAGE_X_XWINDOWDUMP

バイト配列のデータがXWD型であることを示す値です。

(f)　 APPLICATION_POSTSCRIPTフィールド

public static final String APPLICATION_POSTSCRIPT

バイト配列のデータがPOSTSCRIPT型であることを示す値です。

(g)　APPLICATION_RTFフィールド

public static final String APPLICATION_RTF

バイト配列のデータがRTF型であることを示す値です。

(h)　APPLICATION_X_TEXフィールド

public static final String APPLICATION_X_TEX

バイト配列のデータがTEX型であることを示す値です。

(i)　 APPLICATION_X_TEXINFOフィールド

public static final String APPLICATION_X_TEXINFO

バイト配列のデータがTEXINFO型であることを示す値です。

(j)　APPLICATION_X_TROFFフィールド

public static final String APPLICATION_X_TROFF

バイト配列のデータがROFF型であることを示す値です。

(k)　 AUDIO_BASICフィールド

public static final String AUDIO_BASIC

バイト配列のデータがAU型であることを示す値です。

(l)　AUDIO_MIDIフィールド

public static final String AUDIO_MIDI

バイト配列のデータがMIDI型であることを示す値です。

(m)　 AUDIO_X_AIFCフィールド

public static final String AUDIO_X_AIFC

バイト配列のデータがAIFC型であることを示す値です。

(n)　 AUDIO_X_AIFFフィールド

public static final String AUDIO_X_AIFF

バイト配列のデータがAIF型であることを示す値です。

(o)　 AUDIO_X_WAVフィールド

public static final String AUDIO_X_WAV

バイト配列のデータがWAV型であることを示す値です。

(p)　VIDEO_MPEGフィールド

public static final String VIDEO_MPEG

バイト配列のデータがMPEG型であることを示す値です。

(q)　 VIDEO_QUICKTIMEフィールド

public static final String VIDEO_QUICKTIME

バイト配列のデータがQT型であることを示す値です。

(r)　VIDEO_X_MSVIDEOフィールド

public static final String VIDEO_X_MSVIDEO

バイト配列のデータがAVI型であることを示す値です。

(s)　 APPLICATION_OCTET_STREAMフィールド

public static final String APPLICATION_OCTET_STREAM

バイト配列のデータが，ほかのフィールドで示したデータ型以外であることを示す値です。

(7)　メソッド

「(5)　形式」に記載した順序で各メソッドを説明します。

(a)　addPayloadメソッド

public void addPayload(byte[] payload) throws HRMException

メッセージのデータを含むbyte[]を設定します。payloadのデータ型を示す値はAPPLICATION_OCTET_STREAMになります。

BytesContainerに設定できるバイト配列の制限数は1です。

引数

引数名

説明

payload

メッセージのデータを含む byte[]

戻り値

ありません。

例外

例外クラス

説明

HRMIllegalArgumentException

引数payloadにnullを指定しました。

HRMException

制限数より多くのバイト配列を設定しました。または，内部エラーのためにメソッドの処理が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(b)　addPayloadメソッド

public void addPayload(byte[] payload, String contentType) throws HRMException

メッセージのデータを含むbyte[]を設定します。

BytesContainerに設定できるバイト配列の制限数は1です。

引数contentTypeにTEXT_PLAINを指定した場合，引数payloadに指定する値は，UTF-8の文字コードの値として扱います。文字コードがUTF-8以外の値を指定してキュー間転送をした場合，受信側で同じ値を取得できません。

引数

引数名

説明

payload

メッセージのデータを含む byte[]

contentType

payloadのデータ型を示す値

戻り値

ありません。

例外

例外クラス

説明

HRMIllegalArgumentException

次のうちのどれかの状態になりました。

引数payloadにnullを指定した

引数contentTypeにnullを指定した

引数contentTypeにBytesContainerのフィールドで定義した値以外を設定した

HRMException

制限数より多くのバイト配列を設定しました。または，内部エラーのためにメソッドの処理が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(c)　sizeメソッド

public int size()

BytesContainerインタフェースが保持するバイト配列の数を返します。

引数

ありません。

戻り値

BytesContainerが保持するバイト配列の数を示す値です。

例外

ありません。

(d)　getPayloadメソッド

public byte[] getPayload(int number) throws HRMException

引数numberで指定されたバイト配列を返します。この引数numberと同じ値をgetContentTypeメソッドの引数に指定して発行した場合の値が，TEXT_PLAINだったとき，このメソッドで取得するデータはUTF-8の文字コードで変換された値です。

引数

引数名

説明

number

取得するバイト配列の番号を示す値です。制限数は0です。

戻り値

メッセージのデータを含むbyte[]。

例外

例外クラス

説明

HRMIllegalArgumentException

引数numberが制限数の範囲外です。または，BytesContainerが保持するバイト配列数を超える値を引数numberに指定しました。

HRMException

内部エラーのためにメソッドの処理が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(e)　getContentTypeメソッド

public String getContentType(int number) throws HRMException

引数numberで指定されたバイト配列のデータ型を返します。

引数

引数名

説明

number

取得するバイト配列の番号を示す値です。制限数は0です。

戻り値

payloadのデータ型を示す値です。

例外

例外クラス

説明

HRMIllegalArgumentException

引数numberが制限数の範囲外です。または，BytesContainerが保持するバイト配列数を超える値を引数numberに指定しました。

HRMException

内部エラーのためにメソッドの処理が失敗しました。

例外クラスには障害コードと障害情報が設定されます。障害コードと対処については，「7.9　障害コードの詳細」を参照してください。

(f)　clearメソッド

public void clear()

BytesContainerインタフェースが保持するデータ（バイト配列およびバイト配列のデータ型）をすべて消去します。

引数

ありません。

戻り値

ありません。

例外

ありません。

7.8.3　HRMExceptionクラス

このクラスは転送データ相互接続用API例外のルートクラスです。なお，java.lang.Exceptionの親クラスであるjava.lang.Throwableクラスから継承したメソッドに関する説明（形式，コンストラクタ，メソッド）は省略します。

(1)　形式

public class HRMException extends java.lang.Exception
{
  public HRMException(String errorMessage, String errorCode){}
  public String getErrorCode(){}
  public String getErrorMessage(){}
  public Exception getLinkedException() {}
}

(2)　コンストラクタ

「(1)　形式」に記載した順序でコンストラクタを説明します。

(a)　HRMExceptionコンストラクタ

public HRMException(String errorMessage, String errorCode)

HRMExceptionを生成する際に，障害文字列と障害コードを設定します。

引数

引数名

説明

errorMessage

障害発生要因を示す障害文字列

errorCode

障害発生要因を示す障害コード

戻り値

ありません。

例外

ありません。

(3)　メソッド

「(1)　形式」に記載した順序で各メソッドを説明します。

(a)　getErrorCodeメソッド

public java.lang.String getErrorCode()

障害発生要因を示す障害コードを返します。

引数

ありません。

戻り値

障害発生要因を示す障害コードです。

例外

ありません。

(b)　getErrorMessageメソッド

public java.lang.String getErrorMessage()

障害発生要因を示す障害文字列を返します。

引数

ありません。

戻り値

障害発生要因を示す障害文字列です。

例外

ありません。

(c)　getLinkedExceptionメソッド

public java.lang.Exception getLinkedException()

このクラスにリンクされた例外を取得します。

引数

ありません。

戻り値

リンクされた例外です。

例外

ありません。

7.8.4　HRMIllegalArgumentExceptionクラス

このクラスは，メソッドの呼び出しで不正な引数を指定したことを示す例外クラスです。なお，java.lang.Exceptionの親クラスであるjava.lang.Throwableクラスから継承したメソッドに関する説明（形式，コンストラクタ，メソッド）は省略します。

(1)　形式

public class HRMIllegalArgumentException extends HRMException
{
  public HRMIllegalArgumentException(
      String errorMessage, String errorCode) {}
  public String getErrorCode() {}
  public String getErrorMessage() {}
  public Exception getLinkedException() {}
}

(2)　コンストラクタ

HRMExceptionクラスと同じ内容です。「7.8.3　HRMExceptionクラス」を参照してください。

(3)　メソッド

HRMExceptionクラスと同じ内容です。「7.8.3　HRMExceptionクラス」を参照してください。

7.9　障害コードの詳細

アプリケーションでは，例外クラスのgetErrorCode()メソッドを発行することによって障害コードを取得できます。また，getMessage()メソッドを発行することによって障害文字列を取得できます。障害コードおよび障害文字列を参照して，障害に対処してください。

障害コードの一覧を次の表に示します。

表7‒7　障害コードの一覧

項番

障害コード

障害文字列

発生要因

対処

1

HRM-00001

Null has been specified for the argument.

引数にnullを指定しています。

引数にはnull以外を指定してください。

2

HRM-00002

The value set for the argument (number) is outside the valid range.

引数のnumberに制限範囲外の値を設定しました。

引数のnumberには制限範囲内の値を設定してください。

3

HRM-00003

More bytes than the limit have been set for BytesContainer.

BytesContainerに対して制限より多くのバイト配列を設定しました。

BytesContainerに設定するバイト配列の数が制限を超えないようにしてください。

4

HRM-00004

A value other than that defined in the BytesContainer field has been set for the contentType argument.

引数のcontentTypeにBytesContainerのフィールドで定義した値以外を設定しました。

引数のcontentTypeにはBytesContainerのフィールドで定義した値を設定してください。

5

HRM-00005

An element corresponding to the value for the argument (number) was not found.

引数のnumberの値に対応する要素が見つかりません。

対応する要素が存在する値を引数のnumberに設定してください。

6

HRM-00006

The destination is invalid. There is no message in this destination.

デスティネーションは不正です。このデスティネーションにはメッセージはありません。

指定したキューを見直してください。送信用共用キューからメッセージ数を取得しようとしていると考えられます。

7

HRM-00103

The destination does not exist.

デスティネーションがありません。

指定したキュー名を見直してください。

8

HRM-00203

The destination is invalid. It is not possible to send to this destination.

デスティネーションは，送信できるあて先ではありません。

指定したキュー名を見直してください。次の場合が考えられます。

デッドメッセージキューに送信しています。

9

HRM-00204

The destination is invalid. It is not possible to receive from this destination.

デスティネーションは，受信できるあて先ではありません。

受信できないキューを見直してください。次の場合が考えられます。

送信用共用キューから受信しています。

10

HRM-00205

This message cannot be sent to a shared queue.

このメッセージは共用キューに送信できません。

共用キューに送信する場合は，BytesMessageインタフェースを使用して送信してください。

11

HRM-00206

The size of this message exceeds the maximum length defined for the queue.

このメッセージの本体のサイズはキューで定義された最大メッセージ長をオーバしています。

メッセージの本体の長さを見直してください。

12

HRM-00207

The system definition information conflicts with the queue attribute information.

システムの定義情報とキューの属性情報が不一致です。

キューの属性情報，またはシステムの定義情報を見直してください。次に示す状況が考えられます。

RMSHConnectFlagプロパティ指定値がfalseのときに受信用共用キューを利用しようしています。

13

HRM-00208

Registration of messages into the queue is suppressed.

キューへのメッセージの登録は抑止されています。

キューへのメッセージの登録の抑止を解除してください。

14

HRM-00209

Retrieval of messages from the queue is suppressed.

キューからのメッセージの取り出しは抑止されています。

キューからのメッセージの取り出しの抑止を解除してください。

15

HRM-00210

The queue is being deleted.

キューの削除中のため，キューに対する処理が失敗しました。

別のキューを利用するか，またはこのキューが削除されてないか確認して再度処理を実行してください。

16

HRM-00301

uCosminexus Reliable Messaging is not in an executable state.

Reliable Messagingが実行状態ではありません。

Reliable Messagingを実行状態に移行してください。

17

HRM-00302

uCosminexus Reliable Messaging has not been initialized.

Reliable Messagingが初期化されていません。

Reliable Messagingを管理状態または実行状態に移行してください。

18

HRM-00303

The queue is in a blocked state.

キューは閉塞状態です。

キューを使用できないので，異なるキューを使用してください。

19

HRM-00304

RMConnection has already closed.

RMConnectionはclose済みです。

発行手順を見直してください。

20

HRM-00306

RMConnection is already in a transaction-executing state.

RMConnectionはすでにトランザクション実行状態です。

トランザクションを決着してから処理してください。

21

HRM-00307

RMConnection is in a transaction-not-executing state.

RMConnectionはトランザクションが実行されていない状態です。

トランザクションを開始してから処理してください。

22

HRM-00308

The table management information of the shared queue is invalid. The shared queue status changed to a blocked status.

共用キューのテーブル管理情報が不正です。共用キューは閉塞状態になりました。

次に示す項目を確認してください。

キュー名

ライト通番

ライト通番のラップカウンタ

ライト通番の最大値

リード通番

リード通番のラップカウンタ

23

HRM-00401

The number of messages or queue capacity has exceeded the maximum.

キューの容量やメッセージ数の上限値を超えました。

キューの容量を増やすか，メッセージを削除してください。

24

HRM-00407

A memory shortage occurred.

メモリ不足が発生しました。

利用できるメモリを増やし，処理を再度実行してください。

25

HRM-00408

The maximum value of the message length who can register with queue was exceeded.

キューに登録できるメッセージ長の上限値を超過しました。

登録先のキューがローカルキューの場合，メッセージのペイロード，プロパティおよびヘッダの指定値を見直し，メッセージのサイズを小さくしてください。

送信用共用キューの場合，メッセージのペイロードのサイズを小さくするか，または登録先キューとなる受信用共用キューの最大メッセージ長を増やしてください。

26

HRM-00409

The end of the stream was unexpectedly reached while reading the message.

メッセージ読み取り中に予期しないストリームの終端に達しました。

DABroker対応のDB Connectorを使用している場合は，DABroker Libraryの環境設定の［リモートアクセス設定］タブで［BLOB/LONG/CLOB型データ受取バッファサイズ］にDBConnectoreのbufSizeプロパティ指定値より大きな値を設定し，J2EEサーバを再度開始してください。

HiRDB Type4 JDBC Driver対応のDB Connectorを使用している場合は，DB ConnectorのmaxBinarySizeプロパティに指定値より大きな値を設定して，Reliable MessagingとDB Connectorを再開始してください。

27

HRM-00410

The destination queue has been deleted.

送信先の受信用共用キューが削除されています。

送信用共用キューは閉塞するので，削除してください。

28

HRM-00411

Registration in the destination queue is suppressed.

送信先の受信用共用キューは登録を抑止されています。

送信先の受信用共用キューの抑止が解除されるのを待ってください。

29

HRM-00502

An attempt to access the database has failed.

DBアクセスに失敗しました。

メッセージの詳細からDBの障害を回復してください。

30

HRM-00503

An attempt to access the queue has failed.

キューアクセスに失敗しました。

メッセージの詳細からDBの障害を回復してください。

31

HRM-00504

The number of database connections exceeded the maximum.

DBコネクション数が最大値を超過しました。

Reliable MessagingのDBコネクション数を増やす場合は，DBのコネクション関連定義を見直してください。

32

HRM-00505

An error occurred during a begin or commit or rollback of the local transaction.

ローカルトランザクションのコミットまたはロールバックに失敗しました。

メッセージの詳細からDBの障害を回復してください。

33

HRM-00506

An attempt to acquire a connection to the database has failed.

DBへのコネクションの取得に失敗しました。

メッセージの詳細からDBの障害を回復してください。

34

HRM-00601

uCosminexus Reliable Messaging is in a blocked state.

Reliable Messagingは閉塞状態です。

Reliable Messagingを再度開始してください。

35

HRM-00701

ManagedConnection has already been destroyed.

ManagedConnectionはすでにデストロイされています。

メソッドの発行手順を見直してください。

36

HRM-00702

ManagedConnection has already been cleaned up.

ManagedConnectionはすでにクリーンアップされています。

メソッドの発行手順を見直してください。

37

HRM-00703

The session transaction is already running.

セッションのトランザクションがすでに開始しています。

メソッドの発行手順を見直してください。

38

HRM-00704

The session transaction is not running.

セッションのトランザクションは開始していません。

メソッドの発行手順を見直してください。

39

HRM-00705

An attempt was made to generate QueueSession without the attribute that enables sharing of QueueSession.

生成しようとしたQueueSessionオブジェクトはシェアリングできる属性ではありません。

指定したQueueSessionオブジェクトの属性を見直してください。

40

HRM-00706

The already generated QueueSession does not have the attribute that enables sharing of QueueSession.

生成済みのQueueSessionオブジェクトはシェアリングできる属性ではありません。

シェアリングする際はtrasacted引数がfalseで，かつAUTO_ACKNOWLEDGEモードのQueueSessionオブジェクトを使用してください。

41

HRM-00801

An unsupported method was executed.

サポートされていないメソッドを実行しました。

発行するメソッドを見直してください。

42

HRM-00802

The method execution failed because the QueueConnection was in a closed state.

QueueConnectionオブジェクトがclose状態だったため，メソッドの実行に失敗しました。

メソッドの発行手順を見直してください。

43

HRM-00803

The method execution failed because the QueueSession was in a closed state.

QueueSessionオブジェクトがclose状態だったため，メソッドの実行に失敗しました。

メソッドの発行手順を見直してください。

44

HRM-00804

The method execution failed because the QueueSender was in a closed state.

QueueSenderオブジェクトがclose状態だったため，メソッドの実行に失敗しました。

メソッドの発行手順を見直してください。

45

HRM-00805

The method execution failed because the QueueReceiver was in a closed state.

QueueReceiverオブジェクトがclose状態だったため，メソッドの実行に失敗しました。

メソッドの発行手順を見直してください。

46

HRM-00806

The method execution failed because the QueueBrowser was in a closed state.

QueueBrowserオブジェクトがclose状態だったため，メソッドの実行に失敗しました。

メソッドの発行手順を見直してください。

47

HRM-00807

The method's parameter value is null.

メソッドの引数の値がnullです。

引数を見直してください。

48

HRM-00808

The method's parameter value is invalid.

メソッドの引数の値が不正です。

引数を見直してください。

49

HRM-00809

The length of the method's parameter exceeds the restriction value.

メソッドの引数の長さが制限値を超えていました。

引数の長さを見直してください。

50

HRM-00810

An attempt to read the message has failed.

メッセージの読み取りに失敗しました。

引数を見直してください。

51

HRM-00811

An attempt to write the message has failed.

メッセージの書き込みに失敗しました。

引数を見直してください。

52

HRM-00812

The method execution failed because the message has been in the acknowledge impossible state.

メッセージがacknowledgeできない状態だったため，メソッドの実行に失敗しました。

発行手順を見直してください。

53

HRM-00813

The method execution failed because the end of an unexpected bytes stream has been reached.

予期しないバイトストリームの終端に達しました。

メッセージの読み取り手順を見直してください。

54

HRM-00814

The method execution failed because the type conversion was invalid.

型変換が無効であったため，メソッドの実行に失敗しました。

メッセージに格納したプロパティまたはペイロードの型を見直してください。

ObjectMessageオブジェクトに格納するオブジェクトがユーザの定義したクラスの場合，次の内容を確認してください。

クラスがシリアライズできるかどうか

アプリケーションがクラスを保持しているかどうか

クラスパスがApplication ServerのJ2EEサーバ用オプション定義ファイルに指定されているかどうか

BytesMessageオブジェクト以外の種類のメッセージを共用キューに送信しようとしていないか見直してください。

55

HRM-00816

The writing of property failed because the property has been read-only mode.

プロパティが読み取り専用モードであったため，書き込みに失敗しました。

メッセージの書き込み手順を見直してください。

56

HRM-00817

The reading of payload failed because the payload has been write-only mode.

ペイロードが書き込み専用モードであったため，読み取りに失敗しました。

メッセージの読み取り手順を見直してください。

57

HRM-00818

The writing of payload failed because the payload has been read-only mode.

ペイロードが読み取り専用モードであったため，書き込みに失敗しました。

メッセージの書き込み手順を見直してください。

58

HRM-00819

An invalid queue was specified.

無効なキューが指定されました。

引数を見直してください。

59

HRM-00820

An invalid message selector was specified.

無効なメッセージセレクタが指定されました。

メッセージセレクタの値を見直し，正常なメッセージセレクタを設定し直してください。

60

HRM-00822

An internal error occurred.

内部エラーが発生しました。

この障害の発生前後に出力されたメッセージを参照し，該当する障害要因を取り除いてください。障害要因を取り除けない場合は，メッセージログおよびトレースを採取し，保守員に連絡してください。

61

HRM-00823

The method was executed in an inappropriate state.

不適切な状態でメソッドを実行しました。

メソッドの発行手順を見直してください。

62

HRM-00824

The session transaction is in a non-running state.

セッションのトランザクションが開始していない状態です。

メソッドの発行手順を見直してください。

63

HRM-00825

The session transaction was in a running state.

セッションのトランザクションが開始している状態です。

メソッドの発行手順を見直してください。

64

HRM-00826

The transaction was in a running state, due to the TM.

トランザクションマネジャでのトランザクションが開始している状態です。

メソッドの発行手順を見直してください。

65

HRM-00827

The transaction was in a suspended state, due to the TM.

トランザクションマネジャでのトランザクションがサスペンドしている状態です。

メソッドの発行手順を見直してください。

66

HRM-00828

A memory shortage occurred.

メモリ不足が発生しました。

利用できるメモリを増やし，処理を再度実行してください。

67

HRM-00829

An invalid message selector was specified.

無効なメッセージセレクタが指定されました。

メッセージセレクタの値を見直し，正常なメッセージセレクタを設定し直してください。

68

HRM-00830

Invalid ContentType is set to BytesContainer.

BytesContainerが保持するContentTypeの値が不適切だったため，メソッドの実行に失敗しました。

BytesContainerが保持するContentTypeの値が，この製品でサポートしている値かどうかを見直してください。

69

HRM-00831

The combination of payload and ContentType set to BytesContainer is illegal.

BytesContainerが保持するContentTypeとペイロード内容の組み合わせが不正だったため，メソッドの実行に失敗しました。

BytesContainerが保持するContentTypeとペイロード内容を適切な組み合わせにしてください。

70

HRM-00832

The method failed because an attempt was made to re-use a message that was passed by reference.

参照渡しのメッセージを再利用しようとしたため，メソッドの実行に失敗しました。

メソッドの発行手順を見直してください。

71

HRM-00833

An attempt to acquire a connection has failed.

コネクションの取得に失敗しました。

この障害の発生前後に出力されたメッセージやコネクション取得に関する設定情報を参照し，障害要因を取り除いてください。

72

HRM-00901

An I/O exception occurred.

IOExceptionが発生しました。

入出力エラーの障害要因を取り除いてください。

73

HRM-00902

The value of the configuration property for database connection is invalid.

DBに接続するためのコンフィグレーションプロパティの値が不正です。

コンフィグレーションプロパティを修正してください。

74

HRM-00903

An attempt to register queue information has failed.

キュー情報の登録に失敗しました。

メッセージの詳細からDBの障害を回復してください。

75

HRM-00904

Table creation failed.

テーブルの作成に失敗しました。

メッセージの詳細からDBの障害を回復してください。

76

HRM-00905

An attempt to register FIFO information has failed.

FIFO情報の登録に失敗しました。

メッセージの詳細からDBの障害を回復してください。

77

HRM-00906

Table initialization failed.

テーブルの初期化に失敗しました。

メッセージの詳細からDBの障害を回復してください。

78

HRM-00907

An attempt to delete queue information has failed.

キュー情報の削除に失敗しました。

メッセージの詳細からDBの障害を回復してください。

79

HRM-00908

An attempt to delete FIFO information has failed.

FIFO情報の削除に失敗しました。

メッセージの詳細からDBの障害を回復してください。

80

HRM-00909

An attempt to delete a table has failed.

テーブルの削除に失敗しました。

メッセージの詳細からDBの障害を回復してください。

81

HRM-00910

An attempt to lock a table has failed.

テーブルのロックに失敗しました。

メッセージの詳細からDBの障害を回復してください。

82

HRM-00912

You do not have access permission.

アクセス権限がありません。

policyファイルを見直してください。次に示す状況が考えられます。

スレッドまたはソケットに関するアクセス権限を設定していません。

83

HRM-00913

An attempt to acquire system management information has failed.

システム管理情報の取得に失敗しました。

SQLファイルの実行が失敗していないかどうかを確認し，必要に応じてSQLファイルを再度実行してください。

84

HRM-00914

An attempt to acquire the IP address used for the group ID has failed.

グループIDに使用するIPアドレスの取得に失敗しました。

マシンにIPアドレスが指定されているか確認します。

85

HRM-01001

An attempt was made to create a shared queue in Oracle.

共用キューをOracleに作成しようとしました。

接続先のDBをHiRDBに変更してください。または，ローカルキューを作成してください。

86

HRM-01101

Failed to check content in BytesContainer.

BytesContainerが保持するContentTypeとContentの組み合わせチェック処理に失敗しました。

メッセージログおよびトレースを採取し，保守員に連絡してください。

8　コマンドリファレンス

ユーザはコマンドを入力することによってReliable Messagingを運用します。

この章では，Reliable Messagingが提供するコマンドについて説明します。

8.1　コマンドの概要

Reliable Messagingはシステムを運用するためにコマンドを提供します。

コマンドを実行するための前提条件や複数のReliable Messagingを動作させる場合のシステム名の設定などについて説明します。

8.1.1　コマンド実行の前提条件

Reliable Messagingのコマンドを実行する場合の前提条件を次に示します。

HRMDIR，HRM_SYSTEM_NAME，HRM_CMD_HOST，HRM_CMD_PORTおよびPATH環境変数を設定する必要があります。各環境変数については，「3.3.2　環境変数の設定」を参照してください。

Reliable Messagingのコマンドを実行するコンソールでは，PRFSPOOL環境変数を無効にする必要があります。

Reliable Messagingの開始が完了している必要があります。Reliable Messagingの開始については，「4.1.1　Reliable Messagingの開始（永続版リソースアダプタの場合）」，または「5.1.1　Reliable Messagingの開始（非永続版リソースアダプタの場合）」を参照してください。

UNIXの場合は，Reliable Messagingのコマンドを実行するには，rootまたはComponent Container管理ユーザの権限が必要となります。

8.1.2　コマンドの有効範囲

Reliable Messagingのコマンドは，自システムのReliable Messagingにだけ有効です。対象となるReliable Messagingと異なるマシンでコマンドを入力する運用はできません。

8.1.3　コマンドの同時実行

複数のコマンドを同時に実行することはできません。同時に実行した場合は，先に実行したコマンドが完了するまで待ち合わせます。

8.1.4　システム名の設定

自システムで複数のReliable Messagingを動作させる場合は，コマンドの対象となるReliable Messagingのシステム名を次に示すどちらかの方法で指定します。

●コマンド引数での指定

コマンドを入力するときに，コマンド引数にシステム名を指定する方法です。

●環境変数での指定

コマンドの入力画面でHRM_SYSTEM_NAME環境変数にシステム名を指定する方法です。指定例を次に示します。

Windowsの場合

prompt>set HRM_SYSTEM_NAME=HRM

UNIX（csh）の場合

prompt>setenv HRM_SYSTEM_NAME HRM

UNIX（sh）の場合

prompt>HRM_SYSTEM_NAME=HRM
prompt>export HRM_SYSTEM_NAME

コマンド引数と環境変数の両方にシステム名を指定する場合は，コマンド引数に指定したシステム名が有効になります。システム名はRMSystemNameプロパティ指定値です。

8.1.5　コマンドの記述形式

Reliable Messagingが提供するコマンドの記述形式について，次に示します。

コマンド名  オプション  コマンド引数

コマンド名

コマンド名は，実行するコマンドのファイル名称です。

Reliable Messagingが提供するコマンドは%HRMDIR%¥binにありますので，PATH環境変数に%HRMDIR%¥binを追加してください。

オプション

次の説明中に使用する「>」はコマンドプロンプト，「cmd」はコマンド名称です。

オプションはマイナス記号（-）で始まる文字列で，フラグ引数を取らないか，または1個のフラグ引数を取ります。

オプションの記述形式を次に示します。

-オプションフラグ
または
-オプションフラグ  フラグ引数

オプションフラグは，1文字の英数字（英大文字と英小文字は区別されます）です。

フラグ引数はオプションフラグに対する引数です。

フラグ引数を取らないオプションフラグは，一つのマイナス記号（-）の後ろにまとめて指定できます。

（例）次の二つは同じ意味です。

> cmd -a -b -c
> cmd -abc

フラグ引数を必要とするオプションフラグのフラグ引数は，省略できません。

オプションの指定順序はありません。

コマンド名，オプション，コマンド引数の間には一つ以上のスペースを挿入してください。

同じオプションフラグを2回以上指定すると，最後に指定したものが有効になります。

（例）

次に示すとおり入力すると，フラグ引数として2が有効になります。

> cmd -a 1 -a 2
      無効 有効

オプションは，コマンド引数より前に指定しなければなりません。

（例）

オプションフラグaがフラグ引数を取らない場合，次に示すとおり入力すると，fileと-bは，コマンド引数とみなされます。

> cmd -a file -b

二つのマイナス記号（-）は，オプションの終わりを示します。

（例）

次に示すとおり入力すると，-bはコマンド引数とみなされます。

> cmd -a -- -b

マイナス記号（-）だけのオプションは入力できません。

（例）

次に示すとおり入力すると，-はコマンド引数とみなされます。

> cmd -

コマンド引数

コマンド引数は，コマンド操作の対象になるものを指定します。複数のコマンド引数がある場合は，各コマンドの指定形式に示される順序に従ってください。

8.1.6　リクエストタイムアウト値の変更

ユーザによって実行されたコマンドは，Reliable Messagingにリクエストを送信し，応答を待ちます。コマンドが応答を受け取れないときのリクエストタイムアウト値（単位：秒）について，ユーザは独自の値を設定できます。

Reliable Messagingのコマンドごとに，%HRMDIR%¥binディレクトリにバッチファイル（Windowsの場合）またはシェルスクリプト（UNIXの場合）が提供されています。設定を変更する場合は，各コマンドのバッチファイルまたはシェルスクリプトを編集して次に示す行の右辺の数値を変更してください。

Windowsの場合

set PROPS=%PROPS% -Dejbserver.rmi.request.timeout=0

UNIXの場合

set PROPS="${PROPS} -Dejbserver.rmi.request.timeout=0"

0〜86400（単位：秒）の値を指定できます。デフォルトでは0が設定されています。

値を設定するときは，次に示す点に注意してください。

値が小さいとコマンド入力直後にリクエストタイムアウトとなり，コマンドを正常に実行できないことがあります。

0を指定するとタイムアウトしなくなります。コマンド実行時に長時間レスポンスがない場合は，強制的にコマンド処理を中断してください。CtrlキーとCキーを同時に押します。

Reliable Messagingのバージョンアップや修正パッチを適用した場合，リクエストタイムアウト値は0で上書きされます。リクエストタイムアウト値を変更している場合は，値を設定し直してください。

8.1.7　コマンド実行時に出力されるログ

Reliable Messagingのコマンドは，Application ServerのJNDIを利用するため，コマンドを実行すると，%HRMDIR%¥logs¥cmd以下にApplication ServerのクライアントのログとTPBrokerの通信トレースファイルを出力します。

8.1.8　UNIXでコマンドを実行する場合の注意事項

UNIXの場合は，次のどちらかの作業を実施してからReliable Messagingのコマンドを実行するようにしてください。

umaskを0に設定する

$HRMDIR/logs以下のファイルおよびディレクトリのアクセス権を，グループやほかのすべてのユーザに対して書き込みを許可するように設定する（rootでコマンドを実行したあとに，Component Container管理ユーザでコマンドを実行する場合）

どちらの作業も実施しないまま，別のユーザがコマンドを実行すると，コマンドの実行がエラーになったり，コマンドのログが不正に残ったりする場合があります。

8.2　コマンドの一覧

Reliable Messagingが提供するコマンドの一覧を次の表に示します。

表8‒1　コマンドの一覧

項番

コマンド名称

機能

開始中状態で実行

実行状態で

実行

管理状態で実行

閉塞状態で実行

永続版

非永続版

永続版

非永続版

永続版

1

hrmchgaddr

あて先変更

×

×

×

×

○

×

2

hrmchgque

ローカルキューの属性変更

受信用共用キューの属性変更

送信用共用キューの属性変更

転送キューの属性変更

×

×

×

×

○※

×

3

hrmdeladdr

あて先削除

×

×

×

×

○

×

4

hrmdelmsg

メッセージの削除

×

×

○

（-fオプション指定時）

○

○

×

5

hrmdelque

キューの削除

×

×

×

×

○※

×

6

hrmlsaddr

あて先表示

×

×

○

×

○

×

7

hrmlsdmsg

デッドメッセージの参照

×

×

○

×

○

×

8

hrmlsmsg

メッセージの表示

×

×

○

○

○

×

9

hrmlsque

キュー情報の表示

×

×

○

○

○

×

10

hrmlsstat

システム状態の表示

○

○

○

○

○

○

11

hrmlstrn

トランザクション状態の表示

×

×

○

○

×

×

12

hrmlstrs

通信状態表示

×

×

○

×

○

×

13

hrmmkaddr

あて先登録

×

×

×

×

○

×

14

hrmmkque

ローカルキューの作成

受信用共用キューの作成

送信用共用キューの作成

転送キューの作成

×

×

×

×

○

×

15

hrmregdmsg

デッドメッセージの再登録

×

×

○

×

○

×

16

hrmskipmsg

受信待ちメッセージのスキップ

×

×

○

×

○

×

17

hrmstart

実行状態への移行

×

×

×

×

○

×

18

hrmstartque

キューの抑止解除

×

×

○

○

○

×

19

hrmstarttrs

送受信抑止解除

×

×

○

×

○

×

20

hrmstop

管理状態への移行

×

×

○

×

×

×

21

hrmstopque

キューの抑止

×

×

○

○

○

×

22

hrmstoptrs

送受信抑止

×

×

○

×

○

×

（凡例）

○：実行できます。

×：実行できません。

注※

初回開始時の場合，または管理状態からの再開始後に実行状態に移行していない管理状態の場合だけ実行できます。

8.3　コマンドの詳細

Reliable Messagingが提供するコマンドの詳細を名前のアルファベット順に説明します。

8.3.1　hrmchgaddr（あて先変更）

(1)　形式

hrmchgaddr 〔-u　あて先アドレス〕 〔-i ユーザID -p パスワード〕
           〔-S　システム名〕 あて先名

(2)　機能

あて先情報テーブルに登録したあて先情報を変更します。

(3)　オプション

-u あて先アドレス

　〜＜1〜512文字の文字列＞

メッセージを転送するあて先アドレスを指定します。

-i ユーザID

　〜＜1〜16文字の英数字＞

BASIC認証のためのユーザIDを指定します。

このオプションは-pオプションと同時に指定してください。このオプションを指定して-pオプションを指定していない場合は，エラーが発生します。

-p パスワード

　〜＜1〜16文字の英数字＞

BASIC認証のためのパスワードを指定します。

このオプションは-iオプションと同時に指定してください。このオプションを指定して-iオプションを指定していない場合は，エラーが発生します。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンド操作対象となるシステムのシステム名（プロパティのRMSystemName）を指定します。

指定を省略した場合は，環境変数に設定されたシステム名を指定したものとみなします。

環境変数にもシステム名が設定されていない場合はエラーが発生します。

(4)　コマンド引数

あて先名

　〜＜1〜32文字の文字列＞

あて先情報に対応する論理名を指定します。

指定したあて先名が存在しない場合はエラーが発生します。また，キューにあて先名が指定されている場合は，そのキュー内のメッセージが転送される前だけ変更できます。

(5)　注意事項

各オプションを省略した場合，その情報は変更しないものとみなされます。すべてのオプションを省略した場合，情報の変更は行わないで，そのままコマンド処理が終了します。

あて先アドレスは，URLの記載ミスなどで存在しないあて先アドレスを指定した場合にかぎり，変更できます。実在するあて先アドレスを指定していてほかのあて先アドレスに変更した場合，メッセージが消滅するおそれがあります。

ユーザIDおよびパスワードを削除する変更はできません。ユーザIDおよびパスワードを削除したい場合は，hrmdeladdrコマンドであて先を削除し，hrmmkaddrコマンドでユーザIDおよびパスワードを指定しないで，再度あて先を登録してください。

-uオプションで，自システムのキュー間転送用WebアプリケーションのURLを指定しないでください。

-pオプションにパスワードを指定した場合，このコマンドの実行中に，プロセスの引数を確認できるOS機能などでパスワードが観測されるおそれがあります。-pオプションを使用する際は，他ユーザがプロセスの引数を確認できるOS機能などを使用できない状況下で，このコマンドを実施してください。

8.3.2　hrmchgque（ローカルキューの属性変更）

(1)　形式

hrmchgque 〔-d {serial｜parallel｜parallel_unit_order}〕
          〔-n 最大メッセージ数〕
          〔-c キャッシュメッセージ数〕 〔-e メッセージ有効期間〕
          〔-w {sender｜receiver}〕 〔-x 表示名〕
          〔-S システム名〕 キュー名

(2)　機能

作成済みのローカルキューの属性を変更します。

非永続版リソースアダプタの場合，キューの属性はキュー作成ファイルの定義によって変更されます。詳細については，「3.5.1　キュー作成ファイルの作成」を参照してください。

(3)　オプション

-d {serial｜parallel｜parallel_unit_order}

ローカルキューのメッセージ取り出しモードを指定します。

serial：シリアル取り出し属性

parallel：パラレル取り出し属性

parallel_unit_order：パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）

キューの永続属性をpersistentに設定したローカルキューに対して，-dオプションでparallel_unit_orderを指定した場合，エラーが発生します。

各属性を指定したときのメッセージの処理については，「2.3.2　メッセージ取り出しモード」を参照してください。

-n 最大メッセージ数

　〜＜数字＞((1〜65535))

ローカルキューに格納するメッセージの最大数を指定します。

-c キャッシュメッセージ数

　〜＜数字＞((0〜65535))

キャッシュに格納するメッセージの数を指定します。

-e メッセージ有効期間

　〜＜数字＞((0〜2592000))（単位：秒）

ローカルキューに格納するメッセージの有効期間を指定します。

0を指定する場合，メッセージの有効期間は無限です。

有効期間を指定するときのメッセージの処理については，「2.3.5　メッセージの有効期間」を参照してください。

-w {sender｜receiver}

転送キューからメッセージを受信する場合，メッセージの有効期間については，送信側の有効期間を使用するのか，または受信側で更新するのかを選択します。転送キューの詳細については，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

sender：送信側の有効期間

receiver：受信側の有効期間

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.2(5)　注意事項」を参照してください。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

属性を変更するローカルキューの名前を指定します。

指定したローカルキューがない場合はエラーが発生します。

(5)　注意事項

各オプションを省略する場合，その属性は変更されません。キュー名だけを指定した場合，属性は変更されないでそのままコマンド処理が終了します。

最大メッセージ数，キャッシュメッセージ数，メッセージ有効期間を変更できるのは，ローカルキューにメッセージがない場合だけです。メッセージがある場合はエラーが発生します。

Reliable Messaging初回開始時の管理状態の場合，または管理状態からの再開始後に実行状態に移行していない管理状態の場合だけ実行できます。それ以外の場合はエラーが発生します。ただし，Reliable Messaging起動直後の管理状態でも，相手システムが起動中の場合，エラーが発生するおそれがあります。

キュー定義ファイルを使用しない場合，変更前の表示名でJNDIネーミングサービスに登録されていたオブジェクトは削除され，-xオプションで指定した変更後の表示名でJNDIネーミングサービスに登録されます。このコマンド実行時に，アプリケーションがJNDIネーミングサービスから該当するキューに対応する値（javax.jms.Queue型のオブジェクト）を取得しているかどうかは，このコマンドの実行結果に影響しません。

8.3.3　hrmchgque（受信用共用キューの属性変更）

(1)　形式

hrmchgque 〔-c キャッシュメッセージ数〕 〔-x 表示名〕
          〔-S システム名〕 キュー名

(2)　機能

作成済みの受信用共用キューの属性を変更します。

(3)　オプション

-c キャッシュメッセージ数

　〜＜数字＞((0〜65535))

キャッシュに格納するメッセージの数を指定します。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.3(5)　注意事項」を参照してください。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

属性を変更する受信用共用キューの名前を指定します。

指定した受信用共用キューがない場合はエラーが発生します。

(5)　注意事項

各オプションを省略する場合，その属性は変更されません。キュー名だけを指定した場合，属性は変更されないでそのままコマンド処理が終了します。

キャッシュメッセージ数を変更できるのは，受信用共用キューにメッセージがない場合だけです。メッセージがある場合はエラーが発生します。

受信用共用キューの最大メッセージ長または最大メッセージ数を変更する場合は，hrmlsqueコマンドでキュー情報を確認してからキューを削除して作成し直してください。または，異なるキューを作成してください。

Reliable Messaging初回開始時の管理状態の場合，または管理状態からの再開始後に実行状態に移行していない管理状態の場合だけ実行できます。それ以外の場合はエラーが発生します。ただし，Reliable Messaging起動直後の管理状態でも，相手システムが起動中の場合，エラーが発生するおそれがあります。

キュー定義ファイルを使用していない場合，変更前の表示名でJNDIネーミングサービスに登録されていたオブジェクトは削除され，-xオプションで指定した変更後の表示名でJNDIネーミングサービスに登録されます。このコマンド実行時に，アプリケーションがJNDIネーミングサービスから該当するキューに対応する値（javax.jms.Queue型のオブジェクト）を取得しているかどうかは，このコマンドの実行結果に影響しません。

8.3.4　hrmchgque（送信用共用キューの属性変更）

(1)　形式

hrmchgque  〔-x 表示名〕 〔-S システム名〕 キュー名

(2)　機能

作成済みの送信用共用キューの属性を変更します。

(3)　オプション

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

属性を変更する送信用共用キューの名前を指定します。

指定した送信用共用キューがない場合はエラーが発生します。

(5)　注意事項

各オプションを省略する場合，その属性は変更されません。キュー名だけを指定した場合，属性は変更されないでそのままコマンド処理が終了します。

Reliable Messaging初回開始時の管理状態の場合，または管理状態からの再開始後に実行状態に移行していない管理状態の場合だけ実行できます。それ以外のときはエラーが発生します。ただし，Reliable Messaging起動直後の管理状態でも，相手システムが起動中の場合，エラーが発生するおそれがあります。

キュー定義ファイルを使用していない場合，変更前の表示名でJNDIネーミングサービスに登録されていたオブジェクトは削除され，-xオプションで指定した変更後の表示名でJNDIネーミングサービスに登録されます。このコマンド実行時に，アプリケーションがJNDIネーミングサービスから該当するキューに対応する値（javax.jms.Queue型のオブジェクト）を取得しているかどうかは，このコマンドの実行結果に影響しません。

8.3.5　hrmchgque（転送キューの属性変更）

(1)　形式

hrmchgque 〔-n 最大メッセージ数〕 〔-c キャッシュメッセージ数〕
          〔-e メッセージ有効期間〕 〔-a あて先名〕
          〔-v 転送先キュー名｜-y〕 〔-i {normal｜compatible}〕
          〔-j {exactly_once｜in_order}〕
          〔-g 通信層のグループ有効期間〕 〔-s 通信層のメッセージ有効期間〕
          〔-x 表示名〕 〔-S システム名〕 キュー名

(2)　機能

作成済みの転送キューの属性を変更します。

(3)　オプション

-n 最大メッセージ数

　〜＜数字＞((1〜65535))

転送キューに格納するメッセージの最大数を指定します。

-c キャッシュメッセージ数

　〜＜数字＞((0〜65535))

キャッシュに格納するメッセージの数を指定します。

-e メッセージ有効期間

　〜＜数字＞((1〜2592000))（単位：秒）

転送キューに格納するメッセージの有効期間を指定します。

有効期間を指定するときのメッセージの処理については，「2.3.5　メッセージの有効期間」を参照してください。

-a あて先名

　〜＜1〜32文字の文字列＞

メッセージを転送するあて先のあて先名を指定します。hrmmkaddrコマンドで，事前にあて先名を登録する必要があります。登録されていないあて先名を指定するとエラーが発生します。

-v 転送先キュー名

　〜＜1〜20文字の識別子＞

メッセージを転送する場合，転送したメッセージを登録する転送キューのキュー名を指定します。転送キューの詳細については，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

-y

-vオプションを省略して，-aオプションで指定したあて先名に対応するあて先アドレスだけを送信アドレスとする場合に指定します。転送キューの詳細については，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

-i {normal｜compatible}

作成するキューの転送モードを指定します。

normal：通常モード

compatible：互換モード

転送先のReliable Messagingのバージョンが01-03以降の場合はnormalを指定します。バージョンが01-02以前の場合はcompatibleを指定します。

normalを指定して作成した転送キューを使用して，01-02以前のReliable Messagingにメッセージを転送した場合，ペイロードが空のメッセージとして受信されることがありますので，注意してください。

-j {exactly_once｜in_order}

転送に使用するQoS（通信品質）の種別を指定します。

exactly_once：配送保証および重複防止

in_order：順序保証

このオプションをin_orderに変更する場合，キューモードは永続キューだけ有効となります。それ以外を指定した場合はエラーが発生します。

-g 通信層のグループ有効期間

　〜＜数字＞((10〜2592000))（単位：秒）

通信層のグループの有効期間を指定します。

転送キューの詳細については，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

-s 通信層のメッセージ有効期間

　〜＜数字＞((10〜2592000))（単位：秒）

通信層のメッセージの有効期間を指定します。

転送キューの詳細については，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.5(5)　注意事項」を参照してください。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

属性を変更する転送キューの名前を指定します。

指定した転送キューがない場合はエラーが発生します。

(5)　注意事項

各オプションを省略する場合，その属性は変更されません。キュー名だけを指定した場合，属性は変更されないでそのままコマンド処理が終了します。

最大メッセージ数，キャッシュメッセージ数，メッセージ有効期間，あて先名，キューの転送モード，QoS，通信層のグループ有効期間，および通信層のメッセージ有効期間を変更できるのは，転送キューにメッセージがない場合だけです。メッセージがある場合はエラーが発生します。

転送先キュー名または-yオプションの指定内容は，次のうちどちらかの状態のときだけ変更できます。

キューにメッセージがない状態

キューに現存するメッセージが転送される前の状態

転送済みのメッセージが存在する場合はエラーが発生します。

Reliable Messaging初回開始時の管理状態の場合，または管理状態からの再開始後に実行状態に移行していない管理状態の場合だけ実行できます。それ以外の場合はエラーが発生します。ただし，Reliable Messaging起動直後の管理状態でも，相手システムが起動中の場合，エラーが発生するおそれがあります。

キュー定義ファイルを使用していない場合，変更前の表示名でJNDIネーミングサービスに登録されていたオブジェクトは削除され，-xオプションで指定した変更後の表示名でJNDIネーミングサービスに登録されます。このコマンド実行時に，アプリケーションがJNDIネーミングサービスから該当するキューに対応する値（javax.jms.Queue型のオブジェクト）を取得しているかどうかは，このコマンドの実行結果に影響しません。

8.3.6　hrmdeladdr（あて先削除）

(1)　形式

hrmdeladdr 〔-S システム名〕 あて先名

(2)　機能

あて先情報テーブルに登録したあて先情報を削除します。

(3)　オプション

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

あて先名

　〜＜1〜32文字の文字列＞

削除したいあて先情報のあて先名を指定します。

キューに指定されていないあて先だけ削除できます。

指定したあて先名が存在しない，またはキューに指定されている場合はエラーが発生します。

8.3.7　hrmdelmsg（メッセージの削除）

(1)　形式

hrmdelmsg 〔-f〕 {-a｜-n メッセージ通番}〔-S システム名〕 キュー名

(2)　機能

キュー内のメッセージを削除します。

永続版リソースアダプタの場合，実行状態でこのコマンドを使用するときは-fオプションを指定してください。

非永続版リソースアダプタの場合，実行状態でこのコマンドを使用するときも-fオプションを指定する必要はありません。

(3)　オプション

-f

永続版リソースアダプタの場合

Reliable Messagingが実行状態でも強制的にメッセージを削除する場合に指定します。

実行状態でこのコマンドを使用する場合は，このオプションを指定しないと，エラーが発生します。

非永続版リソースアダプタの場合

非永続版リソースアダプタでは指定しても無視されます。

-a

コマンド引数に指定したキューに格納されている全メッセージを削除する場合に指定します。

-n メッセージ通番

　〜＜数字＞((1〜65535))

削除するメッセージのメッセージ通番を指定します。

指定するメッセージ通番の上限値は，コマンド引数に指定したキューに定義された最大メッセージ数です。指定したメッセージ通番のメッセージがない場合はエラーが発生します。

永続版リソースアダプタの場合

コマンド引数に指定したキューの種類によって，指定できるメッセージ通番は異なります。詳細については，「8.3.7(5)　注意事項」を参照してください。

非永続版リソースアダプタの場合

非永続版リソースアダプタの場合，キューの種類による通番の違いはありません。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

メッセージを削除するキューの名前を指定します。

指定したキューがない場合はエラーが発生します。

(5)　注意事項

実行状態でコマンドを実行する場合は，-fオプションを指定してください。ただし，タイミングによってはエラーが発生するおそれがあります。そのため，管理状態での実行をお勧めします。

設定できるオプションはキューの種類によって異なります。

hrmdelmsgコマンドで各キューに設定できるオプションを次の表に示します。

表8‒2　hrmdelmsgコマンドで各キューに設定できるオプション

キューの種類

-fオプション

-aオプション

-nオプション

永続版

非永続版

永続版

非永続版

永続版

非永続版

ローカルキュー

○

△※1

○

○

○

○

受信用共用キュー

○

×

○

×

△※2

×

送信用共用キュー※3

×

×

×

×

×

×

転送キュー※4

○

×

○

×

×

×

（凡例）

○：設定できます。

△：設定できます（制限があります）。

×：設定できません（エラーが発生します）。

注※1

非永続版リソースアダプタでは-fオプションを指定しても無視されます（エラーは発生しません）。

注※2

コマンド引数に受信用共用キューを指定する場合，-nオプションで指定できるメッセージ通番は1だけです。1以外を指定したときはエラーが発生します。

注※3

送信用共用キューからはメッセージを削除できません。コマンド引数に送信用共用キューを指定する場合はエラーが発生します。

注※4

キューの種類が転送キューのキュー名を指定し，かつQoS（通信品質）で順序保証を指定した場合，受信側に未配信メッセージが滞留するときがあります。

8.3.8　hrmdelque（キューの削除）

(1)　形式

hrmdelque 〔-f〕 〔-S システム名〕 キュー名

(2)　機能

作成済みのキューを削除します。

非永続版リソースアダプタの場合，キュー作成ファイルの定義を削除することでキューが削除されます。キュー作成ファイルの詳細については，「3.5.1　キュー作成ファイルの作成」を参照してください。

(3)　オプション

-f

コマンド引数に指定したキューにメッセージがあっても強制的にキューを削除するときに指定します。この場合，キューにある全メッセージを削除してからキューが削除されます。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

削除するキューの名前を指定します。

指定したキューがない場合はエラーが発生します。

(5)　注意事項

-fオプションを指定しない場合，コマンド引数に指定したキューにメッセージがあるとエラーが発生します。

受信用共用キューを削除する場合は送信処理を中断してください。送信処理を中断しないとき，送受信処理またはリカバリ処理でエラーが発生するおそれがあります。

キュー間転送で使用しているキューを削除する場合，送信側と受信側のキューを両方削除してください。片方のキューだけ削除すると，メッセージが滞留する場合があります。

初回開始時の場合，または管理状態からの再開始後に実行状態に移行していない管理状態の場合だけ実行できます。それ以外の場合はエラーが発生します。ただし，Reliable Messaging起動直後の管理状態でも，相手システムが起動中の場合，エラーが発生するおそれがあります。

削除するキューをMessage-driven Beanが監視している場合，このコマンドを実行するとエラーが発生します。

閉塞状態のキューは，-fオプションを指定しなくてもメッセージの有無に関係なく，削除されます。また，閉塞した原因によって，キューを削除できない場合があります。対処方法については，キューの閉塞時に出力されたメッセージログを参照してください。

削除対象の共用キューが他システムから参照されている場合は，該当の共用キューを参照しているすべてのコネクションを切断しておいてください。

キュー定義ファイルを使用していない場合，このコマンド実行時に，アプリケーションがJNDIネーミングサービスから該当するキューに対応する値（javax.jms.Queue型のオブジェクト）を取得しているかどうかに関係なく，JNDIネーミングサービスに登録されているオブジェクトは削除されます。

8.3.9　hrmlsaddr（あて先表示）

(1)　形式

hrmlsaddr {-n｜-a あて先名} 〔-S システム名〕

(2)　機能

あて先情報テーブルに登録したあて先名一覧，またはあて先情報を表示します。

(3)　オプション

-n

登録済みのあて先名一覧と登録済みのあて先数を表示します。あて先情報は表示しません。

-a あて先名

　〜＜1〜32文字の文字列＞

表示するあて先情報に対応する論理名を指定します。

指定したあて先名が存在しない場合はエラーが発生します。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　出力形式

-nオプション指定の場合

address name
  aa....aa
    ：
  aa....aa
all address count  ＝  bb....bb

-aオプション指定の場合

address name  ＝  aa....aa
url  ＝  cc....cc
user id  ＝  dd....dd
password  ＝  ee....ee

aa....aa

あて先名（文字列）

bb....bb

全あて先の個数（10進数）

cc....cc

あて先アドレス（文字列）

dd....dd

BASIC認証のためのユーザID（英数字）

BASIC認証を使用しない場合，空白で表示されます。

ee....ee

BASIC認証のためのパスワード（"********"）

BASIC認証を使用しない場合，空白で表示されます。

8.3.10　hrmlsdmsg（デッドメッセージの参照）

(1)　形式

hrmlsdmsg {-i デッドメッセージID｜-n メッセージ通番 〔-e 出力メッセージ数〕}
         〔-o 出力メッセージバイト数〕 〔-p〕 〔-S　システム名〕

(2)　機能

デッドメッセージキュー内のデッドメッセージの情報を表示します。デッドメッセージ情報やメッセージ内容が表示できます。

(3)　オプション

-i デッドメッセージID

　〜＜1〜39文字の識別子＞

表示するデッドメッセージのデッドメッセージID（DMID）を指定します。

指定したDMIDのメッセージがデッドメッセージキュー内にない場合はエラーが発生します。

-n メッセージ通番

　〜＜数字＞((1〜65535))

表示するデッドメッセージのメッセージ通番を指定します。

指定できるメッセージ通番の上限値は，デッドメッセージキューに定義された最大メッセージ数です。指定したメッセージ通番以降にデッドメッセージがない場合は，エラーが発生します。

-e 出力メッセージ数

　〜＜数字＞((1〜100))《1》

表示するメッセージ数を指定します。-nオプションで指定したメッセージ通番から，このオプションに指定した数のデッドメッセージ情報が表示されます。

指定を省略した場合，一つのデッドメッセージ情報が表示されます。キュー内のメッセージ数よりも大きい値を指定した場合は，キュー内のメッセージの範囲で表示されます。

-o 出力メッセージバイト数

　〜＜数字＞((0〜1024))《0》（単位：バイト）

メッセージの内容を表示する場合に，表示するバイト数を指定します。

指定を省略した場合，または0を指定した場合は，メッセージの内容は表示されません。

-p

アプリケーション指定のプロパティを表示する場合に指定します。

JMS定義のプロパティ，およびReliable Messaging固有のプロパティは表示されません。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　出力形式

message number  ＝  aa....aa
dead message id  ＝  bb....bb
original queue name  ＝  cc....cc
original queue type  ＝  dd....dd
cause  ＝  ee....ee
dead message timestamp  ＝  ff....ff
create time  ＝  gg....gg
correlation id  ＝  hh....hh※1
group id  ＝  ii....ii※1
group seq  ＝  jj....jj※1
message id  ＝  kk....kk※1
property※2
 ll....ll  ＝  mm....mm※2※3
    ：
 ll....ll  ＝  mm....mm※2※3
message type  ＝  nn....nn
message length  ＝  oo....oo
message
 00000000[0x pp....pp  pp....pp  pp....pp  pp....pp] qq....qq
                             ：
 00000000[0x pp....pp  pp....pp  pp....pp  pp....pp] qq....qq

注※1

次の場合は表示されません。

デッドメッセージ移動元が受信用共用キューの場合

転送されたBytesContainerメッセージの場合

メッセージ登録時に設定していない場合

注※2

-pオプションで，プロパティ表示を指定した場合に表示されます。

注※3

次の場合は表示されません。

デッドメッセージ移動元が受信用共用キューの場合

BytesContainerメッセージの場合

アプリケーション指定のプロパティが未設定の場合

メッセージのユニット識別子のプロパティ（JMS_HITACHI_UnitID）は表示されません。

aa....aa

メッセージ通番（10進数）

bb....bb

デッドメッセージID（文字列）

cc....cc

デッドメッセージキュー移動前のキュー名（文字列）

dd....dd

デッドメッセージキュー移動前のキューの種類

LOCAL：ローカルキュー

SHARE_RECEIVE：受信用共用キュー

TRANSMIT：転送キュー

ee....ee

デッドメッセージキュー移動原因（文字列）

表示文字列は，API仕様のReliable Messaging固有のプロパティでの「JMS_HITACHI_DeadMessageCause」に設定される文字列と同じです。

ff....ff

デッドメッセージキュー移動時間（文字列）

gg....gg

メッセージ生成時刻（文字列）

デッドメッセージキュー移動元が受信用共用キューの場合，または転送されたBytesContainerメッセージの場合，****/**/** **:**:**.*** (*************)が表示されます。

hh....hh

JMSCorrelationID（文字列）

ii....ii

JMSXGroupID（文字列）

jj....jj

JMSXGroupSeq（10進数）

kk....kk

JMSMessageID（文字列）

ll....ll

プロパティ名（文字列）

mm....mm

プロパティ値（文字列）

プロパティの型の文字列表現で表示されます。プロパティ値にnullを設定した場合は表示されません。

nn....nn

メッセージ種別

TEXT_MESSAGE：テキストメッセージ

BYTE_MESSAGE：バイトメッセージ

OBJECT_MESSAGE：オブジェクトメッセージ

OBJECT_MESSAGE(BYTES_CONTAINER)：BytesContainerメッセージ

MESSAGE：メッセージ

BytesContainerについては，「7.8.2　BytesContainerインタフェース」を参照してください。

oo....oo

メッセージ長（10進数）

メッセージ種別がTEXT_MESSAGE，またはBYTE_MESSAGEの場合だけ表示されます。

pp....pp

メッセージ内容（16進数）

qq....qq

メッセージ内容（文字列）

次に示す文字以外の文字データがメッセージ中にある場合，その文字データはピリオド（.）に変換して出力されます。

半角文字の英数字

半角文字のパーセント（%），スラント（/），ピリオド（.），アンダースコア（_）および空白（ ）

(5)　注意事項

対象のデッドメッセージキューは，RMDeadMessageQueueNameプロパティで指定したキューです。

次のメッセージは表示されません。

アプリケーションで登録したメッセージ

Reliable Messaging 01-01以前にデッドメッセージキューに移動したメッセージ

表示されるメッセージ通番は，デッドメッセージキュー内で先頭メッセージから順番に通し番号を振られています。表示されないメッセージ（アプリケーションで登録したメッセージ，Reliable Messaging 01-01以前にデッドメッセージキューに移動したメッセージ）が混在している場合，表示されるメッセージ通番は連続しないことがあります。

表示できるメッセージの内容は，バイトおよびテキスト型のメッセージだけです。

8.3.11　hrmlsmsg（メッセージの表示）

(1)　形式

hrmlsmsg -n メッセージ通番 〔-e 出力メッセージ数〕
        〔-o 出力メッセージバイト数〕
        〔-S システム名〕 キュー名

(2)　機能

キュー内のメッセージの情報を表示します。メッセージ属性やメッセージ内容が表示されます。また，アプリケーションが取り出せるメッセージの一覧が表示されます。

転送キューの場合は，転送前または転送処理中のメッセージ一覧が表示されます。

(3)　オプション

-n メッセージ通番

　〜＜数字＞((1〜65535))

表示するメッセージのメッセージ通番を指定します。

指定できるメッセージ通番の上限値は，コマンド引数に指定したキューに定義された最大メッセージ数です。指定したメッセージ通番のメッセージがない場合はエラーが発生します。

-e 出力メッセージ数

　〜＜数字＞((1〜100))《1》

表示するメッセージ数を指定します。-nオプションで指定したメッセージ通番のメッセージを先頭にして，このオプションに指定した数のメッセージが表示されます。

キューにあるメッセージ数よりも大きい値を指定した場合は，キューにある範囲で表示されます。

-o 出力メッセージバイト数

　〜＜数字＞((0〜1024))《0》（単位：バイト）

メッセージ内容を表示する場合に，表示するバイト数を指定します。

指定を省略した場合，または0を指定した場合は，メッセージ内容は表示されません。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

表示するメッセージがあるキューの名前を指定します。

指定したキューがない場合または送信用共用キューを指定した場合は，エラーが発生します。

(5)　出力形式

ローカルキューを指定する場合（永続版リソースアダプタの場合）

message number  ＝  aa....aa
queue name ＝ bb....bb
original queue name  ＝  cc....cc※
cause  ＝  dd....dd※
fifo id ＝ ee....ee
sequence number  ＝  ff....ff
create time  ＝  gg....gg
modify time  ＝  hh....hh
expiry time  ＝  ii....ii
entry time  ＝  jj....jj
delete flag  ＝  kk....kk
priority  ＝  ll....ll
correlation id  ＝  mm....mm
group id  ＝  nn....nn
group seq  ＝  oo....oo
message id  ＝  pp....pp
redelivery flag  ＝  qq....qq
delivery count  ＝  rr....rr
message unit id  ＝  xx....xx
message type  ＝  ss....ss
message length  ＝  tt....tt
message
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv
                              ：
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv

注※

デッドメッセージキューを指定した場合だけ表示します。

ローカルキューを指定する場合（非永続版リソースアダプタの場合）

message number  ＝  aa....aa
queue name ＝ bb....bb
fifo id ＝ ee....ee
sequence number  ＝  ff....ff
create time  ＝  gg....gg
modify time  ＝  hh....hh
expiry time  ＝  ii....ii
entry time  ＝  jj....jj
delete flag  ＝  kk....kk
priority  ＝  ll....ll
correlation id  ＝  mm....mm
group id  ＝  nn....nn
group seq  ＝  oo....oo
message id  ＝  pp....pp
redelivery flag  ＝  qq....qq
delivery count  ＝  rr....rr
message unit id  ＝  xx....xx
message type  ＝  ss....ss
message length  ＝  tt....tt
message
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv
                              ：
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv

受信用共用キューを指定する場合

message number  ＝  aa....aa
queue name  ＝  bb....bb
internal message number  ＝  ww....ww
message length  ＝  ss....ss
message
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv
                              ：
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv

転送キューを指定する場合

message number  ＝  aa....aa
queue name  ＝  bb....bb
fifo id ＝ ee....ee
sequence number  ＝  ff....ff
create time  ＝  gg....gg
modify time  ＝  hh....hh
expiry time  ＝  ii....ii
entry time  ＝  jj....jj
delete flag  ＝  kk....kk
priority  ＝  ll....ll
correlation id  ＝  mm....mm
group id  ＝  nn....nn
group seq  ＝  oo....oo
message id  ＝  pp....pp
message type  ＝  ss....ss
message length  ＝  tt....tt
message
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv
                              ：
 00000000[0x uu....uu  uu....uu  uu....uu  uu....uu] vv....vv

aa....aa

メッセージ通番（10進数）

bb....bb

キュー名（文字列）

cc....cc

デッドメッセージキュー移動前キュー名（文字列）

dd....dd

デッドメッセージキュー移動原因（文字列）

表示文字列は，API仕様のReliable Messaging固有のプロパティで，「JMS_HITACHI_DeadMessageCause」に設定される文字列と同じです。

ee....ee

FIFO ID（文字列）

ff....ff

シーケンス番号（10進数）

gg....gg

メッセージ生成時刻（文字列）

永続版リソースアダプタの場合，受信用共用キューからデッドメッセージキューへ移動されたメッセージのとき，または転送キューからローカルキューへ転送されたBytesContainerメッセージのときは，****/**/** **:**:**.*** (*************)が表示されます。

hh....hh

メッセージ更新時刻（文字列）

永続版リソースアダプタの場合，受信用共用キューからデッドメッセージキューへ移動されたメッセージのとき，または転送キューからローカルキューへ転送されたBytesContainerメッセージのときは，****/**/** **:**:**.*** (*************)が表示されます。

ii....ii

メッセージ有効期間（文字列）

無限の場合，0が表示されます。

jj....jj

メッセージ登録時刻（文字列）

kk....kk

メッセージ削除（可否）フラグ

次に示すどちらかが表示されます。

DELETE：削除できます。

NO_DELETE：削除不可です。

ll....ll

メッセージ優先度（10進数）

mm....mm

JMSCorrelationID（文字列）

メッセージ登録時に設定されていない場合，空白が表示されます。

nn....nn

JMSXGroupID（文字列）

メッセージ登録時に設定されていない場合，空白が表示されます。

oo....oo

JMSXGroupSeq（10進数）

メッセージ登録時に設定されていない場合，空白が表示されます。

pp....pp

JMSMessageID（文字列）

メッセージ登録時に設定されていない場合，空白が表示されます。

qq....qq

メッセージの再配送フラグ

次に示すどちらかが表示されます。

NON_REDELIVERY：再配送していません。

REDELIVERY：再配送しました。

rr....rr

メッセージの配送回数（10進数）

ss....ss

メッセージ種別

永続版リソースアダプタの場合

次に示すどれかが表示されます。

・TEXT_MESSAGE：テキストメッセージ

・BYTE_MESSAGE：バイトメッセージ

・OBJECT_MESSAGE：オブジェクトメッセージ

・OBJECT_MESSAGE(BYTES_CONTAINER)：BytesContainerメッセージ

・MESSAGE：メッセージ

BytesContainerについては，「7.8.2　BytesContainerインタフェース」を参照してください。

非永続版リソースアダプタの場合

次に示すどれかが表示されます。

・TEXT_MESSAGE：テキストメッセージ

・BYTE_MESSAGE：バイトメッセージ

・OBJECT_MESSAGE：オブジェクトメッセージ

・MESSAGE：メッセージ

tt....tt

メッセージ長（10進数）

メッセージ種別がTEXT_MESSAGEまたはBYTE_MESSAGEの場合だけ表示されます。

uu....uu

メッセージ内容（16進数）

vv....vv

メッセージ内容（文字列）

次に示す文字以外の文字データがメッセージ中にある場合，その文字データはピリオド（.）に変換して出力されます。

半角文字の英数字

半角文字のパーセント（%），スラント（/），ピリオド（.），アンダースコア（_）および空白（ ）

ww....ww

内部メッセージ通番（10進数）

xx....xx

メッセージのユニット識別子（文字列）

メッセージ識別子を設定しないまたはNULLと設定した場合，空白で表示されます。

デッドメッセージキューに移動したメッセージでは，空白で表示されます。

キューモードが永続の場合や転送機能によってキューに格納されたメッセージでは，メッセージに設定したユニット識別子は表示されます。

(6)　注意事項

表示できるメッセージの内容は，バイトおよびテキスト型のメッセージだけです。

BytesContainerメッセージをローカルキューに登録した場合，ローカルキューに登録したときの情報が表示されます。

非永続版リソースアダプタの場合，ローカルキュー内のメッセージ情報だけが表示されます。

8.3.12　hrmlsque（キュー情報の表示）

(1)　形式

hrmlsque {-n｜-q キュー名} 〔-S システム名〕

(2)　機能

作成済みのキュー名一覧および作成済みのキュー情報を表示します。

(3)　オプション

-n

作成済みのキュー名一覧とキューの数が出力されます。キュー情報は出力されません。

-q キュー名

　〜＜1〜20文字の識別子＞

キュー情報を表示するキューの名前を指定します。

非永続版リソースアダプタの場合は，ローカルキューだけ指定できます。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　出力形式

-nオプションを指定する場合

queue name
  aa....aa
    ：
  aa....aa
all queue count  ＝  yy....yy

-qオプションにキュー名を指定する場合

ローカルキューのとき

queue name  ＝  aa....aa
display name  ＝  NN....NN
queue mode  ＝  bb....bb
queue type  ＝  cc....cc
create date  ＝  dd....dd
modify date  ＝  ee....ee
ap delivery mode  ＝  ff....ff
max message number  ＝  hh....hh
max cache message number  ＝  ii....ii
expiry time  ＝  jj....jj
local fifo id  ＝  kk....kk
queue state  ＝  ll....ll
message count  ＝  uu....uu
delivered message count  ＝  vv....vv
total message count  ＝  ww....ww
cache message count  ＝  xx....xx
expiry time pattern  ＝  BB....BB

受信用共用キューのとき

queue name  ＝  aa....aa
display name  ＝  NN....NN
queue mode  ＝  bb....bb
queue type  ＝  cc....cc
share queue version  ＝  MM....MM
create date  ＝  dd....dd
modify date  ＝  ee....ee
ap delivery mode  ＝  ff....ff
max message size  ＝  gg....gg
max message number  ＝  hh....hh
max cache message number  ＝  ii....ii
local fifo id  ＝  kk....kk
queue state  ＝  ll....ll
message count  ＝  uu....uu
cache message count  ＝  xx....xx

送信用共用キューのとき

queue name  ＝  aa....aa
display name  ＝  NN....NN
queue mode  ＝  bb....bb
queue type  ＝  cc....cc
share queue version  ＝  MM....MM
create date  ＝  dd....dd
modify date  ＝  ee....ee
ap delivery mode  ＝  ff....ff
max message size  ＝  gg....gg
local fifo id  ＝  kk....kk
queue state  ＝  ll....ll
share queue host  ＝  mm....mm
share queue port  ＝  nn....nn
share queue name  ＝  oo....oo

転送キューのとき

queue name  ＝  aa....aa
display name  ＝  NN....NN
queue mode  ＝  bb....bb
queue type  ＝  cc....cc
create date  ＝  dd....dd
modify date  ＝  ee....ee
max message number  ＝  hh....hh
max cache message number  ＝  ii....ii
expiry time  ＝  jj....jj
local fifo id  ＝  kk....kk
queue state  ＝  ll....ll
message count  ＝  uu....uu
delivered message count  ＝  vv....vv
total message count  ＝  ww....ww
cache message count  ＝  xx....xx
address name  ＝  CC....CC
url  ＝  DD....DD
address queue name  ＝  EE....EE
user id  ＝  FF....FF
password  ＝  GG....GG
transmission mode  ＝  HH....HH
qos  ＝  II....II
transmission group expiry time  ＝  KK....KK
transmission expiry time  ＝  LL....LL

aa....aa

キュー名（文字列）

bb....bb

キューモード

永続版リソースアダプタの場合

次に示すどちらかが表示されます。

・PERSISTENT：永続キュー

・NON_PERSISTENT：非永続キュー

受信用共用キューおよび送信用共用キューの場合はPERSISTENTが表示されます。

非永続版リソースアダプタの場合

・NON_PERSISTENT：非永続キュー

cc....cc

キュータイプ

永続版リソースアダプタの場合

次に示すどれかが表示されます。

・LOCAL：ローカルキュー

・SHARE_RECEIVE：受信用共用キュー

・SHARE_SEND：送信用共用キュー

・TRANSMIT：転送キュー

非永続版リソースアダプタの場合

・LOCAL：ローカルキュー

dd....dd

永続版リソースアダプタの場合

キューを作成した日付（文字列）

非永続版リソースアダプタの場合

キュー作成ファイルを読み込んだときの日付が表示されます。キュー作成ファイルについては，「3.5.1　キュー作成ファイルの作成」を参照してください。

ee....ee

永続版リソースアダプタの場合

キューを更新した日付（文字列）

非永続版リソースアダプタの場合

キューを作成した日付（dd....dd）と同じ値が表示されます。

ff....ff

メッセージ取り出しモード

次に示すどちらかが表示されます。

SERIAL：シリアル取り出し属性

PARALLEL：パラレル取り出し属性

PARALLEL_UNIT_ORDER：パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）

永続版リソースアダプタの受信用共用キューおよび送信用共用キューの場合はSERIALが表示されます。

gg....gg

最大メッセージ長（10進数）

hh....hh

最大メッセージ数（10進数）

ii....ii

永続版リソースアダプタの場合

最大キャッシュメッセージ数（10進数）

非永続版リソースアダプタの場合

最大メッセージ数（hh....hh）と同じ値が表示されます。

jj....jj

メッセージの有効期間（10進数）

kk....kk

ローカル書き込み用のFIFO ID（文字列）

FIFO IDは管理情報としてシステム内部で使用しているキュー情報です。

ll....ll

キューの状態（文字列）

永続版リソースアダプタの場合

次に示すどれかが表示されます。

・NORMAL：正常状態

・AP_SEND_DISABLED：メッセージの送信抑止状態

・AP_RECEIVE_DISABLED：メッセージの受信抑止状態

・TRS_SEND_DISABLED：キュー間転送メッセージの送信抑止状態

・TRS_RECEIVE_DISABLED：キュー間転送メッセージの受信抑止状態

・BLOCKED：閉塞状態

複数の抑止をしている場合は，これらがすべて表示されます。閉塞状態のキューは，hrmlsqueコマンドとhrmdelqueコマンド以外は受け付けません。また，キューが閉塞状態にある場合に出力される形式は異なります。詳細は「8.3.12(5)　注意事項」を参照してください。

非永続版リソースアダプタの場合

次に示すどれかが表示されます。

・NORMAL：正常状態

・AP_SEND_DISABLED：メッセージの送信抑止状態

・AP_RECEIVE_DISABLED：メッセージの受信抑止状態

複数の抑止をしている場合は，これらがすべて表示されます。

mm....mm

共用キューを使用して複数システム間でのアプリケーション連携をする場合のイベント送信先ホスト名またはIPアドレス（文字列）

nn....nn

共用キューを使用して複数システム間でのアプリケーション連携をする場合のイベント送信先ポート番号（10進数）

oo....oo

共用キューを使用して複数システム間でのアプリケーション連携をする場合の登録先キュー名（文字列）

uu....uu

仕掛かり中メッセージ数（10進数）

未配信メッセージの数です。有効期限切れメッセージおよび受信処理中メッセージの数を含みます。

転送キューの場合，転送待ちメッセージの数および転送処理中メッセージの数も含みます。

vv....vv

配送済みメッセージ数（10進数）

ローカルキューの場合，hrmdelmsgコマンドによって削除されたメッセージなども数に含みます。

転送キューの場合，Acknowledgment受信済みメッセージの数が表示されます。

ww....ww

総メッセージ数（10進数）

仕掛かり中メッセージの数，配信済みメッセージの数および滞留メッセージの数の和です。

転送キューの場合，滞留メッセージの数は常に0となります。

xx....xx

キャッシュに格納されているメッセージ数（10進数）

ローカルキューの場合，キャッシュに格納されている滞留メッセージの数も含みます。

yy....yy

全キューの個数（10進数）

BB....BB

メッセージ有効期間の選択

永続版リソースアダプタの場合

次に示すどちらかが表示されます。

・SENDER：送信側の有効期間

・RECEIVER：受信側の有効期間

非永続版リソースアダプタの場合

「***」が表示されます。

CC....CC

あて先名（文字列）

DD....DD

あて先アドレス（文字列）

EE....EE

転送先キュー名 （識別子）

転送先キューを使用しない場合，空白で表示されます。

FF....FF

BASIC認証のためのユーザID（英数字）

BASIC認証を使用しない場合，空白で表示されます。

GG....GG

BASIC認証のためのパスワード（"********"）

BASIC認証を使用しない場合，空白で表示されます。

HH....HH

転送モード

永続版リソースアダプタの転送キューの場合，次に示すどちらかが表示されます。

NORMAL：通常モード

COMPATIBLE：互換モード

II....II

QoS（通信品質）の種別

次に示すどちらかが表示されます。

EXACTLY_ONCE：配送保証および重複防止

IN_ORDER：順序保証

KK....KK

通信層のグループ有効期間（10進数）

LL....LL

通信層のメッセージ有効期間（10進数）

MM....MM

共用キューのバージョン

送信用共用キューの場合は，対応する受信用共用キューのバージョンを表示します。

NN....NN

キューに対応する表示名（文字列）

キュー定義ファイルの使用有無に関係なく出力します。表示名が指定されていない場合は，キュー名称が表示名として出力されます。

(5)　注意事項

キューが閉塞状態であった場合，次の形式で出力されます。

queue name  ＝  aa....aa
queue type  ＝  cc....cc
queue state  =  BLOCKED

Reliable Messaging起動時に，キューの種類の値不正によってキューが閉塞した場合は，queue typeには"UNKNOWN"が出力されます。キューの閉塞状態および閉塞した場合の対処方法については「9.4　キューの障害」，またはキューが閉塞するときに出力されるメッセージログを参照してください。

非永続版リソースアダプタではキューは閉塞しないため，"BLOCKED"は表示されません。

送信用共用キューの参照時に，メッセージの送信先のシステムが停止中などでイベントが送信できない場合，share queue hostとshare queue portの値は空白で表示されることがあります。

送信用共用キューの参照時に，対応する受信用共用キューが接続先のDB上に存在しない場合，エラーが発生します。

非永続版リソースアダプタの場合，ローカルキューについてのキュー情報だけが表示されます。

8.3.13　hrmlsstat（システム状態の表示）

(1)　形式

hrmlsstat 〔-S システム名〕

(2)　機能

Reliable Messagingの内部状態を表示します。Reliable Messagingの内部状態については，次の個所を参照してください。

永続版リソースアダプタの場合「4.1.4　Reliable Messagingの状態遷移（永続版リソースアダプタの場合）」

非永続版リソースアダプタの場合「5.1.4　Reliable Messagingの状態遷移（非永続版リソースアダプタの場合）」

(3)　オプション

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　出力形式

system status  ＝  aa....aa

aa....aa

システム状態が表示されます。

次に示すどれかが表示されます。

永続版リソースアダプタの場合

・EXECUTED_STATE：実行状態

・MANAGED_STATE：管理状態

・BLOCKADE_STATE：閉塞状態

・CREATED_STATE：開始中状態

非永続版リソースアダプタの場合

・EXECUTED_STATE：実行状態

・BLOCKADE_STATE：閉塞状態

・CREATED_STATE：開始中状態

8.3.14　hrmlstrn（トランザクション状態の表示）

(1)　形式

hrmlstrn 〔-S システム名〕

(2)　機能

トランザクションの状態を表示します。

(3)　オプション

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　出力形式

ローカルトランザクションの場合

timestamp ＝ aa....aa
transaction id
  bb....bb
transaction state ＝ cc....cc

トランザクションマネジャでのグローバルトランザクションの場合

timestamp ＝ aa....aa
transaction id
   XID(dd....dd,ee....ee)
transaction state ＝ cc....cc

aa....aa

トランザクション開始時刻（文字列）

YYYY/MM/DD hh:mm:ssの形式で表示されます。不明の場合はアスタリスク（*）が表示されます。

YYYY：西暦

MM：月

DD：日

hh：時間

mm：分

ss：秒

bb....bb

ローカルトランザクション識別子（文字列）

cc....cc

トランザクションの状態（文字列）

次に示すどれかが表示されます。

永続版リソースアダプタの場合

・NON_EXISTENT：初期状態

・ACTIVE：トランザクション処理中

・IDLE：トランザクション指示待ち

・PREPARED：トランザクション決着指示待ち

・ROLLBACK_ONLY：ロールバック指示待ち

・HEURISTIC_COMPLETED（詳細情報）：ヒューリスティック決着済み

　詳細情報として，次に示すどちらかが表示されます。

・HEURCOM：ヒューリスティックコミット

・HEURRB：ヒューリスティックロールバック

・PREPARED_OR_HEURISTIC：トランザクション決着指示待ちまたは

　ヒューリスティック決着済み

・LOCAL_ACTIVE：ローカルトランザクション処理中

非永続版リソースアダプタの場合

・LOCAL_ACTIVE：ローカルトランザクション処理中

次に示すオプションは永続版リソースアダプタでだけ使用できます。

dd....dd

グローバルトランザクション識別子（文字列）

ee....ee

ブランチ識別子（文字列）

(5)　注意事項

アプリケーションが使用するトランザクションの状態だけが表示されます。Reliable Messagingが内部で使用するトランザクションの状態は表示されません。

非永続版リソースアダプタの場合，ローカルトランザクションの状態だけ表示されます。

8.3.15　hrmlstrs（通信状態表示）

(1)　形式

hrmlstrs {-n｜-g グループID} 〔-m 通信層グループ内メッセージ通番〕
         〔-e 出力メッセージ数〕〔-S システム名〕 キュー名

(2)　機能

メッセージ転送中に通信層のグループの状態やグループ内のメッセージ通信状態を表示します。

(3)　オプション

-n

キューに存在する通信層のグループID一覧と送信用/受信用の種別，グループの有効/無効を表示します。

-g グループID

　〜＜1〜256文字の文字列＞

通信状態を参照するグループのグループIDを指定します。

グループが無効の場合はグループの参照はできません。グループが無効の場合にこのオプションを指定するとエラーが発生します。

-m 通信層グループ内メッセージ通番

　〜＜数字＞((1〜65535))

出力するメッセージのメッセージ通番を指定します。指定するメッセージ通番の上限値は，指定したキューに定義された最大メッセージ数となります。

指定したメッセージ通番のメッセージが指定したキュー内に存在しない場合はエラーが発生します。-gオプションを指定していて，さらに指定したグループが有効の場合だけ指定できます。-gオプションを指定しない，または指定したグループが無効であった場合，このオプションを指定するとエラーが発生します。

-e 出力メッセージ数

　〜＜数字＞((1〜100))《1》

メッセージ情報を表示するメッセージ数を指定します。-mオプションで指定したメッセージ通番から，このオプションで指定された出力メッセージ数のメッセージ情報を表示します。指定を省略した場合，1メッセージ情報を表示します。

組み込まれているメッセージ数より大きい値を指定した場合は，組み込まれているメッセージ数までを表示します。

-gと-mオプションを両方指定したときだけ，このオプションは有効です。それ以外の場合はエラーが発生します。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

状態を参照するキューの名前を指定します。

指定したキューが存在しない，またはローカルキュー，転送キュー以外のキューを指定した場合はエラーが発生します。

(5)　注意事項

表示されるメッセージ通番は通信層のグループ内の通番です。hrmlsmsgコマンドで表示されるmessage numberと異なります。また，通信層グループ内メッセージ有効期限に到達したメッセージは出力対象になりません。

(6)　出力形式

-nオプション指定の場合

transmission group id : group type : group state
  aa....aa: bb....bb: cc....cc
     ：        ：        ：
  aa....aa: bb....bb: cc....cc
all group count = dd....dd

-gオプション グループID指定の場合

受信用グループのとき

transmission group id  ＝  aa....aa
qos  ＝  ee....ee
non received messages  ＝  ff....ff....ff....ff  (FF....FF)
skipped messages  ＝  gg....gg....gg....gg  (GG....GG)
transmission group expiry time  ＝  hh....hh

送信用グループのとき

transmission group id  ＝  aa....aa
qos  ＝  ee....ee
delivering messages  ＝  ii....ii....ii....ii (II....II)
transmission group expiry time  ＝  hh....hh

-gオプション グループID　-mオプション 1 指定の場合

transmission group message number  ＝  jj....jj
transmission sequence number ＝ kk....kk
message state  ＝  ll....ll
correlation id  ＝  mm....mm
group id  ＝  nn....nn
group seq  ＝  oo....oo
message id  ＝  pp....pp
transmission expiry time  ＝  qq....qq

aa....aa

通信層のグループID（文字列）

bb....bb

グループの種別

次に示すどちらかが表示されます。

SEND：送信用グループ

RECEIVE：受信用グループ

cc....cc

グループの状態

次に示すどちらかが表示されます。

NOT_CLOSED：有効

CLOSED：無効

dd....dd

グループの総数（10進数）

ee....ee

QoS（通信品質）の種別

次に示すどちらかが表示されます。

EXACTLY_ONCE：配送保証および重複防止

IN_ORDER：順序保証

ff....ff (FF....FF)

受信待ち（未受信）シーケンス番号（受信待ちメッセージ総数）（10進数）

受信済みシーケンス番号の最大値未満のシーケンス番号で最大10メッセージが表示されます。

gg....gg (GG....GG)

スキップ済みシーケンス番号（スキップ済みメッセージ総数）（10進数）

受信待ちスキップコマンドでスキップされたシーケンス番号で最大10メッセージが表示されます。

hh....hh

通信層グループ有効期限（文字列）

ii....ii (II....II)

転送中シーケンス番号（転送中メッセージ総数）（10進数）

最大10メッセージが表示されます。

jj....jj

通信層グループ内メッセージ通番（10進数）

kk....kk

通信層グループ内シーケンス番号（10進数）

ll....ll

メッセージ状態

次に示すどちらかが表示されます。

NON_DELIVERED：配信待ちまたは転送待ち

DELIVERING：転送中

再起動後の未送信メッセージも含みます。

mm....mm

JMSCorrelationID（文字列）

メッセージ登録時に設定されていない場合，空白が表示されます。

nn....nn

JMSXGroupID（文字列）

メッセージ登録時に設定されていない場合，空白が表示されます。

oo....oo

JMSXGroupSeq（10進数）

メッセージ登録時に設定されていない場合，空白が表示されます。

pp....pp

JMSMessageID（文字列）

メッセージ登録時に設定されていない場合，空白が表示されます。

qq....qq

通信層グループ内メッセージ有効期限（文字列）

8.3.16　hrmmkaddr（あて先登録）

(1)　形式

hrmmkaddr -u あて先アドレス 〔-i ユーザID -p パスワード〕
        〔-S システム名〕 あて先名

(2)　機能

サーバ間転送に使用するあて先情報を，あて先情報テーブルに登録します。

(3)　オプション

-u あて先アドレス

　〜＜1〜512文字の文字列＞

メッセージを転送するあて先アドレスを指定します。

転送先システムのキュー間転送用WebアプリケーションのURLを指定してください。なお，指定する文字列は，RFC2396で規定された文字とします。

-i ユーザID

　〜＜1〜16文字の英数字＞

BASIC認証のためのユーザIDを指定します。

このオプションは-pオプションと同時に指定してください。このオプションを指定して-pオプションを指定していない場合は，エラーが発生します。

-p パスワード

　〜＜1〜16文字の英数字＞

BASIC認証のためのパスワードを指定します。

このオプションは-iオプションと同時に指定してください。このオプションを指定して-iオプションを指定していない場合は，エラーが発生します。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンド操作対象となるシステムのシステム名（プロパティのRMSystemName）を指定します。

指定を省略した場合は，環境変数に設定されたシステム名を指定したものとみなされます。

環境変数にもシステム名が設定されていない場合はエラーが発生します。

(4)　コマンド引数

あて先名

　〜＜1〜32文字の識別子＞

あて先情報に対応する論理名を指定します。

指定したあて先名がすでに実在する場合はエラーが発生します。

(5)　注意事項

転送キューはこのコマンドのあて先名に対応するあて先情報を基にメッセージを転送します。

-uオプションで，自システムのキュー間転送用WebアプリケーションのURLを指定しないでください。

-pオプションにパスワードを指定した場合，このコマンドの実行中に，プロセスの引数を確認できるOS機能などでパスワードが観測されるおそれがあります。-pオプションを使用する際は，他ユーザがプロセスの引数を確認できるOS機能などを使用できない状況下で，このコマンドを実施してください。

8.3.17　hrmmkque（ローカルキューの作成）

(1)　形式

hrmmkque -t local 〔-m {persistent｜non_persistent}〕
        〔-d {serial｜parallel｜parallel_unit_order}〕
        〔-n 最大メッセージ数〕
        〔-c キャッシュメッセージ数〕 〔-e メッセージ有効期間〕
        〔-w {sender｜receiver}〕 〔-x 表示名〕
        〔-r RDエリア名〕 〔-S システム名〕 キュー名

(2)　機能

指定されたキュー属性で，ローカルキューを作成します。

非永続版リソースアダプタの場合，キューはキュー作成ファイルの定義によって作成されます。キュー作成ファイルの詳細については，「3.5.1　キュー作成ファイルの作成」を参照してください。

(3)　オプション

-t local

作成するキューの種類を指定します。ローカルキューが指定されます。

-m {persistent｜non_persistent}

　〜《persistent》

作成するキューの永続性を指定します。

persistent：永続キュー属性

non_persistent：非永続キュー属性

各属性を指定したときのメッセージの処理については，「2.3.1　キューの永続性」を参照してください。

-d {serial｜parallel｜parallel_unit_order}

　〜《parallel》

作成するキューのメッセージ取り出しモードを指定します。

serial：シリアル取り出し属性

parallel：パラレル取り出し属性

parallel_unit_order：パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）

parallel_unit_orderを指定する場合は，-mオプションでnon_persistentを指定してください。指定しない場合は，エラーとなります。

各属性を指定したときのメッセージの処理については，「2.3.2　メッセージ取り出しモード」を参照してください。

-n 最大メッセージ数

　〜＜数字＞((1〜65535))《1024》

キューに格納するメッセージの最大数を指定します。

-c キャッシュメッセージ数

　〜＜数字＞((0〜65535))《最大メッセージ数》

キャッシュに格納するメッセージの数を指定します。

指定を省略した場合，-nオプションに指定する最大メッセージ数が設定されます。0を指定する場合，キャッシュにメッセージは格納されません。

このオプションに大きな値を指定する場合，メモリを消費しますがメッセージ受信の性能が向上します。小さい値を指定する場合，メモリの消費は抑えられますが，DBアクセス回数が増えることによってメッセージ受信の性能が低下します。

-e メッセージ有効期間

　〜＜数字＞((0〜2592000))《0》（単位：秒）

キューに格納するメッセージの有効期間を指定します。

0を指定する場合，メッセージの有効期間は無限です。

有効期間を指定するときのメッセージの処理については，「2.3.5　メッセージの有効期間」を参照してください。有効期間に達すると，そのメッセージはデッドメッセージとして扱われます。

-w {sender｜receiver}

　〜《sender》

転送キューからメッセージを受信する場合，メッセージの有効期間については，送信側の有効期間を使用するのか，または受信側で更新するのかを選択します。転送キューの詳細については，「8.3.20　hrmmkque（転送キューの作成）」を参照してください。

sender：送信側の有効期間

receiver：受信側の有効期間

receiverを指定した場合，-eオプションで指定した値がメッセージの有効期間となります。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.17(5)　注意事項」を参照してください。

-r RDエリア名

　〜＜1〜30文字の識別子および空白＞

メッセージ情報テーブルを格納するRDエリアの名前を指定します。

このオプションを指定する場合，メッセージ情報テーブルを格納するRDエリアをあらかじめ用意してください。HiRDBのRDエリアの作成については，マニュアル「HiRDB コマンドリファレンス」を参照してください。

このオプションを省略する場合，格納するRDエリアをHiRDBが決定します。HiRDBが決定するRDエリアについては，マニュアル「HiRDB SQLリファレンス」を参照してください。

なお，-mオプションで"non_persistent"を指定した場合またはDBにOracleを使用している場合，このオプションの指定値は無効になります。

注意

RDエリア名に空白を含む場合は，次のように指定してください。

Windowsの場合

引用符（"）で囲んでください。

UNIXの場合

アポストロフィ（’）で囲み，さらにその外側を引用符（"）で囲んでください。

RDエリア名は大文字と小文字が区別されます。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

作成するキューの名前を指定します。

既存のキューの名前を指定した場合はエラーが発生します。

(5)　注意事項

コマンド引数に指定するキュー名は，英字の大文字と小文字が区別されません。英字の大文字と小文字の違いだけのキュー名がすでにある場合，エラーが発生します。

キュー定義ファイルを使用していない場合，-xオプションで指定したキューの表示名でJNDIネーミングサービスに登録されます。

キュー定義ファイルを使用している場合は，キュー定義ファイルの指定が優先され，-xオプションで指定した表示名でのJNDIネーミングサービスへの登録はされません。

キュー定義ファイルを使用してReliable Messagingを運用している場合，キュー定義ファイルを使用しないでReliable Messagingを再開始したときは，-xオプションで指定した表示名がJNDIネーミングサービスに登録されます。

キュー定義ファイルの使用有無の詳細については，「3.4.4　キュー定義ファイルの作成（永続版リソースアダプタの場合）」，または「3.5.2　キュー定義ファイルの作成（非永続版リソースアダプタの場合）」を参照してください。

-xオプションで表示名を指定しなくても，作成するキューのキュー名が，作成済みキューの表示名と重複した場合，キューの作成は失敗します。

8.3.18　hrmmkque（受信用共用キューの作成）

(1)　形式

hrmmkque -t shr_receive 〔-l 最大メッセージ長〕
        〔-n 最大メッセージ数〕 〔-c キャッシュメッセージ数〕
        〔-r RDエリア名〕 〔-x 表示名〕
        〔-S システム名〕 キュー名

(2)　機能

指定されたキュー属性で，受信用共用キューを作成します。

(3)　オプション

-t shr_receive

作成するキューの種類を指定します。受信用共用キューが指定されます。

-l 最大メッセージ長

　〜＜数字＞((1000〜1048576))《33000》（単位：バイト）

キューに格納するメッセージの最大長（ペイロードの最大長）を指定します。

-n 最大メッセージ数

　〜＜数字＞((1〜65535))《1024》

キューに格納するメッセージの最大数を指定します。

-c キャッシュメッセージ数

　〜＜数字＞((0〜65535))《最大メッセージ数》

キャッシュに格納するメッセージの数を指定します。

指定を省略した場合，-nオプションに指定する最大メッセージ数が設定されます。0を指定する場合，キャッシュにメッセージは格納されません。

このオプションに大きな値を指定する場合，メモリを消費しますがメッセージ受信の性能が向上します。小さい値を指定する場合，メモリの消費は抑えられますが，DBアクセス回数が増えることによってメッセージ受信の性能が低下します。

-r RDエリア名

　〜＜1〜30文字の識別子および空白＞

次に示す管理情報テーブルを格納するRDエリアの名前を指定します。

共用キュー受信用メッセージ情報テーブル

共用キュー受信用ライト管理テーブル

共用キュー受信用リード管理テーブル

このオプションを指定する場合，これらの管理情報テーブルを格納するRDエリアをあらかじめ用意してください。また，これらの管理情報テーブルは，受信用共用キューごとに同じRDエリアに格納する必要があります。HiRDBのRDエリアの作成については，マニュアル「HiRDB コマンドリファレンス」を参照してください。

このオプションを省略する場合，格納するRDエリアをHiRDBが決定します。HiRDBが決定するRDエリアについては，マニュアル「HiRDB SQLリファレンス」を参照してください。

注意

RDエリア名に空白を含む場合は，次のように指定してください。

Windowsの場合

引用符（"）で囲んでください。

UNIXの場合

アポストロフィ（’）で囲み，さらにその外側を引用符（"）で囲んでください。

RDエリア名は大文字と小文字が区別されます。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.18(5)　注意事項」を参照してください。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

作成するキューの名前を指定します。

既存のキューの名前を指定した場合はエラーが発生します。

TP1/EEとシステム間連携をする場合は1〜19文字のキュー名を指定してください。キュー名が20文字の場合はTP1/EEとシステム間連携ができません。

(5)　注意事項

受信用共用キューは，接続先のデータベースの種別がHiRDBの場合だけ作成できます。接続先のデータベースの種別がOracleの場合に受信用共用キューを作成するとエラーが発生します。

コマンド引数に指定するキュー名は，英字の大文字と小文字が区別されません。英字の大文字と小文字の違いだけのキュー名がすでにある場合，エラーが発生します。

Reliable Messagingのバージョンによって使用できる共用キューのバージョンが決められています。したがって，共用キューを使用する場合は，送信側システムと受信側システムのReliable Messagingのバージョンを統一し，必要に応じて共用キューをバージョンアップする必要があります。

共用キューのバージョンアップの詳細については，「付録H.3　共用キューのバージョンアップ」を参照してください。

キュー定義ファイルを使用していない場合，-xオプションで指定したキューの表示名でJNDIネーミングサービスに登録されます。

キュー定義ファイルを使用している場合は，キュー定義ファイルの指定が優先され，-xオプションで指定した表示名でのJNDIネーミングサービスへの登録はされません。

キュー定義ファイルを使用してReliable Messagingを運用している場合，キュー定義ファイルを使用しないでReliable Messagingを再開始したときは，-xオプションで指定した表示名がJNDIネーミングサービスに登録されます。

キュー定義ファイルの使用有無の詳細については，「3.4.4　キュー定義ファイルの作成（永続版リソースアダプタの場合）」を参照してください。

-xオプションで表示名を指定しなくても，作成するキューのキュー名が，作成済みキューの表示名と重複した場合，キューの作成は失敗します。

8.3.19　hrmmkque（送信用共用キューの作成）

(1)　形式

hrmmkque -t shr_send 〔-l 最大メッセージ長〕
         -b 共用キューを使用する場合の登録先キュー名
        〔-x 表示名〕 〔-S システム名〕 キュー名

(2)　機能

指定されたキュー属性で，送信用共用キューを作成します。

(3)　オプション

-t shr_send

作成するキューの種類を指定します。送信用共用キューが指定されます。

-l 最大メッセージ長

　〜＜数字＞((0または1〜1048576))《0》（単位：バイト）

キューに格納するメッセージの最大長（ペイロードの最大長）を指定します。

メッセージを送信する際のメッセージ長チェックの基準値となります。指定する値は，受信側システムの受信用共用キューに指定された最大メッセージ長と同じにしてください。

メッセージ長をチェックしない場合は，指定を省略するか0を指定してください。

-b 共用キューを使用する場合の登録先キュー名

　〜＜文字列＞

共用キューを使用して複数システム間でのアプリケーション連携をする場合にメッセージを登録する，登録先キュー名を指定します。

自システムの送信用共用キューは定義だけのキューです。メッセージが格納されるメモリやディスク領域などの実体は，相手システムの受信用共用キューです。このオプションでは，自システムの送信したメッセージが登録される登録先キュー名を，相手システムの受信用共用キュー名を基に次に示す形式で指定します。

Reliable Messaging間で連携する場合

<システム名>_SHR_<受信用共用キュー名>

システム名は相手システムのRMSystemNameプロパティ指定値です。受信用共用キュー名は，相手システムで定義している受信用共用キュー名です。

他システム間で連携する場合

接続先のシステムで定義しているキュー名を指定してください。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合はコマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.19(5)　注意事項」を参照してください。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

作成するキューの名前を指定します。

既存のキューの名前を指定した場合はエラーが発生します。

(5)　注意事項

送信用共用キューは，接続先のデータベースの種別がHiRDBのときだけ作成できます。接続先のデータベースの種別がOracleのときに送信用共用キューを作成するとエラーが発生します。

-bオプションに対して，Reliable Messaging間の連携の場合に指定する受信用共用キュー名は，英字の大文字と小文字が区別されません。

コマンド引数に指定するキュー名は，英字の大文字と小文字が区別されません。英字の大文字と小文字の違いだけのキュー名がすでにある場合，エラーが発生します。

-bオプションで指定したキュー名に対応する受信用共用キューが接続先のデータベースに存在しない場合，エラーが発生します。

-bオプションで指定したキュー名に対応する受信用共用キューが連携できる共用キューのバージョンではない場合，エラーが発生します。

Reliable Messagingのバージョンによって使用できる共用キューのバージョンが決められています。したがって，共用キューを使用する場合は，送信側システムと受信側システムのReliable Messagingのバージョンを統一し，必要に応じて共用キューをバージョンアップする必要があります。

共用キューのバージョンアップの詳細については，「付録H.3　共用キューのバージョンアップ」を参照してください。

キュー定義ファイルを使用していない場合，-xオプションで指定したキューの表示名でJNDIネーミングサービスに登録されます。

キュー定義ファイルを使用している場合は，キュー定義ファイルの指定が優先され，-xオプションで指定した表示名でのJNDIネーミングサービスへの登録はされません。

キュー定義ファイルを使用してReliable Messagingを運用している場合，キュー定義ファイルを使用しないでReliable Messagingを再開始したときは，-xオプションで指定した表示名がJNDIネーミングサービスに登録されます。

キュー定義ファイルの使用有無の詳細については，「3.4.4　キュー定義ファイルの作成（永続版リソースアダプタの場合）」を参照してください。

-xオプションで表示名を指定しなくても，作成するキューのキュー名が，作成済みキューの表示名と重複した場合，キューの作成は失敗します。

8.3.20　hrmmkque（転送キューの作成）

(1)　形式

hrmmkque -t transmit 〔-m {persistent｜non_persistent}〕
        〔-n 最大メッセージ数〕 〔-c キャッシュメッセージ数〕
        〔-e メッセージ有効期間〕
         -a あて先名 {-v 転送先キュー名｜-y} 〔-i {normal｜compatible}〕
        〔-j {exactly_once｜in_order}〕 〔-g 通信層のグループ有効期間〕
        〔-s 通信層のメッセージ有効期間〕 〔-x 表示名〕
        〔-r RDエリア名〕 〔-S システム名〕 キュー名

(2)　機能

指定されたキュー属性で，転送キューを作成します。

(3)　オプション

-t transmit

作成するキューの種類を指定します。転送キューが指定されます。

-m {persistent｜non_persistent}

　〜《persistent》

作成するキューの永続性を指定します。

persistent：永続キュー属性

non_persistent：非永続キュー属性

各属性を指定したときのメッセージの処理については，「2.3.1　キューの永続性」を参照してください。

-jオプションにin_orderを指定した場合，このオプションの指定はpersistent（永続キュー）だけとなります。-jオプションにin_orderを指定して，同時にキューモードにnon_persistent（非永続キュー）を指定した場合はエラーが発生します。

-n 最大メッセージ数

　〜＜数字＞((1〜65535))《1024》

キューに格納するメッセージの最大数を指定します。

-c キャッシュメッセージ数

　〜＜数字＞((0〜65535))《1024》

キャッシュに格納するメッセージの数を指定します。

指定を省略した場合，-nオプションに指定した最大メッセージ数が設定されます。0を指定した場合，キャッシュにメッセージは格納されません。

このオプションに大きな値を指定する場合，メモリを消費しますがメッセージ転送の性能が向上します。小さい値を指定する場合，メモリの消費は抑えられますが，DBアクセス回数が増えることによってメッセージ転送の性能が低下します。

-e メッセージ有効期間

　〜＜数字＞((1〜2592000))《2592000》（単位：秒）

キューに格納するメッセージの有効期間を指定します。

有効期間を指定するときのメッセージの処理については，「2.3.5　メッセージの有効期間」を参照してください。

有効期間に達すると，そのメッセージはデッドメッセージとして扱われます。

-sオプションで指定した値以下の値を指定してください。-sオプションで指定した値より大きい値を指定するとエラーが発生します。

-a あて先名

　〜＜1〜32文字の文字列＞

メッセージを転送するあて先のあて先名を指定します。hrmmkaddrコマンドで，事前にあて先名を登録する必要があります。登録されていないあて先名を指定するとエラーが発生します。

-v 転送先キュー名

　〜＜1〜20文字の識別子＞

メッセージを転送する場合，転送したメッセージを登録するキューの名前を指定します。キュー間転送のあて先の詳細については，「2.4.2　キュー間転送のあて先指定」を参照してください。

-y

-vオプションを省略して，-aオプションで指定したあて先名に対応するあて先アドレスだけを送信アドレスとする場合に指定します。キュー間転送のあて先の詳細については，「2.4.2　キュー間転送のあて先指定」を参照してください。

-i {normal｜compatible}

　〜《normal》

作成するキューの転送モードを指定します。

normal：通常モード

compatible：互換モード

転送先のReliable Messagingのバージョンが01-03以降の場合はnormalを指定します。バージョンが01-02以前の場合はcompatibleを指定します。

normalを指定して作成した転送キューを使用して，01-02以前のReliable Messagingにメッセージを転送した場合，ペイロードが空のメッセージとして受信されることがありますので，注意してください。

-j {exactly_once｜in_order}

　〜《exactly_once》

転送に使用するQoS（通信品質）の種別を指定します。

exactly_once：配送保証および重複防止

in_order：順序保証

-g 通信層のグループ有効期間

　〜＜数字＞((10〜2592000))（単位：秒）《2592000》

通信層のグループの有効期間を指定します。

このオプションの値は，通信層でメッセージを送受信するために使用するグループの有効期間を示します。このオプションで指定した有効期間に達すると，新たにグループが作成され，メッセージは新しいグループに格納されます。

-s 通信層のメッセージ有効期間

　〜＜数字＞((10〜2592000))（単位：秒）《-eオプションの値》

通信層のグループに格納するメッセージの有効期間を指定します。

このオプションの値は，メッセージがグループ内で管理される期間を示します。このオプションで指定した有効期間に達すると，そのメッセージはデッドメッセージとして扱われます。

-eオプションで指定した値以上の値を指定してください。-eオプションで指定した値未満の値を指定した場合，エラーが発生します。-eオプションで指定した値が1〜9の場合，このオプションを省略すると値は10を指定したとみなされます。

-x 表示名

　〜＜1〜64文字の英数字および_（アンダースコア）＞

キューの表示名を指定します。表示名とは，アプリケーションがJNDIネーミングサービスからキューを取得するときの，キューの論理名のことです。

指定を省略した場合は，コマンド引数で指定したキュー名と同じ名称を指定したものとみなされます。

指定した表示名と同じ名称を持つキューがすでに存在している場合，エラーとなります。詳細は「8.3.20(5)　注意事項」を参照してください。

-r RDエリア名

　〜＜1〜30文字の識別子および空白＞

メッセージ情報テーブルを格納するRDエリアの名前を指定します。メッセージ情報テーブルを格納するRDエリアをあらかじめ用意してください。HiRDBのRDエリアの作成については，マニュアル「HiRDB コマンドリファレンス」を参照してください。

-mオプションにnon_persistentを指定した場合，またはDBにOracleを使用している場合，このオプションの指定値は無効になります。

このオプションを省略した場合，格納するRDエリアをHiRDBが決定します。HiRDBが決定するRDエリアについては，マニュアル「HiRDB SQLリファレンス」を参照してください。

注意

RDエリア名に空白を含む場合は，次のように指定してください。

Windowsの場合

引用符（"）で囲んでください。

UNIXの場合

アポストロフィ（’）で囲み，さらにその外側を引用符（"）で囲んでください。

RDエリア名は大文字と小文字が区別されます。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

作成するキューの名前を指定します。

既存のキューの名前を指定した場合はエラーが発生します。

(5)　注意事項

コマンド引数に指定するキュー名は，英字の大文字と小文字が区別されません。英字の大文字と小文字の違いだけのキュー名がすでにある場合，エラーが発生します。

-gオプションおよび-sオプションを使うと，受信側のリソースの使用量に影響します。運用方法に合わせた値を指定してください。例えばWebサービスなど，不特定多数が通信をする運用の場合は，-gオプションおよび-sオプションの値を大きくすると，受信側にリソースを蓄積させてしまうので，小さい値を指定することをお勧めします。

キュー定義ファイルを使用していない場合，-xオプションで指定したキューの表示名でJNDIネーミングサービスに登録されます。

キュー定義ファイルを使用している場合は，キュー定義ファイルの指定が優先され，-xオプションで指定した表示名でのJNDIネーミングサービスへの登録はされません。

キュー定義ファイルを使用してReliable Messagingを運用している場合，キュー定義ファイルを使用しないでReliable Messagingを再開始したときは，-xオプションで指定した表示名がJNDIネーミングサービスに登録されます。

キュー定義ファイルの使用有無の詳細については，「3.4.4　キュー定義ファイルの作成（永続版リソースアダプタの場合）」を参照してください。

-xオプションで表示名を指定しなくても，作成するキューのキュー名が，作成済みキューの表示名と重複した場合，キューの作成は失敗します。

Reliable Messagingを09-00にバージョンアップした場合，Reliable Messaging 01-02以前で作成した転送キューは，転送モードがcompatible（互換モード）の転送キューとして扱われます。

8.3.21　hrmregdmsg（デッドメッセージの再登録）

(1)　形式

hrmregdmsg {-i デッドメッセージID｜-q 移動前キュー名} 〔-S システム名〕

(2)　機能

デッドメッセージを，デッドメッセージキューに移動される前のキューに，新しいメッセージとして再登録します。また，デッドメッセージキュー内の該当のデッドメッセージを削除します。

(3)　オプション

-i デッドメッセージID

　〜＜1〜39文字の識別子＞

再登録するデッドメッセージのデッドメッセージID（DMID）を指定します。

指定したDMIDのメッセージがデッドメッセージキュー内にない場合はエラーが発生します。

-q 移動前キュー名

　〜＜1〜20文字の識別子＞

デッドメッセージキューに移動する前にメッセージが存在したキュー名を指定します。

指定したキュー名から移動されたすべてのデッドメッセージが，再登録されます。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　注意事項

対象のデッドメッセージキューは，RMDeadMessageQueueNameプロパティで指定したキューです。

キュー間転送時の送信側デッドメッセージキューには，受信側システムに到達しているメッセージが存在する場合があります。このデッドメッセージを再登録すると，受信側で別のメッセージとして受信されます。そのため，受信側システムのメッセージ到達状態を確認してから再登録してください。詳細は，「4.2.4(2)　サーバ間転送での注意事項」を参照してください。

次に示すデッドメッセージは，再登録できません。また，-qオプションで移動前キュー名を指定した場合，次に示すメッセージは再登録しないで，そのほかのメッセージを再登録します。

配信中のメッセージ

配信済みのメッセージ

移動前キューの最大メッセージ長より大きいメッセージ

デッドメッセージキュー移動時と移動前キューの種類が変わっているメッセージ

Reliable Messaging 01-01以前にデッドメッセージキューに移動したメッセージ

移動前キューがメッセージの登録を抑止されている場合，デッドメッセージは再登録できません。メッセージの登録抑止については，「8.3.27　hrmstopque（キューの抑止）」を参照してください。

-qオプションで移動前キュー名を指定した場合で，再登録対象のメッセージが複数あるときは，1メッセージごとに再登録処理が繰り返されます。再登録処理の途中で次に示すような処理を続行できない障害が発生した場合，処理が中止され，以降のメッセージは再登録されません。

移動前のキューの最大メッセージ数を超えた場合

移動前のキューで，DB障害が発生した場合

デッドメッセージの再登録では，メッセージの再登録処理の順番は保証されません。

Reliable Messagingが管理状態の場合，共用キューにデッドメッセージを再登録したとき，共用キューの状態は更新されません（メッセージが登録された状態になりません）。共用キューの状態は次のタイミングで更新されます。

Reliable Messagingを実行状態にする

Reliable Messagingを再起動する

デッドメッセージの再登録により追加されたメッセージは，移動前キューのメッセージ取り出しモードがparallel_unit_orderであっても，同一ユニット識別子の配信順序制御の対象とはなりません。また，キューに格納されている時に，メッセージ参照コマンドでユニット識別子は表示されません。ただし，そのメッセージを受信／配信した場合，メッセージにはJMS_HITACHI_UnitIDプロパティは設定されています。

8.3.22　hrmskipmsg（受信待ちメッセージのスキップ）

(1)　形式

hrmskipmsg -n 受信待ちグループ内シーケンス番号 -g グループID
          〔-S システム名〕 キュー名

(2)　機能

受信待ちになっているメッセージをスキップします。このコマンドはQoS（通信品質）が順序保証の転送メッセージを受信しているグループに対して，順序が前のメッセージが障害などで受信されないで，あとのメッセージがグループに滞留した場合に使用します。

(3)　オプション

-n 受信待ちグループ内シーケンス番号

　〜＜数字＞((0〜18446744073709551615))

スキップしたい受信待ちメッセージの，通信層グループ内シーケンス番号を指定します。

最小の受信待ちメッセージ番号だけ指定できます。それ以外の受信待ちメッセージ番号を指定した場合はエラーが発生します。

-g グループID

　〜＜1〜256文字の文字列＞

コマンド操作対象となる通信層のグループIDを指定します。QoSがin-orderの場合だけ指定できます。QoSがexactly-onceのグループIDを指定した場合はエラーが発生します。

グループが無効の場合は，メッセージのスキップはできません。グループが無効の場合にこのオプションを指定するとエラーが発生します。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

スキップしたいメッセージが送信側から転送される予定のキューの名前を指定します。

指定したキューが存在しない，またはローカルキュー以外のキューを指定した場合はエラーが発生します。

(5)　注意事項

受信済みであるメッセージはスキップできません。受信済みであるメッセージ通番を指定するとエラーが発生します。メッセージが受信か未受信かは，hrmlstrsコマンドで確認してください。

メッセージのスキップ後にそのメッセージが再送された場合は，エラーが発生します。メッセージは送信側のデッドメッセージキューに格納されます。

スキップしたメッセージ以降は再び順序保証が保たれます。

8.3.23　hrmstart（実行状態への移行）

(1)　形式

hrmstart 〔-S システム名〕

(2)　機能

Reliable Messagingを管理状態から実行状態に移行します。管理状態および実行状態については，「4.1.4　Reliable Messagingの状態遷移（永続版リソースアダプタの場合）」を参照してください。

(3)　オプション

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　注意事項

Reliable Messagingが実行状態のときにこのコマンドを実行するとエラーが発生します。

8.3.24　hrmstartque（キューの抑止解除）

(1)　形式

永続版リソースアダプタの場合

hrmstartque -y {ap_send｜ap_receive｜trs_send｜trs_receive｜ap_all｜all}
          〔-S　システム名〕 キュー名

非永続版リソースアダプタの場合

hrmstartque -y {ap_send｜ap_receive｜ap_all｜all}
          〔-S　システム名〕 キュー名

(2)　機能

キューのメッセージの送受信を抑止解除します。

非永続版リソースアダプタの場合，ローカルキューの抑止解除だけできます。

(3)　オプション

永続版リソースアダプタの場合

-y {ap_send｜ap_receive｜trs_send｜trs_receive｜ap_all｜all}

抑止解除の形態を指定します。

ap_send：メッセージの送信抑止の解除

ap_receive：メッセージの受信抑止の解除

trs_send：転送キューのキュー間転送メッセージの送信抑止の解除

trs_receive：ローカルキューの転送メッセージの受信抑止の解除

ap_all：メッセージの送受信抑止の解除

all：指定するキューの種類に応じて，抑止状態をすべて解除

非永続版リソースアダプタの場合

-y {ap_send｜ap_receive｜ap_all｜all}

抑止解除の形態を指定します。

ap_send：メッセージの送信抑止の解除

ap_receive：メッセージの受信抑止の解除

ap_all：メッセージの送受信抑止の解除

all：ap_allと同じ意味になります。

キューの種類によって，指定できる抑止解除の形態が異なります。キューと抑止解除の形態との対応を次の表に示します。

表8‒3　キューと抑止解除できる形態

抑止解除の形態

ローカルキュー

転送キュー

送信用共用キュー

受信用共用キュー

デッドメッセージキュー

永続版

非永続版

ap_send

○

○

○

×

○

×

ap_receive

○

○

×

×

○

○

trs_send

×

×

○

×

×

×

trs_receive

○

×

×

×

×

×

ap_all

○

○

×

×

○

×

all

○

○※

○

×

○

○

（凡例）

○：指定できます。

×：指定できません。指定した場合，エラーが発生します。

注※

非永続版リソースアダプタでall指定すると，ap_allを指定したときと同じになります。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

抑止状態を解除するキューの名前を指定します。

永続版リソースアダプタの場合

指定したキューが存在しない，または送信用共用キューを指定した場合はエラーが発生します。

非永続版リソースアダプタの場合

指定したキューが存在しない場合はエラーが発生します。

8.3.25　hrmstarttrs（送受信抑止解除）

(1)　形式

hrmstarttrs -y {send｜receive} 〔-S システム名〕 キュー名

(2)　機能

転送メッセージの送受信抑止状態を元の状態に戻します。

(3)　オプション

-y {send｜receive}

抑止を解除する形式を指定します。

send：送信抑止解除

receive：受信抑止解除

ローカルキューの場合，receiveを指定してください。転送キューの場合，sendを指定してください。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

送受信抑止を解除するキューの名前を指定します。

指定したキューが存在しない，またはローカルキュー，転送キュー以外のキューを指定した場合はエラーが発生します。

(5)　注意事項

Reliable Messaging 01-01以降での，このコマンドの使用は推奨しません。キュー間転送の抑止を解除する場合は，hrmstartqueコマンドの-yオプションにtrs_sendまたはtrs_receiveを指定してください。hrmstartqueコマンドについては，「8.3.24　hrmstartque（キューの抑止解除）」を参照してください。

8.3.26　hrmstop（管理状態への移行）

(1)　形式

hrmstop 〔-S システム名〕

(2)　機能

Reliable Messagingを実行状態から管理状態に移行します。

実行状態および管理状態については，「4.1.4　Reliable Messagingの状態遷移（永続版リソースアダプタの場合）」を参照してください。

(3)　オプション

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　注意事項

Reliable Messagingが管理状態のときにこのコマンドを実行するとエラーが発生します。

アプリケーションの稼働中に管理状態に移行すると，アプリケーションでエラーが発生するおそれがあります。

8.3.27　hrmstopque（キューの抑止）

(1)　形式

永続版リソースアダプタの場合

hrmstopque -y {ap_send｜ap_receive｜trs_send｜trs_receive｜ap_all｜all}
          〔-S　システム名〕 キュー名

非永続版リソースアダプタの場合

hrmstopque -y {ap_send｜ap_receive｜ap_all｜all}
          〔-S　システム名〕 キュー名

(2)　機能

キューのメッセージの送受信を抑止します。

非永続版リソースアダプタの場合，ローカルキューの抑止だけができます。

(3)　オプション

永続版リソースアダプタの場合

-y {ap_send｜ap_receive｜trs_send｜trs_receive｜ap_all｜all}

抑止形態を指定します。

ap_send：メッセージの送信抑止

ap_receive：メッセージの受信抑止

trs_send：キュー間転送メッセージの送信抑止

trs_receive：キュー間転送メッセージの受信抑止

ap_all：メッセージの送受信抑止

all：指定するキューの種類に応じて，抑止できる形態をすべて抑止

非永続版リソースアダプタの場合

-y {ap_send｜ap_receive｜ap_all｜all}

抑止形態を指定します。

ap_send：メッセージの送信抑止

ap_receive：メッセージの受信抑止

ap_all：メッセージの送受信抑止

all：ap_allと同じ意味になります

キューの種類によって，指定できる抑止形態が異なります。キューと抑止形態との対応を次の表に示します。

表8‒4　キューと抑止できる形態

抑止形態

ローカルキュー

転送キュー

送信用共用キュー

受信用共用キュー※1

デッドメッセージキュー

永続版

非永続版

ap_send

○

○

○

×

○

×

ap_receive

○

○

×

×

○

○

trs_send

×

×

○

×

×

×

trs_receive

○

×

×

×

×

×

ap_all

○

○

×

×

○

×

all

○

○※2

○

×

○

○

（凡例）

○：指定できます。

×：指定できません。指定した場合，エラーが発生します。

注※1

受信用共用キューへの送信抑止は，すべてのシステムからのメッセージの送信を抑止します。

注※2

非永続版リソースアダプタでall指定すると，ap_allを指定したときと同じになります。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

メッセージを抑止するキューの名前を指定します。

永続版リソースアダプタの場合

指定したキューが存在しない，または送信用共用キューを指定した場合はエラーが発生します。

非永続版リソースアダプタの場合

指定したキューが存在しない場合はエラーが発生します。

(5)　注意事項

Reliable Messagingの実行状態でこのコマンドを実行した場合，該当のキューに対してのメッセージ送信または受信のトランザクションがすでに存在していたとき，そのトランザクションは有効となります。

永続版リソースアダプタの場合

デッドメッセージキューへのメッセージの移動は抑止されません。

非永続版リソースアダプタの場合

Reliable Messagingを再起動したときは，抑止状態は引き継がれません。再起動後は抑止が解除されます。

8.3.28　hrmstoptrs（送受信抑止）

(1)　形式

hrmstoptrs -y {send｜receive} 〔-S システム名〕 キュー名

(2)　機能

転送メッセージの受信や転送メッセージの送信を抑止します。

(3)　オプション

-y {send｜receive}

抑止する形式を指定します。

send：送信抑止

receive：受信抑止

ローカルキューの場合，receiveだけ指定できます。転送キューの場合，sendだけ指定できます。

-S システム名

　〜＜先頭が英字の1〜3文字の大文字英字または数字＞

コマンドの操作対象となるシステム名（RMSystemNameプロパティ指定値）を指定します。

指定を省略した場合は，HRM_SYSTEM_NAME環境変数に指定したシステム名が設定されます。HRM_SYSTEM_NAME環境変数にもシステム名が指定されていないときはエラーが発生します。

(4)　コマンド引数

キュー名

　〜＜1〜20文字の識別子＞

送受信を抑止するキューの名前を指定します。

指定したキューが存在しない，またはローカルキュー，転送キュー以外のキューを指定した場合はエラーが発生します。

(5)　注意事項

Reliable Messaging 01-01以降での，このコマンドの使用は推奨しません。キュー間転送の抑止をする場合は，hrmstopqueコマンドの-yオプションにtrs_sendまたはtrs_receiveを指定してください。hrmstopqueコマンドについては，「8.3.27　hrmstopque（キューの抑止）」を参照してください。

9　障害対策

Reliable Messagingは障害対策のためにメッセージログとトレースを出力します。

この章では，メッセージログとトレースの種類，設定，および出力内容の詳細について説明します。

9.1　障害時の出力情報概要

Reliable Messagingの運用時に障害が発生した場合は，メッセージログとトレースを参照して原因を調査し，対策してください。

Reliable Messagingのメッセージログとトレースを次の表に示します。

表9‒1　Reliable Messagingのメッセージログとトレース

項番

種類

名称

説明

使用可否

永続版リソースアダプタ

非永続版リソースアダプタ

1

メッセージログ

開始停止メッセージログ

Reliable Messagingの開始と停止についての情報とユーザが指定したプロパティの値が出力されます。

詳細については，「9.3.1　開始停止メッセージログ」を参照してください。

○

○

2

Application Server用メッセージログ

Reliable Messagingの開始と停止についての情報と動作中の情報が出力されます。

詳細については，「9.3.2　Application Server用メッセージログ」を参照してください。

○

○

3

トレース

メソッドトレース

メソッドの入口情報，出口情報，デバッグ情報およびエラー情報が出力されます。

詳細については，「9.3.3　メソッドトレース」を参照してください。

○

○

4

共用キューイベントトレース

共用キューにメッセージが格納されたことを表すイベントの情報が出力されます。

詳細については，「9.3.4　共用キューイベントトレース」を参照してください。

○

×

5

回線トレース

キュー間転送でやり取りされる電文の情報を出力します。

詳細については，「9.3.5　回線トレース」を参照してください。

○

×

6

PRFトレース

Reliable Messagingの性能問題の特定と早期解決を目的とした性能解析トレース情報が出力されます。

詳細については，「9.3.6　PRFトレース」を参照してください。

○

○

（凡例）

○：使用できます。

×：使用できません。

Reliable Messagingの起動時に各メッセージログおよびトレースを新規作成できない場合または開くことができない場合は，Reliable Messagingの起動を中止します。

永続版リソースアダプタでは，Reliable Messagingの管理情報テーブルを格納するDBで障害が発生した場合は，Reliable Messagingを停止し，DBMSの機能によって原因を調査し対策してください。対象となるテーブルについては，「4.3.6　管理情報テーブルの一覧」を参照してください。DBの回復方法については，HiRDBまたはOracleのマニュアルを参照してください。DBの回復後，Reliable Messagingを再度開始します。

9.2　ログとトレースの設定

起動停止メッセージログファイル，Application Serverのメッセージログファイル，PRFの設定はApplication Serverの設定に従います。ここではそれ以外のトレース（メソッドトレース，共用キューイベントトレース，回線トレース）の設定について説明します。トレースは以下の設定が行えます。

ローテーション方式

ファイル面数

ファイルサイズ

ローテーション時刻

J2EEサーバ単位または，Reliable Messagingのリソースアダプタ単位で設定を行います。各設定をどちらの単位で行うかを次の表に示します。

表9‒2　トレース設定の単位

ローテーション方式

ファイル面数

ファイルサイズ

ローテーション時刻

ローテーション形式

ローテーションモード

J2EEサーバ単位

○

○

−

−

○

Reliable Messagingのリソースアダプタ単位

−

−

○

○

−

（凡例）

○：本単位で設定を行うことを示す

−：本単位で設定を行なわないことを示す

9.2.1　ローテーション方式の設定

ローテーション方式の設定では以下のローテーション形式，およびローテーションモードを設定できます。「ラップアラウンド形式，またはシフト形式」と「ファイルサイズモード，または時刻＋ファイルサイズモード」の組み合わせをサポートします。

ローテーション形式およびローテーションモードの設定方法はApplication Serverの仕様に従います。詳細については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」の「3.　トラブルシューティングのための準備」を参照してください。

(1)　ローテーション形式

(a)　ラップアラウンド形式

ローテーションが発生した場合，出力ファイルを切り替えて，出力を継続します。規定の面数のトレースファイルに出力し終えた場合，ラップアラウンドし，出力を継続します。

(b)　シフト形式

ローテーションが発生した場合，出力ファイルをシフト（リネーム）し，バックアップを行った後新しくファイルを作成し，出力を継続します。現在トレースを出力している最新ファイル名は固定となります。バックアップファイルが規定の面数を超えた場合，面番号が最も大きいバックアップファイルを削除します。

(2)　ローテーションモード

(a)　ファイルサイズモード

トレースファイルが最大サイズに達した場合に，出力ファイルのローテーションが発生します。

(b)　時刻＋ファイルサイズモード

トレースファイルが最大サイズに達した場合，または時刻が毎日規定時刻に達した場合に，出力ファイルのローテーションが発生します。

9.2.2　ファイル面数の設定

ローテーション形式によりファイル面数の意味が異なります。ローテーション形式によるファイル面数の意味を以下に示します。

ラップアラウンド形式を使用する場合

ファイル面数とはトレースファイルが作成される最大数を示します。

シフト形式を使用する場合

ファイル面数とはバックアップファイルの最大数を示します。現在トレースを出力している最新ファイルは面数に含まれません。

どちらの形式を使用する場合でも，ファイル面数はReliable MessagingのコンフィグレーションプロパティのRMLogTraceFileNumキーで設定可能です。

9.2.3　ファイルサイズの設定

トレースファイル1面あたりの最大サイズを設定します。Reliable MessagingのコンフィグレーションプロパティのRMLogTraceFileSizeキーで設定可能です。

9.2.4　ローテーション時刻の設定

ローテーションモードで時刻＋ファイルサイズモードを使用する場合に使用します。ローテーションが発生する時刻を設定します。ローテーション時刻の設定方法はApplication Serverの仕様に従います。詳細については，マニュアル「アプリケーションサーバ機能解説 保守／移行編」の「3.　トラブルシューティングのための準備」を参照してください。

9.3　障害時の出力情報詳細

障害時の出力情報詳細を説明します。

9.3.1　開始停止メッセージログ

開始停止メッセージログには，Reliable Messagingの開始と停止についての情報，およびユーザが指定したプロパティの値が出力されます。

出力先ディレクトリ

<Application Serverのインストールディレクトリ>/CC/server/public/ejb/<サーバ名称>/logs/connectors

出力ログファイル名

ラップアラウンド形式ローテーションの場合

<Reliable Messagingの表示名><面番号>.log

シフト形式ローテーションの場合

最新ファイル名

<Reliable Messagingの表示名>.log

バックアップファイル名

<Reliable Messagingの表示名><面番号>.log

コントロールファイル名※

<Reliable Messagingの表示名>.conf

Reliable Messagingの表示名については，永続版リソースアダプタの場合は「3.4.4(1)　キュー定義ファイルの記述形式」を，非永続版リソースアダプタの場合は「3.5.2(1)　キュー定義ファイルの記述形式」を参照してください。初期値は"Cosminexus_Reliable_Messaging"です。

面番号およびファイルサイズは，Application Serverの設定に従います。詳細については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

注※

ログライブラリが使用するバイナリ形式のファイルを出力先ディレクトリに出力します。

出力形式

開始停止メッセージログの出力形式を次の図に示します。

図9‒1　開始停止メッセージログの出力形式

開始停止メッセージログの出力項目を次の表に示します。

表9‒3　開始停止メッセージログの出力項目

項番

出力項目

長さ

（バイト）

説明

1

番号

4

開始停止メッセージログの出力通番です。

2

日付

10

yyyy/mm/dd形式の出力日付です。

3

時刻

12

hh:mm:ss.sss形式の出力時刻です。

ローカル時刻でミリ秒単位の時刻です。

4

製品ID

16

製品を識別するための識別子です。Component Containerを表す"HEJB"が出力されます。

5

pid

8

プロセスIDです。

6

tid

8

スレッドIDです。

7

ID

11

空白が出力されます。

8

メッセージID

11

KFRMnnnnn-Y形式のメッセージIDです。

9

メッセージテキスト

0〜512※

（可変長）

メッセージテキストです。

10

CRLF

2

終端記号です。

注※

長さの上限は目安となる値です。上限値を超えて出力されることがあります。ただし，メッセージログ1行の長さは4185バイトが上限であり，これを超える情報は切り捨てられます。

注意事項

開始停止メッセージログを出力するには，リソースアダプタの稼働ログが出力されるようにApplication Serverを設定する必要があります。詳細については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

9.3.2　Application Server用メッセージログ

Application Server用メッセージログには，Reliable Messagingの開始と停止についての情報，および動作中の情報が出力されます。

出力先ディレクトリ

<Application Serverのインストールディレクトリ>/CC/server/public/ejb/<サーバ名称>/logs

出力ファイル名

Application Server用メッセージログは，Application Serverの稼働ログです。出力ファイル名については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

出力形式

Application Server用メッセージログの出力形式を次の図に示します。

図9‒2　Application Server用メッセージログの出力形式

Application Server用メッセージログの出力項目を次の表に示します。

表9‒4　Application Server用メッセージログの出力項目

項番

出力項目

長さ

（バイト）

説明

1

番号

4

Application Server用メッセージログの出力通番です。

2

日付

10

yyyy/mm/dd形式の出力日付です。

3

時刻

12

hh:mm:ss.sss形式の出力時刻です。

ローカル時刻でミリ秒単位の時刻です。

4

製品ID

16

製品を識別するための識別子です。Component Containerを表す"HEJB"が出力されます。

5

pid

8

プロセスIDです。

6

tid

8

スレッドIDです。

7

メッセージID

11

KFRMnnnnn-Y形式のメッセージIDです。

8

システム名

3

Reliable Messagingのシステム名です。

9

メッセージテキスト

0〜512※

（可変長）

メッセージテキストです。

10

CRLF

2

終端記号です。

注※

長さの上限は目安となる値です。上限値を超えて出力されることがあります。ただし，メッセージログ1行の長さは4185バイトが上限であり，これを超える情報は切り捨てられます。

注意事項

出力レベルを指定することで，Application Serverのメッセージログファイルに出力するメッセージログの出力量を制御できます。出力レベルは，Application Serverのログレベルの設定に従います。Application Serverのログレベルの設定については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

なお，次に示すメッセージは出力レベルに関係なく稼働ログに出力されます。

KFRM01009-I

KFRM01807-W

KFRM13006-W※

KFRM13007-W

KFRM13011-W

KFRM13024-W

KFRM13025-I

KFRM13026-I

KFRM13027-I

KFRM13028-W

KFRM13029-I

KFRM16010-I

KFRM16010-I

KFRM17007-W

KFRM17008-W

KFRM17009-W

KFRM17010-W

KFRM17011-W

KFRM17012-W

KFRM17014-W

KFRM20094-W

KFRM20121-W

KFRM20122-W

KFRM20123-W

KFRM40004-W※

KFRM40012-I

注※

　デッドメッセージキュー利用時だけ出力レベルに関係なく出力されます。

9.3.3　メソッドトレース

メソッドトレースには，メソッドの入口情報，出口情報，デバッグ情報およびエラー情報が出力されます。

出力先ディレクトリ

<Application Serverのインストールディレクトリ>/CC/server/public/ejb/<サーバ名称>/logs/RM/maintenance

出力トレースファイル名

ラップアラウンド形式ローテーションの場合

mtd_<Reliable Messagingの表示名>_<面番号>.log

シフト形式ローテーションの場合

最新ファイル名

mtd_<Reliable Messagingの表示名>_.log

バックアップファイル名

mtd_<Reliable Messagingの表示名>_<面番号>.log

コントロールファイル名※

mtd_<Reliable Messagingの表示名>_.conf

Reliable Messagingの表示名については，永続版リソースアダプタの場合は「3.4.4(1)　キュー定義ファイルの記述形式」を，非永続版リソースアダプタの場合は「3.5.2(1)　キュー定義ファイルの記述形式」を参照してください。

面番号はRMLogTraceFileNumプロパティ指定値が最大数です。また，トレースファイル（拡張子がlogのファイル）サイズはRMLogTraceFileSizeプロパティ指定値が最大長（単位：バイト）です。

注※

ログライブラリが使用するバイナリ形式のファイルを出力先ディレクトリに出力します。ファイルサイズは固定で256バイトです。

出力形式

メソッドトレースの出力形式を次の図に示します。

図9‒3　メソッドトレースの出力形式

メソッドトレースの出力項目を次の表に示します。

表9‒5　メソッドトレースの出力項目

項番

出力項目

長さ

（バイト）

説明

1

番号

4

メソッドトレースの出力通番です。

2

日付

10

yyyy/mm/dd形式の出力日付です。

3

時刻

12

hh:mm:ss.sss形式の出力時刻です。

ローカル時刻でミリ秒単位の時刻です。

4

製品ID

16

製品を識別するための識別子です。

Reliable Messagingを表す"RM"が出力されます。

5

pid

8

プロセスIDです。

6

tid

8

スレッドIDです。

7

ID

11

空白が出力されます。

8

ハッシュコード

1〜11

トレースを出力するオブジェクトのハッシュコード（16進数）です。

9

コンポーネントID

3

トレースを出力するコンポーネントを識別するための識別子です。

10

クラス名

1〜25※1

（可変長）

トレースを出力するクラスの名前です。

11

メソッド名

1〜25※1

（可変長）

トレースを出力するメソッドの名前です。

12

目的識別子

3

トレースの出力目的を表す識別子※2です。

13

トレース

0〜512※1

（可変長）

次に示す情報が出力されます。

メソッド入口または出口情報

メソッドの引数または戻り値の値です。

他製品呼び出し情報

Application Serverまたは他製品のクラス名，メソッド名および引数です。

エラー情報

障害要因となったエラー情報です。

なお，他製品から例外が発生した場合は，スタックトレース※3が出力されます。

デバッグ情報

デバッグ情報です。メソッド内の処理分岐では，分岐の要因となった情報が出力されます。

RMMethodTraceLevelプロパティに指定する出力レベル※4によって出力情報は異なります。

14

CRLF

2

終端記号です。

注※1

長さの上限は目安となる値です。上限値を超えて出力されることがあります。ただし，メソッドトレース1行の長さは4185バイトが上限であり，これを超える情報は切り捨てられます。

注※2

目的識別子の一覧を次の表に示します。

表9‒6　目的識別子の一覧

項番

目的識別子

意味

1

STA（start）

メソッドの開始

2

END（end）

メソッドの終了

3

CAL（call）

メソッドの呼び出し

4

RET（return）

メソッドの戻り

5

ERR（error）

メソッドの例外

6

DBG（debug）

メソッドのデバッグ情報（分岐など）

7

INF（information）

メソッドの処理情報（注意，警告など）

8

OPR（operation）

メソッドの処理情報（処理実行情報）

注※3

他製品から例外が発生した場合は，スタックトレースが出力されます。その際，ハッシュコードからトレースまでの出力項目が出力されず，スタックトレースが出力されます。スタックトレースは可変長（0〜512）のデータです。

スタックトレースの出力例を次の図に示します。

図9‒4　スタックトレースの出力例

注※4

RMMethodTraceLevelプロパティに指定する出力レベルによって，トレースに出力される情報は異なります。出力情報と出力レベルを次の表に示します。

表9‒7　メソッドトレースの出力情報と出力レベル

項番

出力情報

レベル1

レベル2

レベル3

レベル4

レベル5

1

エラー情報

（例外発生原因）

○

○

○

○

○

2

Reliable Messaging内部スレッドの処理の入口／出口情報

（クラス名，メソッド名，引数，戻り値）

○

○

○

○

○

3

Reliable Messagingのユーザインタフェースのメソッド入口／出口情報

（クラス名，メソッド名，引数，戻り値）

×

○

○

○

○

4

他製品のインタフェースの入口／出口情報

（クラス名，メソッド名，引数，戻り値）

×

×

○

○

○

5

Reliable Messaging内部インタフェース間の入口／出口情報

（クラス名，メソッド名，引数，戻り値）

×

×

×

○

○

6

Reliable Messagingのデバッグ情報

（処理の分岐などの情報）

×

×

×

×

○

7

Reliable Messagingの処理情報（注意，警告などを示す情報）

×

×

○

○

○

8

Reliable Messagingの処理情報（処理の実行を示す情報）

○

○

○

○

○

（凡例）

○：出力されます。

×：出力されません。

9.3.4　共用キューイベントトレース

共用キューイベントトレースには，イベントの送受信情報が出力されます。

出力先ディレクトリ

<Application Serverのインストールディレクトリ>/CC/server/public/ejb/<サーバ名称>/logs/RM/maintenance

出力トレースファイル名

ラップアラウンド形式ローテーションの場合

shq_<Reliable Messagingの表示名>_<面番号>.log

シフト形式ローテーションの場合

最新ファイル名

shq_<Reliable Messagingの表示名>.log

バックアップファイル名

shq_<Reliable Messagingの表示名>_<面番号>.log

コントロールファイル名※

shq_<Reliable Messagingの表示名>_.conf

Reliable Messagingの表示名については，永続版リソースアダプタの場合は「3.4.4(1)　キュー定義ファイルの記述形式」を，非永続版リソースアダプタの場合は「3.5.2(1)　キュー定義ファイルの記述形式」を参照してください。

面番号はRMLogTraceFileNumプロパティ指定値が最大数です。また，トレースファイル（拡張子がlogのファイル）サイズはRMLogTraceFileSizeプロパティ指定値が最大長（単位：バイト）です。

注※

ログライブラリが使用するバイナリ形式のファイルを出力先ディレクトリに出力します。ファイルサイズは固定で256バイトです。

出力形式

共用キューイベントトレースの出力形式を次の図に示します。

図9‒5　共用キューイベントトレースの出力形式

共用キューイベントトレースの出力項目を次の表に示します。

表9‒8　共用キューイベントトレースの出力項目

項番

出力項目

長さ

（バイト）

説明

1

番号

4

共用キューイベントトレースの出力通番です。

2

日付

10

yyyy/mm/dd形式の出力日付です。

3

時刻

12

hh:mm:ss.sss形式の出力時刻です。

ローカル時刻でミリ秒単位の時刻です。

4

製品ID

16

製品を識別するための識別子です。

Reliable Messagingを表す"RM"が出力されます。

5

pid

8

プロセスIDです。

6

tid

8

スレッドIDです。

7

ID

11

空白が出力されます。

8

電文種別

1〜8

受信した電文を特定するための電文種別です。

9

送受信識別子

3

イベントを送信したのか受信したのかを表す識別子です。

送信の場合：SND

受信の場合：RCV

10

あて先情報

1〜64

（可変長）

イベントを送信したマシンのホスト名またはIPアドレスです。

11

ポート番号

1〜11

（可変長）

イベントを送信したポート番号です。

12

バージョン

1〜8

（可変長）

イベント転送プロトコルのバージョンです。

13

トータルサイズ

1〜11

（可変長）

イベントのヘッダとデータの合計サイズ（10進数，単位：バイト）です。

14

基盤種別

1〜8

（可変長）

イベントの送信元を特定するための基盤種別です。Reliable Messagingが送信元の場合は"CosmiRM"が出力されます。

15

システム識別

1〜16

（可変長）

イベントの送信元を特定するためのシステム種別です。Reliable Messagingが送信元の場合はRMSystemNameプロパティ指定値が出力されます。

16

キュー名

1〜32

（可変長）

メッセージが格納されたキューの名前です。

17

ライト通番

1〜11

（可変長）

共用キューのメッセージ情報テーブルに書き込んだ際に何番目まで書き込んだかを表す通番です。

18

ラップカウンタ

1〜11

（可変長）

共用キューのメッセージ情報テーブルに書き込んだメッセージが書き込み限界数に達したため，1番目から上書きで書き込みした回数です。

19

CRLF

2

終端記号です。

矛盾不正イベントトレース出力時は，上記の表の項番12〜18は出力しないで，イベントデータを16進数と文字列として最大128バイト出力します。

不正イベントトレースの出力形式を次の図に示します。

図9‒6　不正イベントトレース出力時の共用キューイベントトレースの出力形式

9.3.5　回線トレース

キュー間転送でやり取りされる電文の情報を回線トレースファイルに出力します。

出力先ディレクトリ

<Application Serverのインストールディレクトリ>/CC/server/public/ejb/<サーバ名称>/logs/RM/maintenance

出力トレースファイル名

ラップアラウンド形式ローテーションの場合

lin_<Reliable Messagingの表示名>_<面番号>.log

シフト形式ローテーションの場合

最新ファイル名

lin_<Reliable Messagingの表示名>.log

バックアップファイル名

lin_<Reliable Messagingの表示名>_<面番号>.log

コントロールファイル名※

lin_<Reliable Messagingの表示名>_.conf

Reliable Messagingの表示名については，永続版リソースアダプタの場合は「3.4.4(1)　キュー定義ファイルの記述形式」を，非永続版リソースアダプタの場合は「3.5.2(1)　キュー定義ファイルの記述形式」を参照してください。

面番号はRMLogTraceFileNumプロパティ指定値が最大数です。また，トレースファイル（拡張子がlogのファイル）サイズはRMLogTraceFileSizeプロパティ指定値が最大長（単位：バイト）です。

注※

ログライブラリが使用するバイナリ形式のファイルを出力先ディレクトリに出力します。ファイルサイズは固定で256バイトです。

出力形式

回線トレースの出力形式を次の図に示します。

図9‒7　回線トレースの出力形式

回線トレースの出力項目を次の表に示します。

表9‒9　回線トレースの出力項目

項番

出力項目

長さ

（バイト）

説明

1

番号

4

トレースレコードの通番です。

2

日付

10

トレースの取得日付です。

形式はyyyy/mm/ddです。

3

時刻

12

トレースの取得時刻です。

形式はhh:mm:ss.sssです。

ローカル時刻でミリ秒単位の時刻です。

4

製品ID

16

製品を識別するための識別子です。

Reliable Messagingを表す"RM"が出力されます。

5

pid

8

プロセスIDです。

6

tid

8

スレッドIDです。

7

ID

11

空白が出力されます。

8

送受信識別子

7

出力する電文の種別と送受信タイミングを判別する識別子です。識別子の種類は次のとおりです。

リクエストメッセージの送信：SND_REQ

リクエストメッセージの受信：RCV_REQ

レスポンスメッセージの送信：SND_RES

レスポンスメッセージの受信：RCV_RES

9

送信先/送信元アドレス

0〜533

送信時は出力する電文の送信先アドレス，受信時は，電文を送信した送信元アドレスを示します。

10

電文情報

0〜512※1

RMLineTraceLevelプロパティに指定する出力レベル※2によって出力情報は異なります。

次に示す情報が出力されます。

プロトコル固有ヘッダ情報

SOAPヘッダに含まれるプロトコル固有のヘッダ情報です。

SOAPヘッダ

SOAPエンベロープ

SOAPエンベロープ（SOAPヘッダ＋SOAPボディ）情報です。

SOAPエンベロープ ＋ SOAPアタッチメント情報

11

CRLF

2

終端記号です。

注※1

長さの上限は目安となる値です。上限値を超えて出力されることがあります。SOAPヘッダを出力する場合は，電文情報を1000文字まで出力します。SOAPヘッダ以外を出力する場合は，トレース1行で出力できる範囲まで電文情報を出力します。出力できる範囲を超えた情報は切り捨てます。

注※2

出力情報と出力レベルを次の表に示します。

表9‒10　回線トレースの出力情報と出力レベル

項番

出力情報

レベル1

レベル2

レベル3

レベル4

レベル5

1

SOAPヘッダ

×

×

○

×

×

2

SOAPエンベロープ

（SOAPヘッダ＋SOAPボディ）

×

×

×

○

×

3

SOAPエンベロープ＋SOAPアタッチメント情報

×

×

×

×

○

（凡例）

○：出力されます。

×：出力されません。

電文情報の出力範囲と出力レベルを次の図に示します。

図9‒8　電文情報の出力範囲と出力レベル

9.3.6　PRFトレース

PRFトレースとは，クライアントからのリクエストがEISに至るまで，およびその処理結果がクライアントに返されるまでの，リクエストの一連の処理で出力される性能解析トレース情報です。Reliable Messagingでは，アプリケーションからのメッセージ送受信処理やComponent Container（TM）からのトランザクション制御などでPRFトレースを取得します。これによって，Reliable Messagingでの性能問題を特定でき，早期に問題を解決できます。

PRFトレースの運用方法および機能の詳細については，「4.4　PRFトレースファイルの運用（永続版リソースアダプタの場合）」，「5.3　PRFトレースファイルの運用（非永続版リソースアダプタの場合）」，およびマニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

また，出力先ディレクトリおよび出力ファイル名については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」の性能解析トレースファイルの出力先と出力情報に関する内容を参照してください。

(1)　トレース取得ポイント

Reliable Messagingでは，次に示す処理の入口と出口でPRFトレースを取得します。なお，トレース取得ポイントの詳細については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」を参照してください。

アプリケーションからのコネクションの取得と解放処理

J2EEサーバ（Component Container）からのコネクションのアソシエート処理

アプリケーションからのメッセージ送受信処理

J2EEサーバ（Component Container）からのトランザクション制御

JMSアプリケーションからのJMSセッションの決着処理

J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理

各処理でのPRFトレースの出力ポイントと位置情報を表すイベントID，およびトレースの取得レベルについては，「付録D　PRFトレース取得時のイベントID」を参照してください。

(2)　PRFトレースの取得情報

Reliable MessagingではPRFトレースから戻り値やキュー名称などが取得できます。PRFトレース情報のヘッダが，Rc，INT，OPR，およびOPTの項目がReliable Messagingで取得できる情報です。また，取得できる情報はPRFトレースの出力ポイントと位置情報を表すイベントIDによって異なります。PRFトレースの出力ポイントと位置情報を表すイベントIDについては，「付録D　PRFトレース取得時のイベントID」を参照してください。

Reliable MessagingでPRFトレースから取得できる情報について，次に説明します。

(a)　永続版リソースアダプタの場合

永続版リソースアダプタの場合のReliable MessagingでPRFトレースから取得できる情報を次の表に示します。

Reliable Messagingで取得できる情報以外のPRFトレースの情報については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」の性能解析トレースファイルの説明を参照してください。

表9‒11　PRFトレースの取得情報（永続版リソースアダプタの場合）

イベントID

取得情報

Rc

INT

OPR

OPT

0x9360

入口トレースの場合，常に「0」が出力されます。

出口トレースおよび呼び出し後トレースの場合，次のように出力されます。

正常終了：0

異常終了：0以外

トランザクション制御では，XAのエラーコードが出力されます。そのほかのエラー出口では，1が出力されます。

transacted引数に指定した値

次のどちらかが出力されます。

true

false

acknowledgeMode引数に指定した値

次のどれかが出力されます。※1

AUTO_ACKNOWLEDGE

DUPS_OK_ACKNOWLEDGE

CLIENT_ACKNOWLEDGE

−

0x9361

−

−

−

0x9362

−

−

−

0x9363

−

−

−

0x9364

−

−

−

0x9365

−

−

−

0x9366

−

−

−

0x9367

−

−

−

0x9368

キュー名称

−

−

0x9369

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x936A

キュー名称

メッセージ送信の優先度

−

0x936B

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x936C

キュー名称

−

−

0x936D

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x936E

キュー名称

メッセージ送信の優先度

−

0x936F

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x9370

キュー名称

メッセージセレクタ※2

−

0x9371

メッセージ取得の可否

次のどちらかが出力されます。

取得成功：true

取得失敗：false

−

メッセージ送信元のルートアプリケーション情報※3

0x9372

キュー名称

タイムアウト値（ミリ秒）

−

0x9373

メッセージ取得の可否

次のどちらかが出力されます。

取得成功：true

取得失敗：false

メッセージセレクタ※2

メッセージ送信元のルートアプリケーション情報※3

0x9374

キュー名称

メッセージセレクタ※2

−

0x9375

メッセージ取得の可否

次のどちらかが出力されます。

取得成功：true

取得失敗：false

−

メッセージ送信元のルートアプリケーション情報※3

0x9376

キュー名称

メッセージセレクタ※2

−

0x9377

−

−

メッセージ送信元のルートアプリケーション情報※3

0x9378

flags引数の値

次のどれかが出力されます。

TMNOFLAGS

TMJOIN

TMRESUME

−

−

0x9379

−

−

−

0x937A

flags引数の値

次のどれかが出力されます。

TMSUCCESS

TMFAIL

TMSUSPEND

−

−

0x937B

−

−

−

0x937C

−

−

−

0x937D

−

−

−

0x937E

1フェーズコミットの有無

次のどちらかが出力されます。

true

false

−

−

0x937F

−

−

−

0x9380

−

−

−

0x9381

−

−

−

0x9382

−

−

−

0x9383

−

−

−

0x9384

flags引数の値

次のどれかが出力されます。

TMSTARTRSCAN

TMENDRSCAN

TMNOFLAGS

−

−

0x9385

−

−

−

0x9386

−

−

−

0x9387

−

−

−

0x9388

−

−

−

0x9389

−

−

−

0x938A

−

−

−

0x938B

−

−

−

0x938C

−

−

−

0x938D

−

−

−

0x938E

−

−

−

0x938F

−

−

−

0x9390

−

−

−

0x9391

−

−

−

0x9392

−

−

−

0x9393

−

−

−

0x9394

−

−

−

0x9395

キュー名称

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x9396※4

−

−

メッセージ送信元のルートアプリケーション情報※3

0x9397

−

−

−

（凡例）

−：出力されません。

注※1

AUTO_ACKNOWLEDGE，DUPS_OK_ACKNOWLEDGE，またはCLIENT_ACKNOWLEDGE以外を指定した場合は出力されません。

注※2

文字列が32文字を超える場合，後半が削除されて，前から数えて32文字が出力されます。また，取得できなかった場合は，nullが返されます。

注※3

OPT列に出力されるルートアプリケーション情報（各イベントで一連の処理の先頭になるプロセスで取得した情報）はバイト配列で出力され，ASCII列（OPT列の次の列）にはOPT列に出力されるルートアプリケーション情報のASCII文字列が出力されます。

ただし，次のメッセージを受信した場合，OPT列にルートアプリケーション情報は出力されません。

・01-02以前のバージョンのReliable Messagingで登録されたメッセージ

・共用キューに登録されたメッセージ

・BytesContainerを利用して転送されたメッセージ

・デッドメッセージキューから再登録されたメッセージ

注※4

正常に処理が終了したときだけ出力されます。エラーが発生したときは出力されません。

注※5

JMS_HITACHI_UnitIDプロパティに空文字(“”)，NULL以外の値を指定した場合だけ出力します。また，JMS_HITACHI_UnitIDプロパティとJMSMessageIDの間は半角スペース区切りで出力します。「JMS_HITACHI_UnitIDプロパティ（半角スペース）JMSMessageID」の文字列が256文字を超える場合，後半が削除されて，前から数えて256文字が出力されます。

(b)　非永続版リソースアダプタの場合

非永続版リソースアダプタの場合のReliable MessagingでPRFトレースから取得できる情報を次の表に示します。

Reliable Messagingで取得できる情報以外のPRFトレースの情報については，マニュアル「アプリケーションサーバ 機能解説 保守／移行編」の性能解析トレースファイルの説明を参照してください。

表9‒12　PRFトレースの取得情報（非永続版リソースアダプタの場合）

イベントID

取得情報

Rc

INT

OPR

OPT

0x9300

入口トレースの場合，常に「0」が出力されます。

出口トレースおよび呼び出し後トレースの場合，次のように出力されます。

正常終了：0

異常終了：0以外

トランザクション制御では，XAのエラーコードが出力されます。そのほかのエラー出口では，1が出力されます。

transacted引数に指定した値

次のどちらかが出力されます。

true

false

acknowledgeMode引数に指定した値

次のどれかが出力されます。※1

AUTO_ACKNOWLEDGE

DUPS_OK_ACKNOWLEDGE

CLIENT_ACKNOWLEDGE

−

0x9301

−

−

−

0x9302

−

−

−

0x9303

−

−

−

0x9304

−

−

−

0x9305

−

−

−

0x9306

−

−

−

0x9307

−

−

−

0x9308

キュー名称

−

−

0x9309

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x930A

キュー名称

メッセージ送信の優先度

−

0x930B

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x930C

キュー名称

−

−

0x930D

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x930E

キュー名称

メッセージ送信の優先度

−

0x930F

−

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x9310

キュー名称

メッセージセレクタ※2

−

0x9311

メッセージ取得の可否

次のどちらかが出力されます。

取得成功：true

取得失敗：false

−

メッセージ送信元のルートアプリケーション情報※3

0x9312

キュー名称

タイムアウト値（ミリ秒）

−

0x9313

メッセージ取得の可否

次のどちらかが出力されます。

取得成功：true

取得失敗：false

メッセージセレクタ※2

メッセージ送信元のルートアプリケーション情報※3

0x9314

キュー名称

メッセージセレクタ※2

−

0x9315

メッセージ取得の可否

次のどちらかが出力されます。

取得成功：true

取得失敗：false

−

メッセージ送信元のルートアプリケーション情報※3

0x9316

キュー名称

メッセージセレクタ※2

−

0x9317

−

−

メッセージ送信元のルートアプリケーション情報※3

0x9318

flags引数の値

次のどれかが出力されます。

TMNOFLAGS

TMJOIN

TMRESUME

−

−

0x9319

−

−

−

0x931A

flags引数の値

次のどれかが出力されます。

TMSUCCESS

TMFAIL

TMSUSPEND

−

−

0x931B

−

−

−

0x931C

−

−

−

0x931D

−

−

−

0x931E

1フェーズコミットの有無

次のどちらかが出力されます。

true

false

−

−

0x931F

−

−

−

0x9320

−

−

−

0x9321

−

−

−

0x9322

−

−

−

0x9323

−

−

−

0x9324

flags引数の値

次のどれかが出力されます。

TMSTARTRSCAN

TMENDRSCAN

TMNOFLAGS

−

−

0x9325

−

−

−

0x9326

−

−

−

0x9327

−

−

−

0x9328

−

−

−

0x9329

−

−

−

0x932A

−

−

−

0x932B

−

−

−

0x932C

−

−

−

0x932D

−

−

−

0x932E

−

−

−

0x932F

−

−

−

0x9330

−

−

−

0x9331

−

−

−

0x9332

−

−

−

0x9333

−

−

−

0x9335

−

−

−

0x9336

キュー名称

−

メッセージのJMS_HITACHI_UnitIDプロパティの値，JMSMessageID※5

0x9337※4

−

−

メッセージ送信元のルートアプリケーション情報※3

0x9338

−

−

−

（凡例）

−：出力されません。

注※1

AUTO_ACKNOWLEDGE，DUPS_OK_ACKNOWLEDGE，またはCLIENT_ACKNOWLEDGE以外を指定した場合は出力されません。

注※2

文字列が32文字を超える場合，後半が削除されて，前から数えて32文字が出力されます。また，取得できなかった場合は，nullが返されます。

注※3

OPT列に出力されるルートアプリケーション情報（各イベントで一連の処理の先頭になるプロセスで取得した情報）はバイト配列で出力され，ASCII列（OPT列の次の列）にはOPT列に出力されるルートアプリケーション情報のASCII文字列が出力されます。

注※4

正常に処理が終了したときだけ出力されます。エラーが発生したときは出力されません。

注※5

JMS_HITACHI_UnitIDプロパティに空文字(“”)，NULL以外の値を指定した場合だけ出力します。また，JMS_HITACHI_UnitIDプロパティとJMSMessageIDの間は半角スペース区切りで出力します。「JMS_HITACHI_UnitIDプロパティ（半角スペース）JMSMessageID」の文字列が256文字を超える場合，後半が削除されて，前から数えて256文字が出力されます。

9.4　キューの障害

Reliable Messagingがキューに関連する障害を検知した場合，該当のキューが閉塞状態になる場合があります。閉塞状態のキューは，hrmdelqueコマンドおよびhrmlsqueコマンドだけ受け付け，それ以外のコマンドおよびメッセージの送受信は実行できません。Reliable Messagingは，次の契機でキューの障害を検知します。

Reliable Messagingの復元処理時の管理情報テーブルの不正

共用キューのキュー復元時のバージョン不正

共用キューが保持するデータの不正および矛盾

キューの障害が発生したときの対処方法について次に説明します。

9.4.1　Reliable Messagingの復元処理時の管理情報テーブルの不正

Reliable Messagingの復元処理時に，管理情報テーブル（キュー情報テーブル，FIFO情報テーブル，およびメッセージ情報テーブル）のレコードの不正が検知された場合，キューが閉塞します。復元対象と対処方法を次の表に示します。

表9‒13　管理情報テーブルのレコード不正検知時の復元対象とその対処方法

復元対象

対処方法

キュー情報テーブル

hrmdelqueコマンドで該当のキューを削除してください。

FIFO情報テーブル

hrmdelqueコマンドで該当のキューを削除してください。※

メッセージ情報テーブル

Reliable Messagingを停止したあと，不正なメッセージ情報テーブルのレコードを削除してください。

注※

該当のFIFOが属するキュー名が不正（存在しない）である場合は，Reliable Messagingがメッセージを出力して，FIFOを削除します。

9.4.2　共用キューのキュー復元時のバージョン不正

共用キューの復元時に，復元した共用キューのバージョンが，使用中のReliable Messagingのバージョンに対応する共用キューバージョンと互換性がなかった場合，該当の共用キューを閉塞します。受信用共用キューの場合は，共用キュー用のDBテーブルに格納されているバージョンをチェックし，送信用共用キューの場合は，格納先のDBテーブルに格納されているバージョンをチェックします。なお，格納先のDBテーブルが存在しない場合も不正とみなして閉塞します。

Reliable Messagingを停止したあと，受信用共用キューの場合は該当の共用キューを，送信用共用キューの場合は格納先の受信用共用キューをバージョンアップしてください。共用キューのバージョンアップについては，「付録H.3　共用キューのバージョンアップ」を参照してください。

9.4.3　共用キューが保持するデータの不正および矛盾

Reliable Messaging起動時，メッセージ送受信時，コマンド実行時など，共用キューのDBテーブルにアクセスする契機でDBの情報に不正や矛盾を検知すると閉塞します。なお，閉塞した共用キューは使用できないため，hrmdelqueコマンドで削除してください。

付録

付録A　JMS仕様との差異

Reliable MessagingのJMSインタフェースの機能について，Oracle Corporationが提供するJMS Version 1.0.2bとの機能差を説明します。

付録A.1　インタフェースの機能差

Reliable Messagingがサポートするインタフェースを次の表に示します。機能種別ごとにインタフェース名のアルファベット順に説明します。サポートしているインタフェースのメソッドの機能差については，「付録A.3　メソッドの機能差」を参照してください。

表A‒1　サポートするインタフェース

項番

機能種別

インタフェース名

サポートの有無

注意事項

1

メッセージング共通機能

Connection

○

−

2

ConnectionFactory

○

3

ConnectionMetaData

○

4

Destination

○

5

MessageConsumer

○

6

MessageProducer

○

7

Session

○

8

PTPメッセージング機能

Queue

○

9

QueueBrowser

○

10

QueueConnection

○

11

QueueConnectionFactory

○

12

QueueReceiver

○

13

QueueSender

○

14

QueueSession

○

15

パブリッシュ／サブスクライブメッセージング機能

TemporaryTopic

×

16

Topic

×

17

TopicConnection

×

18

TopicConnectionFactory

×

19

TopicPublisher

×

20

TopicSession

×

21

TopicSubscriber

×

22

メッセージ機能

BytesMessage

○

共用キューではヘッダとプロパティの情報を送受信できません。

23

DeliveryMode

○

−

24

MapMessage

×

25

Message

○

共用キューでは使用できません。共用キューにこのインタフェースを使用してメッセージを送信した場合は例外が発生します。

26

ObjectMessage

○

共用キューでは使用できません。共用キューにこのインタフェースを使用してメッセージを送信した場合は例外が発生します。

27

StreamMessage

×

−

28

TextMessage

○

共用キューでは使用できません。共用キューにこのインタフェースを使用してメッセージを送信した場合は例外が発生します。

29

XA機能（JMSのオプション機能）

XAConnection

×

−

30

XAConnectionFactory

×

31

XAQueueConnection

×

32

XAQueueConnectionFactory

×

33

XAQueueSession

×

34

XASession

×

35

XATopicConnection

×

36

XATopicConnectionFactory

×

37

XATopicSession

×

38

リスナ機能

ExceptionListener

×

39

MessageListener

○

Message-driven Beanで使用する場合だけサポートしています。

40

その他（JMSのオプション機能）

ConnectionConsumer

×

−

41

ServerSession

×

42

ServerSessionPool

×

43

TemporaryQueue

×

（凡例）

○：サポートしています。

×：未サポートです。

−：特にありません。

付録A.2　クラスの機能差

Reliable Messagingがサポートするクラスを次の表に示します。機能種別ごとに説明します。

表A‒2　サポートするクラス

項番

機能種別

クラス名

サポートの有無

注意事項

1

PTPメッセージング機能

QueueRequestor

×

−

2

パブリッシュ／サブスクライブメッセージング機能

TopicRequestor

×

（凡例）

×：未サポートです。

−：特にありません。

付録A.3　メソッドの機能差

メソッドの機能差について説明します。機能種別ごとの表でインタフェース名およびメソッド名のアルファベット順に説明します。

(1)　メッセージング共通機能のメソッドの機能差

メッセージング共通機能のメソッドの機能差を次の表に示します。

表A‒3　メッセージング共通機能のメソッドの機能差

項番

インタフェース名

メソッド名

機能差

1

Connection

void close()

−

2

java.lang.String getClientID()

このメソッドは未サポートです。このメソッドを発行した場合，必ずnullが返されます。

3

ExceptionListener

getExceptionListener()

このメソッドは未サポートです。このメソッドを発行した場合，必ずnullが返されます。

4

ConnectionMetaData

getMetaData()

−

5

void setClientID(

java.lang.String clientID)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

6

void setExceptionListener(

ExceptionListener listener)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

7

void start()

−

8

void stop()

−

9

ConnectionFactory

−

−

10

ConnectionMetaData

int getJMSMajorVersion()

1が返されます。

11

int getJMSMinorVersion()

0が返されます。

12

java.lang.String

getJMSProviderName()

"Cosminexus Reliable Messaging"が返されます。

13

java.lang.String getJMSVersion()

"1.0"が返されます。

14

java.util.Enumeration

getJMSXPropertyNames()

"JMSXRcvTimestamp"，"JMSXDeliveryCount"，"JMSXGroupID"および"JMSXGroupSeq"が格納されたEnumerationが返されます。

15

int getProviderMajorVersion()

JMSプロバイダのメジャーバージョン番号を返します。この値は，Reliable Messagingのバージョンに対応します。

16

int getProviderMinorVersion()

JMSプロバイダのマイナーバージョン番号を返します。この値は，Reliable Messagingのリビジョンに対応します。

17

java.lang.String

getProviderVersion()

JMSプロバイダのバージョンを示す文字列を返します。この文字列は，Reliable Messagingのバージョンおよびリビジョンに対応します。

18

Destination

−

−

19

MessageConsumer

void close()

−

20

MessageListener

getMessageListener()

このメソッドは未サポートです。このメソッドを発行した場合，必ずnullが返されます。

21

java.lang.String

getMessageSelector()

−

22

Message receive()

−

23

Message receive(long timeout)

−

24

Message receiveNoWait()

−

25

void setMessageListener(

MessageListener listener)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

26

MessageProducer

void close()

−

27

int getDeliveryMode()

このメソッドは未サポートです。このメソッドを発行した場合，必ず0が返されます。

28

boolean getDisableMessageID()

このメソッドは未サポートです。このメソッドを発行した場合，必ずfalseが返されます。

29

boolean

getDisableMessageTimestamp()

このメソッドは未サポートです。このメソッドを発行した場合，必ずfalseが返されます。

30

int getPriority()

−

31

long getTimeToLive()

このメソッドは未サポートです。このメソッドを発行した場合，必ず0が返されます。

32

void setDeliveryMode(

int deliveryMode)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

33

void setDisableMessageID(

boolean value)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

34

void setDisableMessageTimestamp(

boolean value)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

35

void setPriority(int defaultPriority)

−

36

void setTimeToLive(

long timeToLive)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

37

Session

void close()

−

38

void commit()

−

39

BytesMessage

createBytesMessage()

−

40

MapMessage createMapMessage()

このメソッドは未サポートです。このメソッドを発行した場合，JMSExceptionが発生します。

41

Message createMessage()

−

42

ObjectMessage

createObjectMessage()

−

43

ObjectMessage

createObjectMessage(

java.io.Serializable object)

−

44

StreamMessage

createStreamMessage()

このメソッドは未サポートです。このメソッドを発行した場合，JMSExceptionが発生します。

45

TextMessage createTextMessage()

−

46

TextMessage createTextMessage(

java.lang.String text)

−

47

MessageListener

getMessageListener()

このメソッドは未サポートです。このメソッドを発行した場合，必ずnullが返されます。

48

boolean getTransacted()

−

49

void recover()

−

50

void rollback()

−

51

void run()

このメソッドは未サポートです。このメソッドを発行した場合，JMSExceptionが発生します。

52

void setMessageListener(

MessageListener listener)

このメソッドは未サポートです。このメソッドで設定した値は実際には使用されません。

（凡例）

−：機能差はありません。

(2)　PTPメッセージング機能のメソッドの機能差

PTPメッセージング機能のメソッドの機能差を次の表に示します。

表A‒4　PTPメッセージング機能のメソッドの機能差

項番

インタフェース名

メソッド名

機能差

1

Queue

java.lang.String getQueueName()

−

2

java.lang.String toString()

−

3

QueueBrowser

void close()

−

4

java.util.Enumeration

getEnumeration()

現在のキューにあるメッセージの一覧を取得します。一覧を取得したあとにメッセージを参照する際，すでにメッセージは削除または消失していることがあります。

5

java.lang.String

getMessageSelector()

−

6

Queue getQueue()

−

7

QueueConnection

ConnectionConsumer

createConnectionConsumer(

Queue queue,

java.lang.String messageSelector,

ServerSessionPool sessionPool,

int maxMessages)

このメソッドは未サポートです。このメソッドを発行した場合，JMSExceptionが発生します。

8

QueueSession

createQueueSession(

boolean transacted,

int acknowledgeMode)

−

9

QueueConnectionFactory

QueueConnection

createQueueConnection()

−

10

QueueConnection

createQueueConnection(

java.lang.String userName,

java.lang.String password)

−

11

QueueReceiver

Queue getQueue()

−

12

QueueSender

Queue getQueue()

−

13

void send(Message message)

−

14

void send(Message message,

int deliveryMode, int priority,

long timeToLive)

このメソッドを発行した場合，deliveryMode引数とtimeToLive引数を無視して実行されます。

15

void send(Queue queue,

Message message)

−

16

void send(Queue queue,

Message message,

int deliveryMode, int priority,

long timeToLive)

このメソッドを発行した場合，deliveryMode引数とtimeToLive引数を無視して実行されます。

17

QueueSession

QueueBrowser createBrowser(

Queue queue)

−

18

QueueBrowser createBrowser(

Queue queue,

java.lang.String messageSelector)

−

19

Queue createQueue(

java.lang.String queueName)

−

20

QueueReceiver createReceiver(

Queue queue)

−

21

QueueReceiver createReceiver(

Queue queue,

java.lang.String messageSelector)

−

22

QueueSender createSender(

Queue queue)

−

23

TemporaryQueue

createTemporaryQueue()

このメソッドは未サポートです。このメソッドを発行した場合，JMSExceptionが発生します。

（凡例）

−：機能差はありません。

(3)　メッセージ機能のメソッドの機能差

メッセージ機能のメソッドの機能差を次の表に示します。

表A‒5　メッセージ機能のメソッドの機能差

項番

インタフェース名

メソッド名

機能差

1

BytesMessage

boolean readBoolean()

−

2

byte readByte()

−

3

int readBytes(byte[] value)

−

4

int readBytes(

byte[] value, int length)

−

5

char readChar()

−

6

double readDouble()

−

7

float readFloat()

−

8

int readInt()

−

9

long readLong()

−

10

short readShort()

−

11

int readUnsignedByte()

−

12

int readUnsignedShort()

−

13

java.lang.String readUTF()

−

14

void reset()

−

15

void writeBoolean(boolean value)

−

16

void writeByte(byte value)

−

17

void writeBytes(byte[] value)

−

18

void writeBytes(byte[] value,

int offset, int length)

−

19

void writeChar(char value)

−

20

void writeDouble(double value)

−

21

void writeFloat(float value)

−

22

void writeInt(int value)

−

23

void writeLong(long value)

−

24

void writeObject(

java.lang.Object value)

−

25

void writeShort(short value)

−

26

void writeUTF(

java.lang.String value)

−

27

DeliveryMode

−

−

28

Message

void acknowledge()

Message-driven Beanで配信されたメッセージには使用できません。

このメソッドをMessage-driven Beanで配信されたメッセージに使用した場合はJMSExceptionが発生します。

また，QueueConnection.createQueueSession()メソッドのtransacted引数がtrueのとき，およびtransacted引数がfalseかつacknowledgeMode引数がAUTO_ACKNOWLEDGEまたは DUPS_OK_ACKNOWLEDGEのときに発行した場合はJMSExceptionが発生します。

29

void clearBody()

−

30

void clearProperties()

−

31

boolean getBooleanProperty(

java.lang.String name)

−

32

byte getByteProperty(

java.lang.String name)

−

33

double getDoubleProperty(

java.lang.String name)

−

34

float getFloatProperty(

java.lang.String name)

−

35

int getIntProperty(

java.lang.String name)

−

36

java.lang.String

getJMSCorrelationID()

JMSCorrelationIDヘッダが設定されていないときに発行した場合，nullが返されます。

37

byte[]

getJMSCorrelationIDAsBytes()

JMSCorrelationIDヘッダが設定されていないときに発行した場合，nullが返されます。

38

int getJMSDeliveryMode()

JMSDeliveryModeヘッダが設定されていないときに発行した場合，0が返されます。

39

Destination getJMSDestination()

JMSDestinationヘッダが設定されていないときに発行した場合，nullが返されます。

40

long getJMSExpiration()

JMSExpirationヘッダが設定されていないときに発行した場合，0が返されます。

41

java.lang.String

getJMSMessageID()

JMSMessageIDヘッダが設定されていないときに発行した場合，nullが返されます。

42

int getJMSPriority()

JMSPriorityヘッダが設定されていないときに発行した場合，4が返されます。

43

boolean getJMSRedelivered()

JMSRedeliveredヘッダが設定されていないときに発行した場合，falseが返されます。

44

Destination getJMSReplyTo()

JMSReplyToヘッダが設定されていないときに発行した場合，nullが返されます。

45

long getJMSTimestamp()

JMSTimestampヘッダが設定されていないときに発行した場合，0が返されます。

46

java.lang.String getJMSType()

JMSTypeヘッダが設定されていないときに発行した場合，nullが返されます。

47

long getLongProperty(

java.lang.String name)

−

48

java.lang.Object getObjectProperty(

java.lang.String name)

−

49

java.util.Enumeration

getPropertyNames()

プロパティがない場合はnullが返されます。

50

short getShortProperty(

java.lang.String name)

−

51

java.lang.String getStringProperty(

java.lang.String name)

−

52

boolean propertyExists(

java.lang.String name)

−

53

void setBooleanProperty(

java.lang.String name,

boolean value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

54

void setByteProperty(

java.lang.String name, byte value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

55

void setDoubleProperty(

java.lang.String name,

double value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

56

void setFloatProperty(

java.lang.String name, float value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

57

void setIntProperty(

java.lang.String name, int value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

58

void setJMSCorrelationID(

java.lang.String correlationID)

correlationID引数の文字数が512文字を超える場合，JMSExceptionが発生します。

59

void setJMSCorrelationIDAsBytes(

byte[] correlationID)

correlationID引数の文字数が512文字を超える場合，JMSExceptionが発生します。

60

void setJMSDeliveryMode(

int deliveryMode)

このメソッドで設定した値は実際には使用されません。

61

void setJMSDestination(

Destination destination)

このメソッドで設定した値は実際には使用されません。

62

void setJMSExpiration(

long expiration)

このメソッドで設定した値は実際には使用されません。

63

void setJMSMessageID(

java.lang.String id)

このメソッドで設定した値は実際には使用されません。

64

void setJMSPriority(int priority)

このメソッドで設定した値は実際には使用されません。

65

void setJMSRedelivered(

boolean redelivered)

このメソッドで設定した値は実際には使用されません。

66

void setJMSReplyTo(

Destination replyTo)

−

67

void setJMSTimestamp(

long timestamp)

このメソッドで設定した値は実際には使用されません。

68

void setJMSType(

java.lang.String type)

type引数の文字数が512文字を超える場合，JMSExceptionが発生します。

69

void setLongProperty(

java.lang.String name, long value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

70

void setObjectProperty(

java.lang.String name,

java.lang.Object value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

value引数の文字数が512文字を超える場合，JMSExceptionが発生します。

71

void setShortProperty(

java.lang.String name, short value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

72

void setStringProperty(

java.lang.String name,

java.lang.String value)

name引数の文字数が64文字を超える場合，JMSExceptionが発生します。

value引数の文字数が512文字を超える場合，JMSExceptionが発生します。

73

ObjectMessage

java.io.Serializable getObject()

−

74

void setObject(

java.io.Serializable object)

−

75

TextMessage

java.lang.String getText()

−

76

void setText(java.lang.String string)

−

（凡例）

−：機能差はありません。

付録B　WS-Reliabilityサポート一覧

サーバ間通信の仕様について，WS-ReliabilityとReliable Messagingの違いを中心に説明します。

付録B.1　通信仕様

Reliable Messagingは，WS-Reliabilityに規定されるHTTPバインディングに従って通信します。Reliable MessagingがReliable Messageを送信する場合，WS-ReliabilityでのProducerは，Reliable Messagingが管理する送信側のキューです。一方，Reliable MessagingがReliable Messageを受信する場合，WS-ReliabilityでのConsumerは，Reliable Messagingが管理する受信側のキューです。

通信に関する制限事項は次のとおりです。

リプライパターンのうち，CallbackおよびPollはサポートしません。

SOAP 1.1だけをサポートします。SOAP 1.2はサポートしません。

トランスポートはHTTP(S)だけをサポートします。

WSDLインタフェースはサポートしません。

それぞれのリプライパターンでの通信の方法は，WS-Reliability 1.1のドキュメントを参照してください。

付録B.2　QoS

QoS（通信品質）について留意しなければならない点は次のとおりです。

OrderedDelivery時のAcknowledgmentの仕様

受信処理性能の向上のため，OrderedDeliveryを要求するReliable Messageを受信した場合，そのReliable Messageが順序不正（シーケンス番号に抜けのある）のメッセージだった場合もAcknowledgmentを返します。このメッセージはReliable Messagingが保持しておき，順序不正が回復した際に配信されます。

NoDuplicateDeliveryを要求しない場合の動作

Reliable Messagingでは，NoDuplicateDeliveryを要求しない（Request/DuplicateElimination要素が存在しない）Reliable Messageを受信した場合でも，受信したReliable Messageの重複防止を行います。

再送の仕様

Reliable Messagingは，Acknowledgmentまたは「MessageProcessingFailure」以外のRM-FaultのRM-Reply Messageが返されるまでReliable Messageを再送します。Reliable Messageに設定した有効期限を超過しても再送を継続します。

付録B.3　リプライパターン

リプライパターンについて留意しなければならない点は次のとおりです。

(1)　Pollリプライパターンに関する動作

Reliable MessagingがReliable Messageの送信側の場合

Reliable Messagingは，Pollリプライパターンを指定したReliable MessageおよびPollRequest Messageは送信しません。

Reliable MessagingがReliable Messageの受信側の場合

Pollリプライパターンを指定されたReliable Messageを受信した場合，そのリクエストのレスポンスとして「FeatureNotSupported」のRM-Faultを設定したRM-Reply Messageを返信します。その後，PollRequest Message受信時に，PollRequest Messageに指定されたメッセージに対して「FeatureNotSupported」のRM-Faultを設定したRM-Reply Messageを返信します。

(2)　Callbackリプライパターンに関する動作

Reliable MessagingがReliable Messageの送信側の場合

Reliable Messagingは，Callbackリプライパターンを指定したReliable Messageを送信しません。

Reliable MessagingがReliable Messageの受信側の場合

Callbackリプライパターンを指定されたReliable Messageを受信した場合，そのリクエストのレスポンスとして「FeatureNotSupported」のRM-Faultを設定したRM-Reply Messageを返信します。

(3)　有効期限切れのメッセージに対する応答

Reliable Messagingは，受信したReliable Messageのメッセージ有効期限が切れていた場合，そのReliable Messageがすでに受信してAcknowledgmentを返したメッセージだった場合でも，RM-Faultを返します。

付録B.4　グループ

グループについて留意しなければならない点は次のとおりです。

(1)　グループの新規作成（切り替え）

Reliable MessagingがReliable Messageの送信側の場合，Reliable Messageに設定するグループIDは，次に示すタイミングで新しいグループに切り替わります。

InOrderのグループのReliable Messageに「MessageProcessingFailure」および「FeatureNotSupported」以外のRM-Faultが返されたとき

グループのReliable Messageに「GroupAborted」のRM-Faultが返されたとき

グループ有効期限が過ぎたとき

グループ有効期限にReliable Messageの有効期限が追い付いたとき

シーケンス番号が最大値に到達したとき

非永続キューに属するグループを再起動したとき

切り替わり以降に新たに送信されたメッセージは，新しいグループのメッセージとして送信されます。

(2)　グループの削除

Reliable MessagingがReliable Messageの受信側の場合，グループの有効期限が超過したときにグループ情報を破棄します。

グループ情報を破棄したあとに，破棄したグループのReliable Messageを受信した場合は，新しいグループの最初のメッセージとして扱います。

(3)　グループの閉鎖

Reliable MessagingがReliable Messageの受信側の場合，次に示すタイミングでグループを閉鎖します。

InOrderのグループのReliable Messageに「MessageProcessingFailure」および「FeatureNotSupported」以外のRM-Faultを返す場合（hrmskipmsgでスキップしたメッセージに「PermanentProcessingFailure」を返す場合を除く）

InOrderのグループで，滞留しているメッセージが有効期限切れになった場合

非永続キューに属するグループについては，Reliable Messagingが再起動した場合

閉鎖されたグループのReliable Messageを受信した場合，「GroupAborted」のRM-Faultを返します。閉鎖されたグループは，グループ削除のタイミングで削除されます。

(4)　グループ有効期限の更新

Reliable MessagingがReliable Messageの送信側の場合

同一グループで送信するすべてのReliable Messageに，同一のグループ有効期限を設定します。

Reliable MessagingがReliable Messageの受信側の場合

グループの削除を判断するためのグループ有効期限に，グループで受信した最初のReliable Messageのグループ有効期限を使用します。

(5)　GroupMaxIdleDurationによるグループの削除

GroupMaxIdleDurationによるグループの削除はサポートしません。GroupMaxIdleDurationが指定されたReliable Messageを受信した場合，Reliable Messagingは「FeatureNotSupported」のRM-Faultを返します。

付録B.5　WS-Reliabilityのヘッダ要素

Reliable Messagingで送受信するメッセージのSOAPヘッダ部分には，WS-Reliabilityプロトコルのヘッダ要素が設定されます。WS-Reliabilityプロトコルのヘッダ要素は，電文の種別によって設定される要素が異なります。

(1)　Reliable Messageの送信時に設定される要素・属性

Reliable MessagingがReliable Messageを送信する時に設定される要素・属性に対する対応を次の表に示します。

表B‒1　Reliable Message送信時の対応

項番

メッセージヘッダの要素・属性

Reliable Messagingの対応

1

Request

WS-Reliabilityプロトコルの仕様と同様です。

2

Request/MessageId

WS-Reliabilityプロトコルの仕様と同様です。

3

Request/MessageId/@groupId※

WS-Reliabilityプロトコルの仕様と同様です。

4

Request/MessageId/SequenceNum

必ず設定します。

5

Request/MessageId/SequenceNum/@groupExpiryTime

必ず設定します。

6

Request/MessageId/SequenceNum/@groupMaxIdleDuration

設定しません。

7

Request/MessageId/SequenceNum/@number

WS-Reliabilityプロトコルの仕様と同様です。

8

Request/MessageId/SequenceNum/@last

設定しません。

9

Request/ExpiryTime

WS-Reliabilityプロトコルの仕様と同様です。

10

Request/ReplyPattern

WS-Reliabilityプロトコルの仕様と同様です。

11

Request/ReplyPattern/Value

Responseだけ設定します。

CallbackおよびPollは設定しません。

12

Request/ReplyPattern/ReplyTo

設定しません。

13

Request/ReplyPattern/ReplyTo/@reference-scheme

設定しません。

14

Request/ReplyPattern/ReplyTo/any

設定しません。

15

Request/ReplyPattern/ReplyTo/BareURI

設定しません。

16

Request/AckRequested

必ず設定します。

17

Request/DuplicateElimination

必ず設定します。

18

Request/MessageOrder

WS-Reliabilityプロトコルの仕様と同様です。

注※

Reliable Messagingで設定するRequest/MessageId/@groupIdのフォーマットは次のとおりです。

mid://<システム名><グループID作成時刻><グループID通番>@<自マシンのIPアドレスから作成した数値>

グループID作成時刻の出力形式は「YYYYMMDDhhmmssSSS」です。

グループID通番は4けた固定です。例えば，グループ通番が1の場合は「0001」が設定されます。

(2)　Reliable Messageの受信時に設定される要素・属性

Reliable Messagingが受信したReliable Messageに設定される要素に対する対応と，指定できる値の範囲を次の表に示します。

表B‒2　Reliable Message受信時の対応

項番

メッセージヘッダの要素・属性

Reliable Messagingの対応※1

指定できる値の範囲※2

1

Request

WS-Reliabilityプロトコルの仕様と同様です。

−

2

Request/MessageId

WS-Reliabilityプロトコルの仕様と同様です。

−

3

Request/MessageId/@groupId

WS-Reliabilityプロトコルの仕様と同様です。

0〜256文字

4

Request/MessageId/SequenceNum

設定を省略したメッセージにはRM-Faultを返します。

−

5

Request/MessageId/SequenceNum/@groupExpiryTime

設定を省略したメッセージにはRM-Faultを返します。

1970-01-01T00:00:00Z〜9999-12-31T23:59:59Z

6

Request/MessageId/SequenceNum/@groupMaxIdleDuration

設定したメッセージにはRM-Faultを返します。

−

7

Request/MessageId/SequenceNum/@number

WS-Reliabilityプロトコルの仕様と同様です。

−

8

Request/MessageId/SequenceNum/@last

設定したメッセージにはRM-Faultを返します。

−

9

Request/ExpiryTime

WS-Reliabilityプロトコルの仕様と同様です。

1970-01-01T00:00:00Z〜9999-12-31T23:59:59Z

10

Request/ReplyPattern

WS-Reliabilityプロトコルの仕様と同様です。

−

11

Request/ReplyPattern/Value

Responseだけ設定します。CallbackまたはPollを設定したメッセージにはRM-Faultを返します。

−

12

Request/ReplyPattern/ReplyTo

設定された値は無視します。

−

13

Request/ReplyPattern/@reference-scheme

設定された値は無視します。

−

14

Request/ReplyPattern/any

設定された値は無視します。

−

15

Request/ReplyPattern/BareURI

設定された値は無視します。

−

16

Request/AckRequested

WS-Reliabilityプロトコルの仕様と同様です。

−

17

Request/DuplicateElimination

WS-Reliabilityプロトコルの仕様と同様です。

−

18

Request/MessageOrder

WS-Reliabilityプロトコルの仕様と同様です。

−

（凡例）

−：該当しません。

注※1

RM-Faultを返す場合，「FeatureNotSupported」を設定したRM-Reply Messageが返信されます。

注※2

指定できる値の範囲を超えている要素または属性を設定しているReliableMessageを受信した場合，次の表に示すRM-Faultが設定されたRM-Reply Messageを返信します。

表B‒3　設定範囲を超えた場合に返信されるRM-Fault

メッセージヘッダの要素・属性

RM-Fault

Request/MessageId/@groupId

InvalidMessageId

Request/MessageId/@groupExpiryTime

InvalidMessageParameters

Request/ExpiryTime

InvalidExpiryTime

(3)　RM-Reply Messageの送信時に設定される要素・属性

Reliable MessagingがRM-Reply Messageを送信する時に設定される要素に対する対応を次の表に示します。

表B‒4　RM-Reply Message送信時の対応

項番

メッセージヘッダの要素と属性

Reliable Messagingの対応

1

Response

WS-Reliabilityプロトコルの仕様と同様です。

2

Response/NonSequenceReply

設定しません。

3

Response/NonSequenceReply/@groupId

設定しません。

4

Response/NonSequenceReply/@fault

設定しません。

5

Response/SequenceReplies

必ず一つは設定します。

6

Response/SequenceReplies/@groupId

WS-Reliabilityプロトコルの仕様と同様です。

7

Response/SequenceReplies/ReplyRange

一つだけ設定します。

8

Response/SequenceReplies/ReplyRange/@from

@toと同じ値を設定します。

9

Response/SequenceReplies/ReplyRange/@to

@fromと同じ値を設定します。

10

Response/SequenceReplies/ReplyRange/@fault

WS-Reliabilityプロトコルの仕様と同様です。

(4)　RM-Reply Messageの受信時に設定される要素・属性

Reliable Messagingが受信したRM-Reply Messageに設定される要素に対する対応と，指定できる値の範囲を次の表に示します。

表B‒5　RM-Reply Message受信時の対応一覧

項番

メッセージヘッダの要素と属性

Reliable Messagingの対応

指定できる値の範囲※

1

Response

WS-Reliabilityプロトコルの仕様と同様です。

−

2

Response/NonSequenceReply

設定されたメッセージは破棄します。

−

3

Response/NonSequenceReply/@groupId

設定されたメッセージは破棄します。

−

4

Response/NonSequenceReply/@fault

設定されたメッセージは破棄します。

−

5

Response/SequenceReplies

一つだけ設定したメッセージには対応します。省略された，または複数設定されたメッセージは破棄します。

−

6

Response/SequenceReplies/@groupId

WS-Reliabilityプロトコルの仕様と同様です。

0〜256文字

7

Response/SequenceReplies/ReplyRange

一つだけ設定したメッセージには対応します。省略された，または複数設定されたメッセージは破棄します。

−

8

Response/SequenceReplies/ReplyRange/@from

@toと同じ値を設定したメッセージには対応します。@toと異なる値が設定されたメッセージは破棄します。

−

9

Response/SequenceReplies/ReplyRange/@to

@fromと同じ値を設定したメッセージには対応します。@fromと異なる値が設定されたメッセージは破棄します。

−

10

Response/SequenceReplies/ReplyRange/@fault

WS-Reliabilityプロトコルの仕様と同様です。

−

（凡例）

−：該当しません。

注※

指定できる値の範囲を超えている要素または属性を設定しているRM-Reply Messageを受信した場合，そのメッセージを破棄します。

(5)　PollRequest Messageの送受信時に設定される要素・属性

Reliable Messagingでは，送信，受信ともにPollRequest Messageはサポートしません。PollRequest Messageを受信した場合は，メッセージ内で指定しているメッセージに対して「FeatureNotSupported」のRM-Faultを設定したRM-Reply Messageを返信します。

なお，Reliable Messagingでは，PollRequest Messageに指定された最初のメッセージに対して「FeatureNotSupported」のRM-Faultを返します。

(6)　Reliable MessageとRM-Reply Messageの同梱

Reliable Messagingは，Reliable MessageとRM-Reply Messageが同梱されているメッセージに対して，WS-Reliabilityプロトコルの仕様とは異なる対応をします。

Reliable MessageとRM-Reply Messageが同梱されているメッセージを受信した場合，Reliable Messageに対して「FeatureNotSupported」のRM-Faultを設定したRM-Reply Messageの返信を行います。さらに，RM-Reply Messageに対してはメッセージを破棄します。

(7)　[XML Schema Part 2]dateTimeの扱い

Reliable Messagingは，groupExpiryTimeやExpiryTimeを表す[XML Schema Part2]dateTimeの値に，次の制限を持ちます。

送信時は，小数点以下の値は削除してメッセージに設定します。

受信時は，小数点以下の値は切り上げて処理します。ただし，小数点以下3けたまでの数値がすべて0の場合，小数点以下の数値を切り捨てます。

付録B.6　SOAPアタッチメント

他システムとReliable Messagingとでメッセージを送受信する場合，メッセージ本体（ペイロード）をプリミティブなバイト配列でSOAPアタッチメントに設定します。MIMEパートを含むSOAPメッセージの構成を次の図に示します。

図B‒1　MIMEパートを含むSOAPメッセージの構成

メッセージを送信する場合

Reliable Messagingから他システムへメッセージを送信する場合，メッセージ本体の情報をSOAPアタッチメントにプリミティブなバイト配列で設定します。

メッセージを受信する場合

他システムからReliable Messagingへメッセージを送信する場合，メッセージ本体の情報をSOAPアタッチメントにプリミティブなバイト配列で設定してください。なお，Content-Typeがtext/plainの場合，Content-TypeのcharsetをUTF-8に指定してください。SOAPボディにメッセージ本体の情報を設定すると，Reliable Messagingはメッセージ本体の情報を取得できません。

Reliable Messagingがメッセージを送信するときに，SOAPアタッチメントを設定するMIMEパートのMIMEヘッダに設定する内容を次の表に示します。

表B‒6　メッセージ送信時のMIMEヘッダ要素一覧

項番

MIMEヘッダ要素

説明

1

Content-Type

SOAPアタッチメントに設定したメッセージ本体のデータ型を設定します。Content-Typeがtext/plainの場合，バイト配列を文字コードがUTF-8のデータとして扱います。文字コードがUTF-8以外の値を指定してキュー間転送した場合，受信側で同じ値を取得できません。

2

Content-Transfer-Encoding

メッセージ本体を送信するときのエンコーディング方式を設定します。binaryを設定します。

付録B.7　Reliable Messagingが返信するフォルトコード一覧

Reliable Messagingは，メッセージの受信時に障害が発生した場合，WS-Reliabilityに規定されたフォルトメカニズムに従って，RM-Faultを返します。Responseリプライパターンのメッセージへの応答でRM-Faultを返す場合は，SOAP Faultも同時に返します。その際，HTTPステータスコードに返す値はSOAP通信基盤の仕様に従います。

Reliable Messagingが返すRM-Faultのフォルトコードを次の表に示します。

表B‒7　Reliable Messagingが返すRM-Faultのフォルトコード

種別

フォルトコード

障害内容

RMFault

InvalidRequest

受信したReliable Messageに次の要素がありません。

ExpiryTime

ReplyPattern

または，次の要素が二つ以上含まれています。

MessageId

ExpiryTime

ReplyPattern

受信したReliable Messageの要素が，次に示す順序に従っていません。

MessageId

ExpiryTime

ReplyPattern

MessageOrder要素があるのに，AckRequested要素とDuplicateElimination要素がありません。

SOAP:mustUnderstand属性がありません。または，SOAP:mustUnderstand属性の値は「1」以外です。

InvalidPollRequest

該当しません。

InvalidMessageId

受信したReliable Messageで，MessageId要素に含まれる要素や属性が不正です。

groupId属性の指定値が256バイトを超えています。

groupId属性の指定値がURI[RFC2396]と一致しません。

SequenceNum要素が2個以上指定されています。

InvalidMessageParameters

受信したReliable Messageの属性で，次のような不正があります。

groupExpiryTime属性とgroupMaxIdleDuration属性が両方ともありません。

groupExpiryTime属性とgroupMaxIdleDuration属性が両方とも指定されています。

groupExpiryTimeまたはgroupMaxIdleDurationの指定値が，時刻または時間として読み取れません。

number属性の値が0〜18446744073709551615の範囲外です。

受信したReliable MessageのgroupExpiryTime属性の時刻がExpiryTime要素の時刻と同じか，またはそれ以前の時刻です。

受信したReliable MessageのgroupExpiryTime属性の時刻が，以前受信した同じグループのメッセージの最大ExpiryTimeの時刻と同じか，またはそれ以前の時刻です。

InvalidReplyPattern

受信したReliable Messageで，ReplyPattern要素に含まれる要素が不正です。

・Value要素がありません。

・Value要素が二つ以上含まれています。

・Value要素にResponse，Callback，およびPoll以外の文字列が指定されています。

InvalidExpiryTime

受信したReliable Messageで，ExpiryTime要素の指定値が時刻として読み取れません。

受信したReliable Messageで，ExpiryTime要素から取得した時刻が有効期限切れです。

FeatureNotSupported

受信したReliable Messageで，SequenceNum要素が省略されています。

受信したReliable Messageで，groupMaxIdleDuration属性が指定されています。

受信したReliable Messageで，last属性が指定されています。

受信したReliable Messageで，ReplyPattern/Value要素にCallbackまたはPollが指定されています。

PollRequest Messageを受信しました。

Reliable MessageとRM-Reply Messageを同梱したSOAPメッセージを受信しました。

PermanentProcessingFailure

スキップ済みの受信待ちメッセージを受信しました。

指定されたキューがないか，またはローカルキューではありません。

受信処理中に永続的な内部障害が発生しました。

指定されたキューが閉塞状態です。

MessageProcessingFailure

配送待ちメッセージがキューのメッセージ最大数に達しているなどの理由で，受信キューにメッセージを登録できません。

指定されたキューが受信抑止中です。

受信処理中に一時的な内部障害が発生しました。

GroupAborted

障害が発生して閉鎖されたグループでメッセージを受信しました。

指定されたグループは，指定されたキュー以外に属するグループです。

受信処理中にグループが有効期限切れになり，削除されました。

非永続キューのグループが再起動によって閉鎖されました。

なお，Reliable Messagingは，SOAP Faultだけを返す場合があります。Reliable Messagingが返すSOAP Faultのフォルトコードを次の表に示します。

表B‒8　Reliable Messagingが返すSOAP Faultのフォルトコード

種別

フォルトコード

障害文字列（faultstring）

障害内容

SOAP Fault

Server

Exception occurred at the server side.

Reliable Messagingが閉塞状態のときにメッセージを受信しました。

Reliable Messagingが管理状態か，または開始中状態のときメッセージを受信しました。

受信処理中に内部障害が発生しました。

Client

Invalid message was transmitted by client side.

受信したSOAPメッセージにWS-Reliabilityのヘッダが指定されていません（プロトコルが不明のSOAPメッセージです）。

正常にRM-Faultを返せない不正なメッセージを受信しました。

付録C　サンプルアプリケーション

Reliable Messagingが提供するサンプルアプリケーションの処理の流れおよびComponent Containerで実行する手順について説明します。

次に示すサンプルアプリケーションが，Reliable Messagingのインストール先のsamplesディレクトリに格納されています。

SessionBean1

ローカルキューを使って，メッセージの送信と受信を実行します。

永続版リソースアダプタの場合と非永続版リソースアダプタの場合で実行する手順が異なります。

SessionBean2

キュー間転送を使って，メッセージの送信と受信を実行します。

永続版リソースアダプタの場合だけ提供されます。

なお，SessionBean1を動作させるための環境構築のサンプル手順については，「付録C.1　環境構築のサンプル手順」を参照してください。

付録C.1　環境構築のサンプル手順

SessionBean1を動作させるためのReliable Messagingの環境構築のサンプル手順について説明します。

なお，J2EEサーバやリソースアダプタの操作では，Management Serverから行う方法とコマンドを使用して行う方法がありますが，ここではコマンドを使用して行う方法について説明します。

(1)　前提となるマシンとソフトウェア構成

ここで説明するサンプル手順は，次に示すマシンとソフトウェア構成を前提として，Reliable Messagingの環境を構築します。

図C‒1　前提となるマシンとソフトウェア構成

各構成要素の項目を次の表に説明します。

表C‒1　構成要素の項目

構成要素名

項目

項目情報

Application Server稼働マシン

OS

Windows

Application Server（J2EEサーバ）

インストールディレクトリ

C:¥Program Files¥Hitachi¥Cosminexus

J2EEサーバ名称

MyServer

CORBAネーミングサービス（nameserv）のポート番号

900

Reliable Messaging

表示名

Cosminexus_Reliable_Messaging

リソースアダプタ種別

永続版リソースアダプタ

Reliable Messagingのシステム名

CRM

利用トランザクション種別

ローカルトランザクション

コネクションプール利用数

2（最大/最小）

作成するキュー

キュー種別：ローカルキュー

キューの永続性：永続

キュー名：localq1

表示名：QUEUE1

DB Connector for Reliable Messaging

表示名

DB_Connector_for_HiRDB_Type4_Cosminexus_RM

種別

HiRDB Type4 JDBC Driver用（ローカルトランザクション）

JDBCドライバ

ドライバ種別

HiRDB Type4 JDBC Driver

DBMS

DB種別

HiRDB Single Server

ポート番号

22200

Reliable Messaging用の管理情報テーブルを作成するRDエリア名

RDDATA10

(2)　事前準備

サンプル手順を利用してReliable Messagingの環境を構築する前に，次の作業を実施しておく必要があります。

(a)　インストール

Reliable MessagingおよびReliable Messagingの前提製品をすべてインストールします。詳細については，「3.2　Reliable Messagingのインストール」を参照してください。

(b)　環境変数の設定

Reliable Messagingが動作するマシンで，次に示す環境変数を設定します。詳細については，「3.3.2　環境変数の設定」を参照してください。

表C‒2　設定する環境変数

環境変数

設定値

説明

HRMDIR

C:¥Program Files¥Hitachi¥Cosminexus¥RM

−

HRM_SYSTEM_NAME

CRM

−

HRM_CMD_PORT

900

CORBAネーミングサービス（nameserv）のポート番号です。

HRM_CMD_HOST

localhost

−

PATH

%PATH%;%HRMDIR%¥bin

コマンドが格納されたディレクトリです。

（凡例）

−：特にありません。

(c)　DBMS（HiRDB）のインストールと初期設定

HiRDBサーバ，HiRDBクライアント，およびSQL Executerをインストールして，初期設定します。詳細については，「3.4.1(1)(a)　HiRDBの初期設定」および「3.4.1(2)　DBクライアントの設定」を参照してください。

(d)　DBMS（HiRDB）のユーザ権限の付与とスキーマの定義

HiRDBサーバで，ユーザ権限の付与とスキーマの定義を実施します。詳細については，「3.4.1(1)(b)　HiRDBのユーザ権限の付与」および「3.4.1(1)(c)　HiRDBのスキーマの定義」を参照してください。

(e)　HiRDB Type4 JDBC Driverの設定

HiRDB Type4 JDBC Driverの設定をします。詳細については，「3.4.7(3)　HiRDB Type4 JDBC Driverの設定」を参照してください。

(f)　J2EEサーバ（Application Server）の設定

J2EEサーバ（Application Server）をセットアップします。詳細については，「3.4.3　J2EEサーバ（Application Server）の設定」を参照してください。

(g)　その他の設定

環境構築のための作業ディレクトリとして「D:¥work」を作成します。作成したディレクトリには，読み取り権限および書き込み権限を設定します。

(3)　環境構築手順

Reliable Messagingの環境構築のサンプル手順を次に示します。

(a)　Reliable Messagingの管理情報テーブルの作成

次のコマンドを実行して，テーブル作成用SQLファイルを作業ディレクトリにコピーします。

copy "C:¥Program Files¥Hitachi¥Cosminexus¥RM¥sql¥createtableshirdb.sql" D:¥work

コピーしたSQLファイル（D:¥work¥createtableshirdb.sql）をテキストエディタで開き，ファイル中の次の記述を置き換えて保存します。

<RMSystemName> → CRM

<RMAREA> → RDDATA10

次のコマンドを実行して，HiRDB SQL Executerを開始します。

pdsqlw -u <DBへの接続ユーザ名>/<パスワード> -h localhost -n 22200

HiRDB SQL Executerの［ファイル］メニューから［ファイルから実行］を選択し，「D:¥work¥createtableshirdb.sql」を指定して実行します。

(b)　J2EEサーバの起動

次のコマンドを実行して，J2EEサーバを起動します。

cjstartsv MyServer

(c)　Reliable Messagingのプロパティ定義

次のコマンドを実行して，作業ディレクトリにReliable MessagingのConnector属性ファイルのテンプレートをコピーします。

copy "C:¥Program Files¥Hitachi¥Cosminexus¥RM¥conf¥rm_prop.xml" D:¥work

コピーしたConnector属性ファイルのテンプレート（D:¥work¥rm_prop.xml）をテキストエディタで開き，次のように設定します。

コンフィグレーションプロパティ（<config-property-name>タグ）

プロパティ名

設定値

RMSystemName

CRM

RMLinkedDBConnectorName

DB_Connector_for_HiRDB_Type4_Cosminexus_RM

実行時プロパティ（<property>タグ）

プロパティ名

設定値

MaxPoolSize

2

MinPoolSize

2

User

<DBユーザ>

Password

<DBパスワード>

トランザクションサポートレベル（<transaction-support>タグ）

タグ名

設定値

<transaction-support>

LocalTransaction

(d)　DB Connector for Reliable Messagingのプロパティ定義

次のコマンドを実行して，作業ディレクトリにDB Connector for Reliable MessagingのConnector属性ファイルのテンプレートをコピーします。

copy "C:¥Program Files¥Hitachi¥Cosminexus¥CC¥admin¥templates¥DBConnector_HiRDB_Type4_CP_Cosminexus_RM_cfg.xml"  D:¥work

コピーしたConnector属性ファイルのテンプレート（D:¥work¥DBConnector_HiRDB_Type4_CP_Cosminexus_RM_cfg.xml）をテキストエディタで開き，次のように設定します。

コンフィグレーションプロパティ（<config-property-name>タグ）

プロパティ名

設定値

linkedResourceAdapterName

Cosminexus_Reliable_Messaging

description

22200

DBHostName

localhost

environmentVariables

PDSWAITTIME=600;PDCWAITTIME=600;PDSWATCHTIME=0

実行時プロパティ（<property>タグ）

プロパティ名

設定値

MaxPoolSize

2

MinPoolSize

2

User

<DBユーザ>

Password

<DBパスワード>

トランザクションサポートレベル（<transaction-support>タグ）

タグ名

設定値

<transaction-support>

LocalTransaction

(e)　DB Connector for Reliable Messagingのインポート

次のコマンドを実行して，DB Connector for Reliable Messagingをインポートします。

cjimportres MyServer -type rar -f "C:¥Program Files¥Hitachi¥Cosminexus¥CC¥DBConnector¥ReliableMessaging¥DBConnector_HiRDB_Type4_CP_Cosminexus_RM.rar"

(f)　Reliable Messagingのインポート

次のコマンドを実行して，Reliable Messagingをインポートします。

cjimportres MyServer -type rar -f "C:¥Program Files¥Hitachi¥Cosminexus¥RM¥lib¥reliablemessaging.rar"

(g)　DB Connector for Reliable Messagingのプロパティ設定

次のコマンドを実行して，DB Connector for Reliable Messagingのプロパティを設定します。

cjsetresprop MyServer -type rar -resname DB_Connector_for_HiRDB_Type4_Cosminexus_RM -c D:¥work¥DBConnector_HiRDB_Type4_CP_Cosminexus_RM_cfg.xml

(h)　Reliable Messagingのプロパティ設定

次のコマンドを実行して，Reliable Messagingのプロパティを設定します。

cjsetresprop MyServer -type rar -resname Cosminexus_Reliable_Messaging -c D:¥work¥rm_prop.xml

(i)　DB Connector for Reliable Messagingのデプロイ

次のコマンドを実行して，DB Connector for Reliable Messagingをデプロイします。

cjdeployrar MyServer -resname DB_Connector_for_HiRDB_Type4_Cosminexus_RM

(j)　Reliable Messagingのデプロイ

次のコマンドを実行して，Reliable Messagingをデプロイします。

cjdeployrar MyServer -resname Cosminexus_Reliable_Messaging

(k)　DB Connector for Reliable Messagingの開始

次のコマンドを実行して，DB Connector for Reliable Messagingを開始します。

cjstartrar MyServer -resname DB_Connector_for_HiRDB_Type4_Cosminexus_RM

(l)　Reliable Messagingの接続テスト

次のコマンドを実行して，Reliable Messagingの接続テストを実施します。

cjtestres MyServer -type rar -resname Cosminexus_Reliable_Messaging

接続テストに失敗した場合は，出力されるメッセージに従って対処し，再度接続テストを実施してください。

(m)　Reliable Messagingの開始

次のコマンドを実行して，Reliable Messagingを開始します。

cjstartrar MyServer -resname Cosminexus_Reliable_Messaging

(n)　キューの作成

次のコマンドを実行して，Reliable Messagingのキューを作成します。

hrmmkque -t local -x QUEUE1 localq1

(o)　Reliable Messagingの状態遷移

次のコマンドを実行して，Reliable Messagingを実行状態にします。

hrmstart

付録C.2　SessionBean1の処理の流れ

SessionBean1の処理の流れを次の図に示します。

図C‒2　サンプルアプリケーション（SessionBean1）の処理の流れ

付録C.3　SessionBean1の実行手順（永続版リソースアダプタの場合）

永続版リソースアダプタの場合にSessionBean1をComponent Containerで実行する手順について説明します。

サンプルアプリケーションの格納ディレクトリ（%HRMDIR%¥samples¥SessionBean1）をディレクトリごと任意の別ディレクトリにコピーしてください。以降ではコピーした先のSessionBean1ディレクトリを作業ディレクトリと呼びます。

作業ディレクトリに移動します。

実行ファイルの編集

deployApp.bat，testClient.batおよびunDeployApp.bat（UNIXの場合，それぞれdeployApp，testClientおよびunDeployApp）で定義されている環境変数SERVERNAMEをJ2EEサーバの名称と同じ値に修正します。

コンパイル

Windowsの場合

compileBean.bat → compileClient.batの順に実行します。

UNIXの場合

compileBean → compileClientの順に実行します。

作業ディレクトリにjmssample1.earというJ2EEアプリケーション（アプリケーション名JMSSample1のEARファイル）が作成されます。

サーバ管理コマンドで，DB Connector for Reliable Messagingのリソースアダプタをインポートします。

サーバ管理コマンドで，Reliable Messagingのリソースアダプタをインポートします。Reliable Messagingの表示名は，デフォルトの"Cosminexus_Reliable_Messaging"から変更しないでください。

Reliable Messagingのリソースアダプタのプロパティを設定します。なお，QueueConfigFileNameプロパティの設定は不要です。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

DB Connector for Reliable Messagingのリソースアダプタのプロパティを設定します。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

DB Connector for Reliable Messagingのリソースアダプタをデプロイし，開始します。

Reliable Messagingのリソースアダプタをデプロイし，開始します。

ローカルキューを作成するため，hrmmkqueコマンドを次のとおり実行します。

hrmmkque -t local -x QUEUE1 localq1

deployApp.bat（UNIXの場合，deployApp）を実行し，J2EEアプリケーション（JMSSample1）の(1)インポート，(2)設定，(3)開始，(4)アプリケーションの状態表示および(5)EJBのスタブおよびインタフェースファイルの取得を実行します。

(4)ではJ2EEアプリケーション（JMSSample1）の状態が"running"になっていることを確認できます。なお(1)〜(5)はそれぞれComponent Containerの(1)cjimportapp，(2)cjsetappprop，(3)cjstartapp，(4)cjlistappおよび(5)cjgetstubsjarコマンドをバッチファイル中で実行しています。

Reliable Messagingが管理状態である場合はhrmstartコマンドを実行して，実行状態にします。

testClient.bat（UNIXの場合，testClient）を実行します。

J2EEサーバを開始しているコンソール画面に"The message is: ******** sample put data JMSSample1 ********"が表示されることで実行を確認できます。

付録C.4　SessionBean1の実行手順（非永続版リソースアダプタの場合）

非永続版リソースアダプタの場合にSessionBean1をComponent Containerで実行する手順について説明します。

サンプルアプリケーションの格納ディレクトリ（%HRMDIR%¥samples¥SessionBean1）をディレクトリごと任意の別ディレクトリにコピーしてください。以降ではコピーした先のSessionBean1ディレクトリを作業ディレクトリと呼びます。

作業ディレクトリに移動します。

実行ファイルの編集

deployApp.bat，testClient.batおよびunDeployApp.bat（UNIXの場合，それぞれdeployApp，testClientおよびunDeployApp）で定義されている環境変数SERVERNAMEをJ2EEサーバの名称と同じ値に修正します。

コンパイル

Windowsの場合

compileBean.bat → compileClient.batの順に実行します。

UNIXの場合

compileBean → compileClientの順に実行します。

作業ディレクトリにjmssample1.earというJ2EEアプリケーション（アプリケーション名JMSSample1のEARファイル）が作成されます。

サーバ管理コマンドで，Reliable Messagingのリソースアダプタをインポートします。Reliable Messagingの表示名は，デフォルトの"Cosminexus_Reliable_Messaging"から変更しないでください。

リソースアダプタのプロパティを設定します。QueueMakeFileNameプロパティに，作業ディレクトリにあるキュー作成ファイルQueueMake.propertiesを完全パスで指定します。また，そのほかのプロパティも設定します。なお，QueueConfigFileNameプロパティの設定は不要です。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

リソースアダプタをデプロイし，開始します。

deployApp.bat（UNIXの場合，deployApp）を実行し，J2EEアプリケーション（JMSSample1）の(1)インポート，(2)設定，(3)開始，(4)アプリケーションの状態表示および(5)EJBのスタブおよびインタフェースファイルの取得を実行します。

(4)ではJ2EEアプリケーション（JMSSample1）の状態が"running"になっていることを確認できます。なお(1)〜(5)はそれぞれComponent Containerの(1)cjimportapp，(2)cjsetappprop，(3)cjstartapp，(4)cjlistappおよび(5)cjgetstubsjarコマンドをバッチファイル中で実行しています。

testClient.bat（UNIXの場合，testClient）を実行します。

J2EEサーバを開始しているコンソール画面に"The message is: ******** sample put data JMSSample1 ********"が表示されることで実行を確認できます。

付録C.5　SessionBean2の処理の流れ（永続版リソースアダプタの場合）

キュー間転送を使うサンプルアプリケーションSessionBean2は，メッセージ送信用とメッセージ受信用の2種類のアプリケーションから構成されるシステムです。SessionBean2は，永続版リソースアダプタの場合だけ提供されます。

送信用サンプルアプリケーション（SessionBean2Send）

転送キュー（キュー名：tranq1）からローカルキュー（キュー名：localq1）へメッセージを転送します。

受信用サンプルアプリケーション（SessionBean2Receive）

ローカルキュー（キュー名：localq1）からメッセージを受信します。

SessionBean2のシステム構成を次に示します。

図C‒3　サンプルアプリケーション（SessionBean2）のシステム構成

送信用サンプルアプリケーションSessionBean2Sendの処理の流れを次の図に示します。

図C‒4　送信用サンプルアプリケーション（SessionBean2Send）の処理の流れ

受信用サンプルアプリケーションSessionBean2Receiveの処理の流れを次の図に示します。

図C‒5　受信用サンプルアプリケーション（SessionBean2Receive）の処理の流れ

付録C.6　SessionBean2の実行手順（永続版リソースアダプタの場合）

SessionBean2を実行するために必要な環境設定と実行の手順を説明します。

(1)　環境設定

Component Containerの環境設定の手順を説明します。

(a)　送信用サンプルアプリケーション

送信用サンプルアプリケーションの格納ディレクトリ（%HRMDIR%¥samples¥SessionBean2¥Send）を，ディレクトリごと任意の別ディレクトリにコピーしてください。以下ではコピーした先のSendディレクトリを送信用作業ディレクトリと呼びます。

サーバ管理コマンドで，DB Connector for Reliable Messagingのリソースアダプタをインポートします。

サーバ管理コマンドで，Reliable Messagingのリソースアダプタをインポートします。Reliable Messagingの表示名は，デフォルトの"Cosminexus_Reliable_Messaging"から変更しないでください。

Reliable Messagingのリソースアダプタのプロパティを設定します。なお，QueueConfigFileNameプロパティの設定は不要です。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

DB Connector for Reliable Messagingのリソースアダプタのプロパティを設定します。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

DB Connector for Reliable Messagingのリソースアダプタをデプロイし，開始します。

Reliable Messagingのリソースアダプタをデプロイし，開始します。

メッセージ送信のあて先を登録するため，hrmmkaddrコマンドを次のとおり実行します。

hrmmkaddr -u <localq1が存在するシステムのあて先アドレス> localq1Address

転送キューを作成するため，hrmmkqueコマンドを次のとおり実行します。

hrmmkque -t transmit -a localq1Address -v localq1 -x QUEUE1 tranq1

Reliable Messagingが管理状態になっている場合，hrmstartコマンドを実行してReliable Messagingを実行状態にします。

(b)　受信用サンプルアプリケーション

受信用サンプルアプリケーションの格納ディレクトリ（%HRMDIR%¥samples¥SessionBean2¥Receive）を，ディレクトリごと任意の別ディレクトリにコピーしてください。以下ではコピーした先のReceiveディレクトリを受信用作業ディレクトリと呼びます。

サーバ管理コマンドで，DB Connector for Reliable Messagingのリソースアダプタをインポートします。

サーバ管理コマンドで，Reliable Messagingのリソースアダプタをインポートします。Reliable Messagingの表示名は，デフォルトの"Cosminexus_Reliable_Messaging"から変更しないでください。

Reliable Messagingのリソースアダプタのプロパティを設定します。なお，QueueConfigFileNameプロパティの設定は不要です。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

DB Connector for Reliable Messagingのリソースアダプタのプロパティを設定します。プロパティの詳細については，「6.　コンフィグレーションプロパティ」を参照してください。

DB Connector for Reliable Messagingのリソースアダプタをデプロイし，開始します。

Reliable Messagingのリソースアダプタをデプロイし，開始します。

ローカルキューを作成するため，hrmmkqueコマンドを次のとおり実行します。

hrmmkque -t local -x QUEUE1 localq1

Reliable Messagingのキュー間転送用Webアプリケーションをデプロイし，開始します。

Reliable Messagingが管理状態になっている場合，hrmstartコマンドを実行してReliable Messagingを実行状態にします。

(2)　実行手順

SessionBean2をComponent Containerで実行する手順について説明します。

(a)　送信用サンプルアプリケーション

送信用作業ディレクトリに移動します。

実行ファイルの編集

deployApp.bat，testSendClient.batおよびunDeployApp.bat（UNIXの場合，それぞれdeployApp，testSendClientおよびunDeployApp）で定義されている環境変数SERVERNAMEをJ2EEサーバ1の名称と同じ値に修正します。

コンパイル

Windowsの場合

compileBean.bat → compileClient.batの順に実行します。

UNIXの場合

compileBean → compileClientの順に実行します。

送信用作業ディレクトリにjmssample2Send.earというJ2EEアプリケーション（EARファイル，アプリケーション名JMSSample2Send）が作成されます。

deployApp.bat（UNIXの場合，deployApp）を実行し，J2EEアプリケーションJMSSample2Sendの(1)インポート，(2)設定，(3)開始，(4)アプリケーションの状態表示，(5)EJBのスタブ・インタフェースファイルの取得を行います。(4)で，J2EEアプリケーションJMSSample2Sendの状態が"running"になっていることを確認できます。なお(1)〜(5)はそれぞれComponent Containerの(1)cjimportapp，(2)cjsetappprop，(3)cjstartapp，(4)cjlistapp，(5)cjgetstubsjarの各コマンドをバッチファイル中で実行しています。

testSendClient.bat（UNIXの場合，testSendClient）を実行します。

J2EEサーバを起動しているコンソール画面に以下の文字が表示されることで実行を確認できます。

JMSSample2Send sends a message1 to JMSSample2Receive
JMSSample2Send sends a message2 to JMSSample2Receive
JMSSample2Send sends a message3 to JMSSample2Receive

(b)　受信用サンプルアプリケーション

受信用作業ディレクトリに移動します。

実行ファイルの編集

deployApp.bat，testReceiveClient.bat，およびunDeployApp.bat（UNIXの場合，それぞれdeployApp，testReceiveClient，およびunDeployApp）で定義されている環境変数SERVERNAMEをJ2EEサーバ2の名称と同じ値に修正します。

コンパイル

Windowsの場合

compileBean.bat → compileClient.batの順に実行します。

UNIXの場合

compileBean → compileClientの順に実行します。

受信用作業ディレクトリにjmssample2Receive.earというJ2EEアプリケーション（EARファイル，アプリケーション名JMSSample2Receive）が作成されます。

deployApp.bat（UNIXの場合，deployApp）を実行し，J2EEアプリケーションJMSSample2Receiveの(1)インポート，(2)設定，(3)開始，(4)アプリケーションの状態表示，(5)EJBのスタブ・インタフェースファイルの取得を行います。(4)で，J2EEアプリケーションJMSSample2Receiveの状態が"running"になっていることを確認できます。なお(1)〜(5)はそれぞれComponent Containerの(1)cjimportapp，(2)cjsetappprop，(3)cjstartapp，(4)cjlistapp，(5)cjgetstubsjarの各コマンドをバッチファイル中で実行しています。

testReceiveClient.bat(UNIXの場合，testReceiveClient)を実行します。

J2EEサーバを起動しているコンソール画面に以下の文字が表示されることで実行を確認できます。

The message is: ******** JMSSample2Receive receives a message1 from JMSSample2Send ********
The message is: ******** JMSSample2Receive receives a message2 from JMSSample2Send ********
The message is: ******** JMSSample2Receive receives a message3 from JMSSample2Send ********

付録D　PRFトレース取得時のイベントID

Reliable Messagingでは，各処理の入口と出口でPRFトレースを取得します。各処理でのイベントID，PRFトレースの出力ポイント，およびトレースの取得レベルを説明します。なお，取得レベルは，「A」，「B」で表現されます。「A」レベルは標準，「B」レベルは詳細を意味します。

付録D.1　永続版リソースアダプタの場合

永続版リソースアダプタの場合のReliable Messagingでは，次の処理の入口と出口でPRFトレースを取得します。

(1)　アプリケーションからのコネクションの取得と解放処理

アプリケーションからのコネクションの取得と解放処理でのイベントIDを次の表に示します。

表D‒1　アプリケーションからのコネクションの取得と解放処理でのイベントID（永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9360

QueueConnection.createQueueSessionの入口

A

0x9361

QueueConnection.createQueueSessionの出口

A

0x9362

QueueSession.closeの入口

A

0x9363

QueueSession.closeの出口

A

0x9364

ManagedConnectionFactory.matchManagedConnectionの入口

B

0x9365

ManagedConnectionFactory.matchManagedConnectionの出口

B

(2)　J2EEサーバ（Component Container）からのコネクションのアソシエート処理

J2EEサーバ（Component Container）からのコネクションのアソシエート処理でのイベントIDを次の表に示します。

表D‒2　J2EEサーバ（Component Container）からのコネクションのアソシエート処理でのイベントID（永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9366

ManagedConnection.associateConnectionの入口

B

0x9367

ManagedConnection.associateConnectionの出口

B

(3)　アプリケーションからのメッセージ送受信処理

アプリケーションからのメッセージ送受信処理でのイベントIDを次の表に示します。

表D‒3　アプリケーションからのメッセージ送受信処理でのイベントID（永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9368

QueueSender.send(msg) の入口

A

0x9369

QueueSender.send(msg) の出口

A

0x936A

QueueSender.send(msg,dlvmd, pri,ttl) の入口

A

0x936B

QueueSender.send(msg,dlvmd, pri,ttl) の出口

A

0x936C

QueueSender.send(que,msg) の入口

A

0x936D

QueueSender.send(que,msg) の出口

A

0x936E

QueueSender.send(que,msg,dlvmd, pri,ttl) の入口

A

0x936F

QueueSender.send(que,msg,dlvmd, pri,ttl) の出口

A

0x9370

QueueReceiver.receive(引数なし) の入口

A

0x9371

QueueReceiver.receive(引数なし) の出口

A

0x9372

QueueReceiver.receive(timeout) の入口

A

0x9373

QueueReceiver.receive(timeout) の出口

A

0x9374

QueueReceiver.receiveNoWaitの入口

A

0x9375

QueueReceiver.receiveNoWaitの出口

A

0x9376

Enumeration.nextElementの入口

A

0x9377

Enumeration.nextElementの出口

A

(4)　J2EEサーバ（Component Container）からのトランザクション制御

J2EEサーバ（Component Container）からのトランザクション制御でのイベントIDを次の表に示します。

表D‒4　J2EEサーバ（Component Container）からのトランザクション制御でのイベントID（永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9378

XAResource.startの入口

B

0x9379

XAResource.startの出口

B

0x937A

XAResource.endの入口

B

0x937B

XAResource.endの出口

B

0x937C

XAResource.prepareの入口

B

0x937D

XAResource.prepareの出口

B

0x937E

XAResource.commitの入口

B

0x937F

XAResource.commitの出口

B

0x9380

XAResource.rollbackの入口

B

0x9381

XAResource.rollbackの出口

B

0x9382

XAResource.forgetの入口

B

0x9383

XAResource.forgetの出口

B

0x9384

XAResource.recoverの入口

B

0x9385

XAResource.recoverの出口

B

0x9386

LocalTransaction.beginの入口

B

0x9387

LocalTransaction.beginの出口

B

0x9388

LocalTransaction.commitの入口

B

0x9389

LocalTransaction.commitの出口

B

0x938A

LocalTransaction.rollbackの入口

B

0x938B

LocalTransaction.rollbackの出口

B

(5)　JMSアプリケーションからのJMSセッションの決着処理

JMSアプリケーションからのJMSセッションの決着処理でのイベントIDを次の表に示します。

表D‒5　JMSアプリケーションからのJMSセッションの決着処理でのイベントID（永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x938C

QueueSession.commitの入口

A

0x938D

QueueSession.commitの出口

A

0x938E

QueueSession.rollbackの入口

A

0x938F

QueueSession.rollbackの出口

A

0x9390

Message.acknowledgeの入口

A

0x9391

Message.acknowledgeの出口

A

0x9392

QueueSession.recoverの入口

A

0x9393

QueueSession.recoverの出口

A

(6)　J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理

J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理でのイベントIDを次の表に示します。

表D‒6　J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理でのイベントID（永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9394

XAQueueSessionImpl.beforeDeliveryのServerSession.beforeDeliveryの呼び出し後

B

0x9395

XAQueueSessionImpl.onMessageのMessageListener.onMessageの呼び出し前

A

0x9396

XAQueueSessionImpl.onMessageのMessageListener.onMessageの呼び出し後

A

0x9397

XAQueueSessionImpl.afterDeliveryのServerSession. afterDeliveryの呼び出し前

B

付録D.2　非永続版リソースアダプタの場合

非永続版リソースアダプタの場合のReliable Messagingでは，次の処理の入口と出口でPRFトレースを取得します。

(1)　アプリケーションからのコネクションの取得と解放処理

アプリケーションからのコネクションの取得と解放処理でのイベントIDを次の表に示します。

表D‒7　アプリケーションからのコネクションの取得と解放処理でのイベントID（非永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9300

QueueConnection.createQueueSessionの入口

A

0x9301

QueueConnection.createQueueSessionの出口

A

0x9302

QueueSession.closeの入口

A

0x9303

QueueSession.closeの出口

A

0x9304

ManagedConnection.matchManagedConnectionの入口

B

0x9305

ManagedConnection.matchManagedConnectionの出口

B

(2)　J2EEサーバ（Component Container）からのコネクションのアソシエート処理

J2EEサーバ（Component Container）からのコネクションのアソシエート処理でのイベントIDを次の表に示します。

表D‒8　J2EEサーバ（Component Container）からのコネクションのアソシエート処理でのイベントID（非永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9306

ManagedConnection.associateConnectionの入口

B

0x9307

ManagedConnection.associateConnectionの出口

B

(3)　アプリケーションからのメッセージ送受信処理

アプリケーションからのメッセージ送受信処理でのイベントIDを次の表に示します。

表D‒9　アプリケーションからのメッセージ送受信処理でのイベントID（非永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9308

QueueSender.send(msg) の入口

A

0x9309

QueueSender.send(msg) の出口

A

0x930A

QueueSender.send(msg,dlvmd, pri,ttl) の入口

A

0x930B

QueueSender.send(msg,dlvmd, pri,ttl) の出口

A

0x930C

QueueSender.send(que,msg) の入口

A

0x930D

QueueSender.send(que,msg) の出口

A

0x930E

QueueSender.send(que,msg,dlvmd, pri,ttl) の入口

A

0x930F

QueueSender.send(que,msg,dlvmd, pri,ttl) の出口

A

0x9310

QueueReceiver.receive(引数なし) の入口

A

0x9311

QueueReceiver.receive(引数なし) の出口

A

0x9312

QueueReceiver.receive(timeout) の入口

A

0x9313

QueueReceiver.receive(timeout) の出口

A

0x9314

QueueReceiver.receiveNoWaitの入口

A

0x9315

QueueReceiver.receiveNoWaitの出口

A

0x9316

Enumeration.nextElementの入口

A

0x9317

Enumeration.nextElementの出口

A

(4)　J2EEサーバ（Component Container）からのトランザクション制御

J2EEサーバ（Component Container）からのトランザクション制御でのイベントIDを次の表に示します。

表D‒10　J2EEサーバ（Component Container）からのトランザクション制御でのイベントID（非永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9318

XAResource.startの入口

B

0x9319

XAResource.startの出口

B

0x931A

XAResource.endの入口

B

0x931B

XAResource.endの出口

B

0x931C

XAResource.prepareの入口

B

0x931D

XAResource.prepareの出口

B

0x931E

XAResource.commitの入口

B

0x931F

XAResource.commitの出口

B

0x9320

XAResource.rollbackの入口

B

0x9321

XAResource.rollbackの出口

B

0x9322

XAResource.forgetの入口

B

0x9323

XAResource.forgetの出口

B

0x9324

XAResource.recoverの入口

B

0x9325

XAResource.recoverの出口

B

0x9326

LocalTransaction.beginの入口

B

0x9327

LocalTransaction.beginの出口

B

0x9328

LocalTransaction.commitの入口

B

0x9329

LocalTransaction.commitの出口

B

0x932A

LocalTransaction.rollbackの入口

B

0x932B

LocalTransaction.rollbackの出口

B

(5)　JMSアプリケーションからのJMSセッションの決着処理

JMSアプリケーションからのJMSセッションの決着処理でのイベントIDを次の表に示します。

表D‒11　JMSアプリケーションからのJMSセッションの決着処理でのイベントID（非永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x932C

QueueSession.commitの入口

A

0x932D

QueueSession.commitの出口

A

0x932E

QueueSession.rollbackの入口

A

0x932F

QueueSession.rollbackの出口

A

0x9330

Message.acknowledgeの入口

A

0x9331

Message.acknowledgeの出口

A

0x9332

QueueSession.recoverの入口

A

0x9333

QueueSession.recoverの出口

A

(6)　J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理

J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理でのイベントIDを次の表に示します。

表D‒12　J2EEサーバ（Component Container）と連携したMessage-driven Beanメッセージ配信処理でのイベントID（非永続版リソースアダプタの場合）

イベントID

PRFトレース取得ポイント

取得レベル

0x9335

XAQueueSessionImpl.beforeDeliveryのServerSession.beforeDeliveryの呼び出し後

B

0x9336

XAQueueSessionImpl.onMessageのMessageListener.onMessageの呼び出し前

A

0x9337

XAQueueSessionImpl.onMessageのMessageListener.onMessageの呼び出し後

A

0x9338

XAQueueSessionImpl.afterDeliveryのServerSession. afterDeliveryの呼び出し前

B

付録E　Reliable Messagingのメモリ所要量とディスク占有量

Reliable Messagingのメモリ所要量とディスク占有量を示します。

付録E.1　メモリ所要量

Javaヒープ領域でのReliable Messagingのメモリ所要量を示します。

Application Serverのメモリ所要量と，次に示すReliable Messagingのメモリ所要量の総和の最大値をApplication ServerのJ2EEサーバ用オプション定義ファイル（usrconf.cfg）に指定する必要があります。add.jvm.argキーの-Xmxオプションに指定してください。

(1)　永続版リソースアダプタの場合

永続版リソースアダプタの場合のメモリ所要量を次に示します。

(a)　メモリ所要量の見積もり式

Reliable Messagingのメモリ所要量の総和を求めるには，次に示す1.〜7.を加算します。

1.および2.で示すメモリ所要量は，Reliable Messagingが起動している間，常にJavaヒープ領域を消費する値です。

3.〜6.で示すメモリ所要量は，該当する処理の間，一時的に使用されるメモリ使用量です。該当する処理が終わると解放されます。

7.で示すメモリ所要量は，JDBCコネクションの生成時に使用されるメモリ所要量です。JDBCコネクションを切断すると解放されます。ただし，Application Serverのコネクションプーリング機能が有効な場合で，Application Serverで定義したコネクションプーリング数に空きがあるときは，JDBCコネクションは解放されないでプールされるため，メモリは保持され続けます。

Reliable Messaging起動時のメモリ所要量

　60KB×キューの数
＋60KB×永続化されたメッセージ数
＋75KB×コンフィグレーションプロパティのMDBのインスタンス数
＋75KB×コンフィグレーションプロパティのRMTRSendThreadNumの値※1
＋20MB

メッセージをキャッシュした際のメモリ所要量

キャッシュしたメッセージのサイズ※2×キャッシュしたメッセージ数

送信処理で一時的に使用するメモリ使用量

（メッセージのサイズ※2×10＋150KB）×メッセージ同時送信数＋2MB

受信処理で一時的に使用するメモリ使用量

（メッセージのサイズ※2×5＋300KB）×メッセージ同時受信数＋2MB

MDBによる受信処理で一時的に使用するメモリ使用量

（メッセージのサイズ※2×5＋4MB）×メッセージ同時受信数＋2MB

キュー間転送で一時的に使用するメモリ使用量

（メッセージのサイズ※2×10＋450KB）×メッセージ同時送信数＋2MB

JDBCコネクションでのメモリ所要量

使用する最大のメッセージのサイズ※2×4×コネクション同時使用数

注※1

コンフィグレーションプロパティのRMTRConnectFlagの値をtrueに設定した場合だけ加算してください。

注※2

メッセージのヘッダ，プロパティ，ペイロードおよびメッセージに付属するオブジェクトのサイズの合計です。

(b)　メモリ所要量の見積もり例

次に示す七つの条件のもとにReliable Messagingのメモリ所要量を見積もる例を示します。

条件1：デフォルトのオプションで生成されたローカルキューが一つ

条件2：条件1のキューに永続化されたメッセージは10件

条件3：条件2のメッセージはキャッシュされていない状態

条件4：コンフィグレーションプロパティのMDBのインスタンス数の値を1に設定

条件5：使用する最大のメッセージのサイズが1MB

条件6：必須項目以外のコンフィグレーションプロパティはデフォルト値

条件7：メッセージサイズが1MBのメッセージ

見積もり例1

条件1〜条件6を満たす環境でReliable Messagingを起動した場合のメモリ所要量は，「付録E.1(1)(a)　メモリ所要量の見積もり式」で示した「1. Reliable Messaging起動時のメモリ所要量」と「7. JDBCコネクションでのメモリ所要量」の合計で算出できます。この条件の場合，7.のコネクション同時使用数は2となります。

（60KB×1＋60KB×10＋75KB×1＋20MB）＋（1MB×4×2）
＝約29MB

見積もり例2

条件1〜条件5を満たす環境で，条件1で生成したローカルキューに対して条件7のメッセージを1件送信した際のメモリ所要量は，「付録E.1(1)(a)　メモリ所要量の見積もり式」で示した「1. Reliable Messaging起動時のメモリ所要量」，「2. メッセージをキャッシュした際のメモリ所要量」，「3. 送信処理で一時的に使用するメモリ使用量」および「7. JDBCコネクションでのメモリ所要量」の合計で算出できます。この条件の場合，7.のコネクション同時使用数は2となります。

（60KB×1＋60KB×10＋75KB×1＋20MB）＋1MB＋（（1MB×10＋150KB）×1＋2MB）＋（1MB×4×2）
＝約42MB

(c)　メモリ所要量見積もり時の注意事項

次に示す値は，hrmmkqueコマンド（-tオプションにshr_receive指定）の実行時に一時的に使用するメモリ所要量です。

3KB×-nオプションの値＋3MB

この値は，サーバ側のJava VMでのメモリ使用量です。クライアント側でのメモリ使用量には加算されません。

(2)　非永続版リソースアダプタの場合

非永続版リソースアダプタの場合のメモリ所要量を次に示します。

(a)　メモリ所要量の見積もり式

Reliable Messagingのメモリ所要量の総和を求めるには，次に示す1.〜5.を加算します。

1.および2.で示すメモリ所要量は，Reliable Messagingが起動している間，常にJavaヒープ領域を消費する値です。

3.〜5.で示すメモリ所要量は，該当する処理の間，一時的に使用されるメモリ使用量です。該当する処理が終わると解放されます。

Reliable Messaging起動時のメモリ所要量

60KB×キューの数＋20MB

メッセージをキューに登録した際のメモリ所要量

キューに登録したメッセージのサイズ※×メッセージ数
＋60KB×登録されたメッセージ数

送信処理で一時的に使用するメモリ使用量

（メッセージのサイズ※×10＋150KB）×メッセージ同時送信数＋2MB

受信処理で一時的に使用するメモリ使用量

（メッセージのサイズ※×5＋300KB）×メッセージ同時受信数＋2MB

Message-driven Beanによる受信処理で一時的に使用するメモリ使用量

（メッセージのサイズ※×5＋4MB）×メッセージ同時受信数＋2MB

注※

メッセージのヘッダ，プロパティ，ペイロードおよびメッセージに付属するオブジェクトのサイズの合計です。

(b)　メモリ所要量の見積もり例

次に示す三つの条件のもとにReliable Messagingのメモリ所要量を見積もる例を示します。

条件1：デフォルトのオプションで生成されたローカルキューが10個

条件2：必須項目以外のコンフィグレーションプロパティはデフォルト値

条件3：メッセージサイズが1MBのメッセージ

見積もり例1

条件1〜条件2を満たす環境でReliable Messagingを起動した場合のメモリ所要量は，「付録E.1(2)(a)　メモリ所要量の見積もり式」で示した「1. Reliable Messaging起動時のメモリ所要量」で算出できます。

60KB×10＋20MB
＝約21MB

見積もり例2

条件1〜条件2を満たす環境で，ローカルキューに対して条件3のメッセージを1件送信した際の一時的なメモリ所要量は，「付録E.1(2)(a)　メモリ所要量の見積もり式」で示した次の値の合計で算出できます。

Reliable Messaging起動時のメモリ所要量

メッセージをキューに登録した際のメモリ所要量

送信処理で一時的に使用するメモリ使用量

（60KB×10＋20MB）＋（1MB×1＋60KB×1）＋（（1MB×10＋150KB）×1＋2MB）
＝約34MB

付録E.2　ディスク占有量

Reliable Messagingのディスク占有量は，永続版リソースアダプタ，非永続版リソースアダプタ共に10MBです。

付録F　HiRDBの見積もり

HiRDBの排他資源と同時アクセス可能実表数の見積もりについて説明します。

付録F.1　HiRDBの排他資源の見積もり

HiRDBの排他資源数を見積もるには，Reliable Messagingに関する数値が必要となります。その数値とは，一つのトランザクションで発行した複数のSQL実行での排他資源の総和です。Reliable Messagingで排他資源数が最大となる場合の排他資源数を算出してpd_lck_pool_sizeオペランドに指定します。

排他資源数を見積もる計算式については，マニュアル「HiRDB システム定義」を参照してください。

Reliable Messagingの排他資源数は処理ごとのテーブルへのアクセス回数およびDBテーブルのBINARY型列数を使用して算出します。それぞれを次の表に示します。

表F‒1　Reliable Messagingが使用するSQL

項番

処理

キュー種別

使用SQL※1

使用テーブル

アクセス回数

1

Reliable Messaging起動

永続キュー属性のローカルキューまたは転送キュー

SELECT

キュー情報

テーブルごとに1回

FIFO情報

メッセージ情報

非永続キュー属性のローカルキューまたは転送キュー

SELECT

キュー情報

FIFO情報

受信用共用キュー

SELECT

キュー情報

FIFO情報

共用キュー受信用ライト管理

共用キュー受信用リード管理

送信用共用キュー

SELECT

キュー情報

FIFO情報

キューの種別にかかわらない場合

SELECT

あて先情報

1回

2

メッセージ送信

永続キュー属性のローカルキューまたは転送キュー

INSERT

メッセージ情報

テーブルごとに1回

送信用共用キュー

UPDATE

メッセージ情報

共用キュー受信用ライト管理

3

メッセージ受信

永続キュー属性のローカルキュー

SELECT

メッセージ情報

テーブルごとに1回

UPDATE※2

メッセージ情報

受信用共用キュー

SELECT

メッセージ情報

UPDATE

共用キュー受信用リード管理

4

メッセージ閲覧

永続キュー属性のローカルキュー

SELECT

メッセージ情報

テーブルごとに1回

受信用共用キュー

SELECT

メッセージ情報

5

メッセージ削除

永続キュー属性のローカルキュー

DELETE

メッセージ情報

削除対象のメッセージの数

FIFO情報

削除対象のグループの数

UPDATE

FIFO情報

2回

SELECT※3

メッセージ情報

削除対象のメッセージの数

INSERT※3

メッセージ情報

削除対象のメッセージの数

非永続キュー属性のローカルキュー

DELETE

FIFO情報

削除対象のグループの数

永続キュー属性の転送キュー

DELETE

メッセージ情報

削除対象のメッセージの数

FIFO情報

削除対象のグループの数

UPDATE

FIFO情報

2回

非永続キュー属性の転送キュー

DELETE

FIFO情報

削除対象のグループの数

注※1

SQLの発行形態は次のとおりです。

・SELECT：LOCK TABLEなし，かつWITHOUT LOCK指定なし

・INSERT：VALUES句指定，LOCK TABLEなし，かつWITHOUT LOCK指定なし

・UPDATE：LOCK TABLEなし

・DELETE：LOCK TABLEなし

注※2

メッセージの即時削除機能を利用する場合，UPDATEの代わりにメッセージ削除のDELETEがメッセージ情報テーブルに発行されます。

注※3

デッドメッセージキューを指定している場合だけ使用します。

表F‒2　DBテーブルのBINARY型列数

項番

DBテーブル種別

BINARY型列数

備考

1

システム管理情報

0

−

2

キュー情報

0

−

3

FIFO情報

2

Reliable Messagingの内部情報として利用します。データ長はキュー間転送受信で順序保証を行ったときのスキップしたメッセージ数や未受信メッセージ数に依存します。1メッセージにつき，最大20けたのjava.math.BigInteger型とjava.lang.Long型を組み合わせたデータが格納されます。

4

メッセージ情報

1

永続キュー属性のローカルキューまたは転送キューの最大メッセージ長。詳細については，「2.5.4　メッセージサイズを見積もる方法」を参照してください。

5

共用キュー受信用メッセージ情報

2

1列は，受信用共用キューの最大メッセージ長。詳細については，「2.5.4　メッセージサイズを見積もる方法」を参照してください。なお，もう1列は使用しません。

6

共用キュー受信用ライト管理

1

使用しません。

7

共用キュー受信用リード管理

2

1列は，Reliable Messagingの内部情報として256バイト固定で使用します。なお，もう1列は使用しません。

8

あて先情報

0

−

（凡例）

−：該当しません。

注意事項

各テーブルのテーブル数，行数，列数およびインデックス数については，「4.3.6　管理情報テーブルの一覧」を参照してください。

各テーブルを格納するRDエリアをHiRDBで決定させる場合は，テーブルごとにRDエリアを割り当てた数値としてください。

次の機能は使用していません。

表分割

インデックス分割

ビュー表

LOB列定義

ユーザ定義

LOB属性

上位型

関数

プラグイン

ルーチン

ページ排他

付録F.2　同時アクセス可能実表数の見積もり

Reliable Messagingの構成によっては，HiRDBの同時アクセス可能実表数の値を超える場合があります。Reliable Messagingで同時アクセス可能実表数が最大となるのは，Reliable Messagingの起動時です。

Reliable Messaging利用時の同時アクセス可能実表数は，「付録F.1　HiRDBの排他資源の見積もり」を参照して見積もってください。算出した同時アクセス可能実表数は，pd_max_access_tablesオペランドに指定します。

同時アクセス可能実表数については，マニュアル「HiRDB システム定義」を参照してください。

付録G　コネクションプールの見積もり

コネクションプールに確保する最大コネクション数を見積もるための計算式は次のとおりです。

コネクションプールに確保する最大コネクション数
＝アプリケーションが消費するコネクション数
＋Reliable Messagingが消費するコネクション数

アプリケーションが消費するコネクション数，およびReliable Messagingが消費するコネクション数の算出方法について説明します。

付録G.1　アプリケーションが消費するコネクション数

Reliable Messagingを利用するアプリケーションごとに次の計算をし，個々のアプリケーションで計算した値の総和が，アプリケーションが消費するコネクション数となります。

アプリケーションの最大同時実行数（多重度）×アプリケーションでの消費コネクション数

アプリケーションでの消費コネクション数は，アプリケーションの種類がMDBの場合とMDB以外（SessionBeanやサーブレットなど）の場合とで算出方法が異なります。それぞれの場合の算出方法について説明します。

(1)　MDBの場合

MDBの場合，メッセージを一つ配信する契機でコネクションを一つ消費します。この消費コネクションを「配信用コネクション」と定義します。配信用コネクションは，MDBアプリケーション内で生成したjavax.jms.QueueSessionおよびjava.sql.Connectionとコネクションシェアリングできます。これを「配信用コネクションとのシェアリング」と定義します。

アプリケーションでの消費コネクション数は，配信用コネクションとのシェアリングが適用される場合と適用されない場合によって次のように異なります。

配信用コネクションとのシェアリングが適用される場合

アプリケーションでの消費コネクション数＝1

配信用コネクションとのシェアリングが適用されない場合

アプリケーションでの消費コネクション数
＝1（配信用コネクション）
＋MDBアプリケーション内でコネクションシェアリングされたグループの数※1
＋MDBアプリケーション内でコネクションシェアリングされないjavax.jms.QueueSessionの生成数
＋MDBアプリケーション内でコネクションシェアリングされないjava.sql.Connection※2の生成数

注※1

配信用コネクションとはシェアリングされないで，MDBアプリケーション内で生成した複数のjavax.jms.QueueSessionおよびjava.sql.Connectionがコネクションシェアリングされることを示します。

注※2

DB Connector for Reliable Messagingのjavax.sql.DataSourceから生成したjava.sql.Connectionが対象です。また，Reliable MessagingのコンフィグレーションプロパティRMAssociateJDBCFlagの値がtrueの場合だけ生成できます。

配信用コネクションとのシェアリングが適用されるか適用されないかは，次の条件によって決まります。

配信用コネクションとのシェアリングが適用される場合

次の条件をすべて満たす場合，配信用コネクションとのシェアリングが適用されます。

リソース参照に関する設定の，コネクションシェアリングの有無で「Shareable」を設定

トランザクション管理方法を「Container」に設定

トランザクション属性を「Required」に設定

配信用コネクションとのシェアリングが適用されない場合

次のどれかの条件を満たす場合，配信用コネクションとのシェアリングは適用されません。

リソース参照に関する設定の，コネクションシェアリングの有無で「Unshareable」を設定

トランザクション管理方法を「Bean」に設定

トランザクション属性を「Not Supported」に設定

(2)　MDB以外（SessionBeanやサーブレットなど）の場合

アプリケーションで生成するjavax.jms.QueueSessionおよびjava.sql.Connectionの合計数が消費コネクション数となります。ただし，コネクションシェアリングが適用された場合，コネクションシェアリングされた一つのグループにつき，消費コネクションは一つとなります。よって，アプリケーションでの消費コネクション数は次のようになります。

アプリケーションでの消費コネクション数
＝コネクションシェアリングされたグループの数
＋コネクションシェアリングされないjavax.jms.QueueSessionの生成数
＋コネクションシェアリングされないjava.sql.Connection※の生成数

注※

DB Connector for Reliable Messagingのjavax.sql.DataSourceから生成したjava.sql.Connectionが対象です。また，Reliable MessagingのコンフィグレーションプロパティRMAssociateJDBCFlagの値がtrueの場合だけ生成できます。

コネクションシェアリングが適用される条件については，マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」を参照してください。

付録G.2　Reliable Messagingが消費するコネクション数

Reliable Messagingが消費するコネクション数は，キュー間転送を利用している場合だけ算出する必要があります。Reliable Messagingが消費するコネクション数は次のようになります。

Reliable Messagingが消費するコネクション数＝キュー間転送受信時の同時リクエスト実行数

付録H　旧バージョンからの移行

付録H.1　uCosminexus Reliable Messaging 01-00からの移行

uCosminexus Reliable Messaging 01-00からReliable Messaging 09-00へ移行するときの手順について，次に示します。サーバ管理コマンドについては，マニュアル「アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

uCosminexus Reliable Messagingの停止

uCosminexus Reliable Messagingを停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

J2EEサーバの停止

サーバ管理コマンドを使用して，J2EEサーバを停止します。

リソースアダプタのバージョンアップ

サーバ管理コマンドを使用して，Reliable MessagingおよびDB Connectorをバージョンアップしてください。

環境設定の変更

%HRMDIR%をReliable Messaging 09-00がインストールされたディレクトリに合わせて修正してください。PATH環境変数などに指定している場合は同様に修正してください。

共用キューのバージョンアップ

共用キューを使用している場合は，共用キューをバージョンアップしてください。詳細については，「付録H.3　共用キューのバージョンアップ」を参照してください。

usrconf.cfgの修正

キュー間転送を使用している場合，usrconf.cfgファイルをテキストエディタで開き，次の行を削除してください。

add.class.path=<uCosminexus Reliable Messaging 01-00のインストールディレクトリ>¥conf

キュー間転送用Webアプリケーションの入れ替え

キュー間転送を使用している場合，uCosminexus Reliable Messaging 01-00のキュー間転送用Webアプリケーションがデプロイされています。これをReliable Messaging 09-00のキュー間転送用Webアプリケーションに入れ替えてください。

次に示す手順は，必須ではありませんが，実施することをお勧めします。

uCosminexus Reliable Messaging 01-00のアンインストール

uCosminexus Reliable Messaging 01-00のコマンドやライブラリを誤って使用しないように，アンインストールしてください。

サポートされないプロパティの削除

Reliable Messaging 09-00ではサポートされないプロパティを削除してください。Reliable Messaging 09-00ではサポートされないプロパティを次に示します。

RMReceiveThreadNum

RMLogTraceFileDir

RMTRTransferControl

送信用共用キューの再作成

Reliable Messaging 09-00に移行したあと，uCosminexus Reliable Messaging 01-00で作成した送信用共用キューを削除し，新たに送信用共用キューを作成してください。

注意事項

uCosminexus Reliable Messaging 01-00で作成した転送キューをReliable Messaging 09-00に移行した場合，転送モードが互換モード（compatible）の転送キューとして扱われます。

uCosminexus Reliable Messaging 01-00から本バージョンのReliable Messagingにシステム変更した場合は，コネクションプールの見積もりを見直してください。

付録H.2　Reliable Messaging 01-01〜08-00からの移行

Reliable Messaging 01-01〜08-00からReliable Messaging 09-00へ移行するときの手順は，uCosminexus Reliable Messaging 01-00からReliable Messaging 09-00へ移行するときの手順1.〜手順3.と同様です（手順1.のuCosminexus Reliable MessagingはReliable Messaging 01-01に読み替えてください）。手順の詳細は，「付録H.1　uCosminexus Reliable Messaging 01-00からの移行」を参照してください。

注意事項

Reliable Messaging 01-01〜01-02で作成した転送キューをReliable Messaging 09-00に移行した場合，転送モードが互換モード（compatible）の転送キューとして扱われます。

付録H.3　共用キューのバージョンアップ

共用キューのバージョンを0100または0200から0300に移行する手順について，次に示します。

Reliable Messagingの停止

Reliable Messagingを停止します。詳細については，「4.1.3　Reliable Messagingの停止（永続版リソースアダプタの場合）」を参照してください。

DBのバックアップ

バージョンアップによって，次に示す三つのテーブルが変更されます。必要に応じてDBのバックアップをとってください。

共用キュー受信用メッセージ情報テーブル

共用キュー受信用ライト管理テーブル

共用キュー受信用リード管理テーブル

スクリプトファイルの編集

共用キューをバージョンアップするためのスクリプトファイル（%HRMDIR%¥sql¥shqupdate_V1toV2.sql）を任意の場所にコピーしてから，テキストエディタで開き，ファイル中の"<RMSystemName>"の部分をRMSystemNameの指定値に置き換えてください。また，ファイル中の"<QueueName>"の部分をバージョンアップする受信用共用キューのキュー名に置き換えてください。

SQLファイルの実行

SQLファイルを実行して，受信用共用キューのテーブルを拡張します。

Windowsの場合

次に示すコマンドでHiRDB SQL Executerを開始したあと，HiRDB SQL Executerの［ファイル］メニューから［ファイルから実行］を選択し，手順3.で編集したSQLファイルを指定して実行します。

pdsqlw -u <接続ユーザ名>/<パスワード>※
       -h <HiRDBサーバのホスト名またはIPアドレス>
       -n <HiRDBサーバのポート番号>

UNIXの場合

環境変数PDUSER※，PDHOST，PDNAMEPORTを設定したあと，次に示すコマンドでHiRDB SQL ExecuterからSQLファイルを実行します。

pdsql  <  <手順3.で編集したSQLファイルのパス>

注※

接続ユーザ名には，権限を付与した接続ユーザ名を指定します。詳細については，「3.4.1(1)(b)　HiRDBのユーザ権限の付与」を参照してください。

バージョンアップしたい受信用共用キューに応じて手順2.から手順4.までを繰り返してください。

付録H.4　移行時の注意事項

移行時の注意事項を次に示します。

Reliable Messaging 01-02以前のバージョンで作成した転送キューをReliable Messaging 01-03以降に移行した場合，転送モードが互換モード（compatible）の転送キューとして扱われます。

01-02以前のReliable Messaging同士をキュー間転送機能を利用して連携している場合，片側のシステムだけを01-03以降にバージョンアップしたときは，それ以降，新規に転送キューを追加する際は転送キューの転送モード属性を互換モードで作成してください。

Reliable Messagingのバージョンアップや修正パッチを適用した場合，コマンドのバッチファイル（Windowsの場合）またはシェルスクリプト（UNIXの場合）に記載されている，コマンドのリクエストタイムアウト値「ejbserver.rmi.request.timeout」の値は，０（タイムアウト無し）で上書きされます。０以外を指定していた場合は，移行後に値を設定し直してください。

01-03よりhrmmkaddrコマンドで指定する宛先名に入力可能な文字が文字列から識別子に変更となりました。識別子とは，先頭が英字で始まる英数字列，＿（アンダーバー）を示します。01-02以前のバージョンで作成済みの宛先名はそのまま利用することができますが，新規に識別子の該当しない文字列で宛先名を作成するとエラーとなります。

Reliable Messagingがシステム閉塞状態の時にMessage-driven Beanを開始した場合，01-02以前のバージョンではエラーとなり，開始に失敗していましたが，01-03以降ではMessage-driven Beanは開始します。ただし，このときMessage-driven Beanにメッセージは配送されません。

付録I　用語解説

マニュアルで使用する用語について

マニュアル「アプリケーションサーバ & BPM/ESB基盤 用語解説」を参照してください。

索引

A

acknowledgeメソッド〔Messageインタフェース〕[1]

addPayloadcontentTypeメソッド〔BytesContainerインタフェース〕[1]

addPayloadメソッド〔BytesContainerインタフェース〕[1]

APPLICATION_OCTET_STREAMフィールド[1]

APPLICATION_POSTSCRIPTフィールド[1]

APPLICATION_RTFフィールド[1]

APPLICATION_X_TEXINFOフィールド[1]

APPLICATION_X_TEXフィールド[1]

APPLICATION_X_TROFFフィールド[1]

Application Serverのアウトプロセストランザクションサービスの利用[1]

Application Server用メッセージログ[1]

AUDIO_BASICフィールド[1]

AUDIO_MIDIフィールド[1]

AUDIO_X_AIFCフィールド[1]

AUDIO_X_AIFFフィールド[1]

AUDIO_X_WAVフィールド[1]

AUTO_ACKNOWLEDGEフィールド[1]

B

BLOB/LONG/CLOB型データ受取バッファサイズ[1]

BMT[1]

bufSize[1]

BytesContainerFactoryインタフェース[1]

BytesContainerインタフェース[1]

BytesContainerインタフェースの仕様[1]

BytesContainerインタフェースのデータ型[1]

BytesMessageインタフェース[1]

C

clearBodyメソッド〔Messageインタフェース〕[1]

clearPropertiesメソッド〔Messageインタフェース〕[1]

clearメソッド〔BytesContainerインタフェース〕[1]

CLIENT_ACKNOWLEDGEフィールド[1]

closeメソッド〔QueueBrowserインタフェース〕[1]

closeメソッド〔QueueConnection（Connection）インタフェース〕[1]

closeメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]

closeメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

closeメソッド〔QueueSession（Session）インタフェース〕[1]

CMT[1]

commitメソッド〔QueueSession（Session）インタフェース〕[1]

Component Container[1]

ConnectionMetaDataインタフェース[1]

CONNECT権限[1]

CORBAネーミングサービス[1]

createBrowserメソッド〔QueueSession（Session）インタフェース〕[1]、[2]

createBytesContainerメソッド〔BytesContainerFactoryインタフェース〕[1]

createBytesMessageメソッド〔QueueSession（Session）インタフェース〕[1]

createConnectionConsumerメソッド〔QueueConnection（Connection）インタフェース〕[1]

createMapMessageメソッド〔QueueSession（Session）インタフェース〕[1]

createMessageメソッド〔QueueSession（Session）インタフェース〕[1]

createObjectMessageメソッド〔QueueSession（Session）インタフェース〕[1]、[2]

createQueueConnectionメソッド〔QueueConnectionFactory（ConnectionFactory）インタフェース〕[1]、[2]

createQueueSessionメソッド〔QueueConnection（Connection）インタフェース〕[1]

createQueueメソッド〔QueueSession（Session）インタフェース〕[1]

createReceiverメソッド〔QueueSession（Session）インタフェース〕[1]、[2]

createSenderメソッド〔QueueSession（Session）インタフェース〕[1]

createStreamMessageメソッド〔QueueSession（Session）インタフェース〕[1]

createTemporaryQueueメソッド〔QueueSession（Session）インタフェース〕[1]

createTextMessageメソッド〔QueueSession（Session）インタフェース〕[1]、[2]

D

databaseName[1]、[2]

DB Connector for Reliable Messaging[1]

DB Connector for Reliable MessagingとReliable Messagingの開始[1]

DB Connector for Reliable Messagingのインポート[1]

DB Connector for Reliable Messagingの機能[1]

DB Connector for Reliable Messagingの機能一覧[1]

DB Connector for Reliable Messagingのコンフィグレーションプロパティの一覧[1]

DB Connector for Reliable Messagingの選択[1]

DB Connector for Reliable Messagingの前提製品の設定[1]

DB Connector for Reliable Messagingのプロパティ定義[1]

DB Connector for Reliable Messaging連携時の注意事項[1]

DB Connectorとのコネクション共有機能の使用有無[1]

DBHostName[1]、[2]

DBMS[1]

DBMSの設定（HiRDBを使用する場合）[1]

DBMSの設定（Oracleを使用する場合）[1]

DBアクセス時の認証[1]

DBクライアントの設定[1]

DBコネクションを使用するタイミング[1]

DBサーバの共有[1]

DBの運用[1]

DBのバックアップ[1]

DEFAULT_DELIVERY_MODEフィールド[1]

DEFAULT_PRIORITYフィールド[1]

DEFAULT_TIME_TO_LIVEフィールド[1]

DeliveryModeインタフェース[1]

description[1]、[2]

Developer's Kit for Java[1]

DMID[1]

DMQCAUSE-001[1]

DMQCAUSE-002[1]

DMQCAUSE-003[1]

DMQCAUSE-004[1]

DUPS_OK_ACKNOWLEDGEフィールド[1]

F

FIFO[1]

FIFO情報テーブル[1]

G

getBooleanPropertyメソッド〔Messageインタフェース〕[1]

getBytePropertyメソッド〔Messageインタフェース〕[1]

getClientIDメソッド〔QueueConnection（Connection）インタフェース〕[1]

getContentTypeメソッド〔BytesContainerインタフェース〕[1]

getDeliveryModeメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

getDisableMessageIDメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

getDisableMessageTimestampメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

getDoublePropertyメソッド〔Messageインタフェース〕[1]

getEnumerationメソッド〔QueueBrowserインタフェース〕[1]

getErrorCodeメソッド〔HRMExceptionクラス〕[1]

getErrorMessageメソッド〔HRMExceptionクラス〕[1]

getExceptionListenerメソッド〔QueueConnection（Connection）インタフェース〕[1]

getFloatPropertyメソッド〔Messageインタフェース〕[1]

getIntPropertyメソッド〔Messageインタフェース〕[1]

getJMSCorrelationIDAsBytesメソッド〔Messageインタフェース〕[1]

getJMSCorrelationIDメソッド〔Messageインタフェース〕[1]

getJMSDeliveryModeメソッド〔Messageインタフェース〕[1]

getJMSDestinationメソッド〔Messageインタフェース〕[1]

getJMSExpirationメソッド〔Messageインタフェース〕[1]

getJMSMajorVersionメソッド〔ConnectionMetaDataインタフェース〕[1]

getJMSMessageIDメソッド〔Messageインタフェース〕[1]

getJMSMinorVersionメソッド〔ConnectionMetaDataインタフェース〕[1]

getJMSPriorityメソッド〔Messageインタフェース〕[1]

getJMSProviderNameメソッド〔ConnectionMetaDataインタフェース〕[1]

getJMSRedeliveredメソッド〔Messageインタフェース〕[1]

getJMSReplyToメソッド〔Messageインタフェース〕[1]

getJMSTimestampメソッド〔Messageインタフェース〕[1]

getJMSTypeメソッド〔Messageインタフェース〕[1]

getJMSVersionメソッド〔ConnectionMetaDataインタフェース〕[1]

getJMSXPropertyNamesメソッド〔ConnectionMetaDataインタフェース〕[1]

getLinkedExceptionメソッド〔HRMExceptionクラス〕[1]

getLongPropertyメソッド〔Messageインタフェース〕[1]

getMessageListenerメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]

getMessageListenerメソッド〔QueueSession（Session）インタフェース〕[1]

getMessageSelectorメソッド〔QueueBrowserインタフェース〕[1]

getMessageSelectorメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]

getMetaDataメソッド〔QueueConnection（Connection）インタフェース〕[1]

getObjectPropertyメソッド〔Messageインタフェース〕[1]

getObjectメソッド〔ObjectMessageインタフェース〕[1]

getPayloadメソッド〔BytesContainerインタフェース〕[1]

getPriorityメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

getPropertyNamesメソッド〔Messageインタフェース〕[1]

getProviderMajorVersionメソッド〔ConnectionMetaDataインタフェース〕[1]

getProviderMinorVersionメソッド〔ConnectionMetaDataインタフェース〕[1]

getProviderVersionメソッド〔ConnectionMetaDataインタフェース〕[1]

getQueueNameメソッド〔Queue（Destination）インタフェース〕[1]

getQueueメソッド〔QueueBrowserインタフェース〕[1]

getQueueメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]

getQueueメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

getShortPropertyメソッド〔Messageインタフェース〕[1]

getStringPropertyメソッド〔Messageインタフェース〕[1]

getTextメソッド〔TextMessageインタフェース〕[1]

getTimeToLiveメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

getTransactedメソッド〔QueueSession（Session）インタフェース〕[1]

H

HiRDB[1]

HiRDB/Developer's Kit[1]

HiRDB/Run Time[1]

HiRDB SQL Executer[1]、[2]

HiRDBのRDエリアの準備[1]

HiRDBの環境変数グループの登録[1]

HiRDBのクライアント環境変数グループ[1]

HiRDBの初期設定[1]

HiRDBのスキーマの定義[1]

HiRDBのディクショナリ搬出入ユティリティ（pdexpコマンド）[1]

HiRDBの同時アクセス可能実表数[1]

HiRDBの排他資源の見積もり[1]

HiRDBの見積もり[1]

HiRDBのユーザ権限の付与[1]

HRM_CMD_HOST[1]

HRM_CMD_PORT[1]

HRM_SYSTEM_NAME[1]

hrmchgaddr（あて先変更）[1]

hrmchgque（受信用共用キューの属性変更）[1]

hrmchgque（送信用共用キューの属性変更）[1]

hrmchgque（転送キューの属性変更）[1]

hrmchgque（ローカルキューの属性変更）[1]

hrmdeladdr（あて先削除）[1]

hrmdelmsg（メッセージの削除）[1]

hrmdelque（キューの削除）[1]

HRMDIR[1]

HRMExceptionクラス[1]

HRMExceptionコンストラクタ〔HRMExceptionクラス〕[1]

HRMIllegalArgumentExceptionクラス[1]

hrmlsaddr（あて先参照）[1]

hrmlsdmsg（デッドメッセージの参照）[1]

hrmlsmsg（メッセージの表示）[1]

hrmlsque（キュー情報の表示）[1]

hrmlsstat（システム状態の表示）[1]

hrmlstrn（トランザクション状態の表示）[1]

hrmlstrs（通信状態表示）[1]

hrmmkaddr（あて先登録）[1]

hrmmkque（受信用共用キューの作成）[1]

hrmmkque（送信用共用キューの作成）[1]

hrmmkque（転送キューの作成）[1]

hrmmkque（ローカルキューの作成）[1]

hrmregdmsg（デッドメッセージの再登録）[1]

hrmskipmsg（受信待ちメッセージのスキップ）[1]

hrmstart（実行状態への移行）[1]

hrmstartque（キューの抑止解除）[1]

hrmstarttrs（送受信抑止解除）[1]

hrmstop（管理状態への移行）[1]

hrmstopque（キューの抑止）[1]

hrmstoptrs（送受信抑止）[1]

I

IMAGE_IEFフィールド[1]

IMAGE_TIFFフィールド[1]

IMAGE_X_XWINDOWDUMPフィールド[1]

J

J2EEサーバ[1]

J2EEサーバ（Application Server）の設定[1]

J2EEリソースアダプタ[1]

JDBCコネクション[1]

JDBCコネクションの再利用[1]

JMS_[1]

JMS_HITACHI_DeadMessageCause[1]

JMS_HITACHI_DeadMessageID[1]

JMS_HITACHI_DeadMessageOriginalQueueName[1]

JMS_HITACHI_DeadMessageTimestamp[1]

JMS_HITACHI_UnitID[1]

JMS APIのバージョン[1]

JMS APIのマイナーバージョン番号[1]

JMS APIのメジャーバージョン番号[1]

JMSCorrelationID[1]

JMSDeliveryMode[1]

JMSDestination[1]

JMSExpiration[1]

JMSMessageID[1]

JMSPriority[1]

JMSRedelivered[1]

JMSReplyTo[1]

JMSTimestamp[1]

JMSType[1]

JMSX[1]

JMSXAppID[1]

JMSXConsumerTXID[1]

JMSXDeliveryCount[1]

JMSXGroupID[1]

JMSXGroupSeq[1]

JMSXProducerTXID[1]

JMSXRcvTimestamp[1]

JMSXState[1]

JMSXUserID[1]

JMSインタフェース継承図[1]

JMSインタフェースの一覧[1]

JMS管理オブジェクト[1]

JMS基本情報[1]

JMS仕様との差異[1]

JMS定義のプロパティ[1]

JMSプロバイダのバージョン[1]

JMSプロバイダのマイナーバージョン番号[1]

JMSプロバイダのメジャーバージョン番号[1]

JMSプロバイダ名[1]

JMSメッセージの構成[1]

JMSメッセージのプロパティ[1]

JMSメッセージのペイロード[1]

JMSメッセージのヘッダ[1]

JMSメッセージのルートインタフェース[1]

JNDI[1]

JNDI登録名[1]

JNDIネーミングサービス[1]

L

linkedResourceAdapterName[1]

M

maxBinarySize[1]

Messageインタフェース[1]

Message-driven Beanとの連携[1]

O

ObjectMessageインタフェース[1]

Oracle[1]

Oracle JDBC Driver[1]

P

PATH[1]

PDCWAITTIME[1]

pddef[1]

PDHOST[1]

PDNAMEPORT[1]

PDSWAITTIME[1]

PDSWATCHTIME[1]

PDTXACANUM[1]

PDUSER[1]

PDXAMODE[1]

Performance Tracer[1]

PRFトレース[1]

PRFトレース取得時のイベントID[1]

PRFトレースの取得情報[1]

PRFトレースファイルの運用（永続版リソースアダプタの場合）[1]

PRFトレースファイルの運用（非永続版リソースアダプタの場合）[1]

PRFトレースファイルの運用方法[1]

PRFトレースファイルの取得レベル[1]

PRFトレースファイルの編集[1]

propertyExistsメソッド〔Messageインタフェース〕[1]

PTPメッセージング機能のメソッドの機能差[1]

PTPメッセージングモデル[1]

Q

QoS[1]

Queue（Destination）インタフェース[1]

QueueBrowserインタフェース[1]

QueueConfigFileName [1]

QueueConnection（Connection）インタフェース[1]

QueueConnectionFactory（ConnectionFactory）インタフェース[1]

QueueMakeFileName[1]

QueueReceiver（MessageConsumer）インタフェース[1]

QueueSender（MessageProducer）インタフェース[1]

QueueSession（Session）インタフェース[1]

R

RDエリアの容量の確保[1]

readBooleanメソッド〔BytesMessageインタフェース〕[1]

readBytesメソッド〔BytesMessageインタフェース〕[1]、[2]

readByteメソッド〔BytesMessageインタフェース〕[1]

readCharメソッド〔BytesMessageインタフェース〕[1]

readDoubleメソッド〔BytesMessageインタフェース〕[1]

readFloatメソッド〔BytesMessageインタフェース〕[1]

readIntメソッド〔BytesMessageインタフェース〕[1]

readLongメソッド〔BytesMessageインタフェース〕[1]

readShortメソッド〔BytesMessageインタフェース〕[1]

readUnsignedByteメソッド〔BytesMessageインタフェース〕[1]

readUnsignedShortメソッド〔BytesMessageインタフェース〕[1]

readUTFメソッド〔BytesMessageインタフェース〕[1]

receiveNoWaitメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]

receiveメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]、[2]

recoverメソッド〔QueueSession（Session）インタフェース〕[1]

Reliable Messaging開始時の復元完了待ち合わせの有無[1]

Reliable Messaging開始処理のタイムアウト時間[1]

Reliable Messaging固有のプロパティ[1]

Reliable Messagingのインポート[1]

Reliable Messagingの開始[1]

Reliable Messagingの開始（永続版リソースアダプタの場合）[1]

Reliable Messagingの開始（非永続版リソースアダプタの場合）[1]

Reliable Messagingの概要[1]

Reliable Messagingのコンフィグレーションプロパティの一覧[1]

Reliable Messagingのシステム構築（非永続版リソースアダプタの場合）[1]

Reliable Messagingのシステム名の決定[1]

Reliable Messagingの状態遷移（永続版リソースアダプタの場合）[1]

Reliable Messagingの状態遷移（非永続版リソースアダプタの場合）[1]

Reliable Messagingの停止（永続版リソースアダプタの場合）[1]

Reliable Messagingの停止（非永続版リソースアダプタの場合）[1]

Reliable Messagingの表示名[1]

Reliable Messagingの復元処理時の管理情報テーブルの不正[1]

Reliable Messagingのプロパティ設定[1]

Reliable Messagingのプロパティ定義（永続版リソースアダプタの場合）[1]

Reliable Messagingのプロパティ定義（非永続版リソースアダプタの場合）[1]

resetメソッド〔BytesMessageインタフェース〕[1]

RMAssociateJDBCFlag[1]

RMAutoDeleteMessage[1]

RMDeadMessageQueueName[1]

RMDeleteMessageImmediately[1]

RMLineTraceLevel[1]

RMLinkedDBConnectorName [1]

RMLogTraceFileNum[1]

RMLogTraceFileSize[1]

RMMaxDeliveryNum[1]

RMMethodTraceLevel[1]

RMPassByReference[1]

RMSHConnectFlag[1]

RMSHPort[1]

RMStartTimeout[1]

RMSweepTimerInterval[1]

RMSystemName[1]

RMSystemNameプロパティの値と現在時刻および通番[1]

RMTRConnectFlag[1]

RMTRPendingNotifyInterval[1]

RMTRResendInterval1[1]

RMTRResendInterval1Num[1]

RMTRResendInterval2[1]

RMTRResendTimerInterval[1]

RMTRSendThreadNum[1]

RMTRTransferControlDir[1]

RMWaitRestoration[1]

rollbackメソッド〔QueueSession（Session）インタフェース〕[1]

runメソッド〔QueueSession（Session）インタフェース〕[1]

S

sendメソッド〔QueueSender（MessageProducer）インタフェース〕[1]、[2]、[3]、[4]

serverName[1]

setBooleanPropertyメソッド〔Messageインタフェース〕[1]

setBytePropertyメソッド〔Messageインタフェース〕[1]

setClientIDメソッド〔QueueConnection（Connection）インタフェース〕[1]

setDeliveryModeメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

setDisableMessageIDメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

setDisableMessageTimestampメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

setDoublePropertyメソッド〔Messageインタフェース〕[1]

setExceptionListenerメソッド〔QueueConnection（Connection）インタフェース〕[1]

setFloatPropertyメソッド〔Messageインタフェース〕[1]

setIntPropertyメソッド〔Messageインタフェース〕[1]

setJMSCorrelationIDAsBytesメソッド〔Messageインタフェース〕[1]

setJMSCorrelationIDメソッド〔Messageインタフェース〕[1]

setJMSDeliveryModeメソッド〔Messageインタフェース〕[1]

setJMSDestinationメソッド〔Messageインタフェース〕[1]

setJMSExpirationメソッド〔Messageインタフェース〕[1]

setJMSMessageIDメソッド〔Messageインタフェース〕[1]

setJMSPriorityメソッド〔Messageインタフェース〕[1]

setJMSRedeliveredメソッド〔Messageインタフェース〕[1]

setJMSReplyToメソッド〔Messageインタフェース〕[1]

setJMSTimestampメソッド〔Messageインタフェース〕[1]

setJMSTypeメソッド〔Messageインタフェース〕[1]

setLongPropertyメソッド〔Messageインタフェース〕[1]

setMessageListenerメソッド〔QueueReceiver（MessageConsumer）インタフェース〕[1]

setMessageListenerメソッド〔QueueSession（Session）インタフェース〕[1]

setObjectPropertyメソッド〔Messageインタフェース〕[1]

setObjectメソッド〔ObjectMessageインタフェース〕[1]

setPriorityメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

setShortPropertyメソッド〔Messageインタフェース〕[1]

setStringPropertyメソッド〔Messageインタフェース〕[1]

setTextメソッド〔TextMessageインタフェース〕[1]

setTimeToLiveメソッド〔QueueSender（MessageProducer）インタフェース〕[1]

sizeメソッド〔BytesContainerインタフェース〕[1]

SOAPアタッチメント[1]

SOAP通信基盤の設定[1]

SOAPプロトコル[1]

SQLWarningLevel[1]

startメソッド〔QueueConnection（Connection）インタフェース〕[1]

stopメソッド〔QueueConnection（Connection）インタフェース〕[1]

T

TEXT_HTMLフィールド[1]

TEXT_PLAINフィールド[1]

TextMessageインタフェース[1]

toStringメソッド〔Queue（Destination）インタフェース〕[1]

TPBroker[1]

V

VIDEO_MPEGフィールド[1]

VIDEO_QUICKTIMEフィールド[1]

VIDEO_X_MSVIDEOフィールド[1]

W

writeBooleanメソッド〔BytesMessageインタフェース〕[1]

writeBytesメソッド〔BytesMessageインタフェース〕[1]、[2]

writeByteメソッド〔BytesMessageインタフェース〕[1]

writeCharメソッド〔BytesMessageインタフェース〕[1]

writeDoubleメソッド〔BytesMessageインタフェース〕[1]

writeFloatメソッド〔BytesMessageインタフェース〕[1]

writeIntメソッド〔BytesMessageインタフェース〕[1]

writeLongメソッド〔BytesMessageインタフェース〕[1]

writeObjectメソッド〔BytesMessageインタフェース〕[1]

writeShortメソッド〔BytesMessageインタフェース〕[1]

writeUTFメソッド〔BytesMessageインタフェース〕[1]

WS-Reliabilityサポート一覧[1]

WS-Reliabilityのヘッダ要素[1]

X

XAOpenString[1]、[2]

XATransaction利用時のリソースアダプタ間でのDB共有の制限[1]

あ

アクセスモード[1]

値渡し方式[1]

あて先[1]

あて先情報テーブル[1]

アプリケーション[1]

アプリケーション作成時の注意事項[1]

アプリケーション識別子[1]

アプリケーション指定のプロパティ[1]

アプリケーションの開始（永続版リソースアダプタの場合）[1]

アプリケーションの開始（非永続版リソースアダプタの場合）[1]

い

移行処理[1]

一部抑止状態[1]、[2]

移動前キュー名[1]

イベント[1]

イベントの受信[1]

イベントの送信[1]

インストール[1]

インストールすると格納されるファイル[1]

インタフェースの機能差[1]

インタフェースの種類[1]

インポート[1]、[2]、[3]、[4]、[5]

う

運用前の準備（永続版リソースアダプタの場合）[1]

運用前の準備（非永続版リソースアダプタの場合）[1]

え

永続キュー属性[1]

お

応答先[1]

オプション[1]

か

開始中状態[1]

開始停止メッセージログ[1]

回線トレース[1]

回線トレースの出力レベル[1]

書き込み専用モード[1]

環境構築のサンプル手順[1]

環境変数の設定[1]

漢字コードセット[1]

完全抑止状態[1]、[2]

管理状態[1]

管理状態から実行状態に移行[1]

管理情報テーブルの移行[1]

管理情報テーブルの一覧[1]

管理情報テーブルの削除[1]

き

キャッシュメッセージ数[1]、[2]、[3]、[4]、[5]、[6]

キュー[1]

キュー間転送[1]

キュー間転送によるシステム間連携[1]

キュー間転送のあて先指定[1]

キュー間転送の互換通信[1]

キュー間転送の使用有無[1]

キュー間転送の注意事項[1]

キュー間転送の通信モデル[1]

キュー間転送を使用する場合のReliable Messagingの設定[1]

キュー間転送を使用する場合の設定[1]

キュー作成時の指定値とメッセージのヘッダ[1]

キュー作成ファイルの作成[1]

キュー作成ファイルの場所[1]

キュー情報[1]

キュー情報テーブル[1]

キュー定義ファイルの作成（永続版リソースアダプタの場合）[1]

キュー定義ファイルの作成（非永続版リソースアダプタの場合）[1]

キュー定義ファイルの場所[1]

キューと抑止解除できる形態[1]

キューと抑止できる形態[1]

キューの運用（永続版リソースアダプタの場合）[1]

キューの永続性[1]、[2]、[3]

キューの作成[1]、[2]

キューの種類[1]、[2]、[3]、[4]、[5]

キューの障害[1]

キューの状態遷移（永続版リソースアダプタの場合）[1]

キュー表示名[1]

キュー名[1]

キュー名一覧[1]

キューを削除[1]

強制的にキューを削除[1]

強制的にメッセージを削除[1]

共用キューイベントトレース[1]

共用キューが保持するデータの不正および矛盾[1]

共用キュー受信用メッセージ情報テーブル[1]

共用キュー受信用ライト管理テーブル[1]

共用キュー受信用リード管理テーブル[1]

共用キューでのメッセージ受信時の処理の流れ[1]

共用キューによるシステム間連携[1]

共用キューのキュー復元時のバージョン不正[1]

共用キューを使用して複数システム間でのアプリケーション連携をする場合のイベント受信用ポート番号[1]

共用キューを使用して複数システム間でのアプリケーション連携をする場合の受信用共用キューの有無[1]

共用キューを使用して複数システム間でのアプリケーション連携をする場合のリカバリスレッド監視間隔[1]

共用キューを使用する場合の登録先キュー名[1]

く

クライアント定義ファイルが格納されているディレクトリのパス[1]

クライアント定義ファイルの使用方法[1]

クラスの機能差[1]

グループ識別子[1]

け

権限[1]

こ

構文[1]

コネクション[1]

コネクションIDの取得[1]

コネクション再利用[1]

コネクション使用数[1]

コネクションの共有[1]

コネクションの接続テスト[1]

コネクションプーリング機能[1]

コネクションプールの見積もり[1]

コピーの状態[1]

コマンド実行の前提条件[1]

コマンドの一覧[1]

コマンドの概要[1]

コマンドの記述形式[1]

コマンドの詳細[1]

コマンドの同時実行[1]

コマンドの有効範囲[1]

コンフィグレーションプロパティの設定例（永続版リソースアダプタの場合）[1]

コンフィグレーションプロパティの設定例（非永続版リソースアダプタの場合）[1]

コンフィグレーションプロパティの設定例〔DB Connector for Reliable Messaging〕[1]

さ

サーバ定義ファイルの設定[1]

再送間隔[1]

再送間隔1[1]

再送間隔1での再送回数[1]

再送間隔2[1]

再送タイマ監視間隔[1]

最大メッセージ数[1]、[2]、[3]、[4]、[5]

最大メッセージ長[1]、[2]

再配送[1]

参照渡し方式[1]

参照渡し方式の利用の有無[1]

サンプルアプリケーション[1]

し

シーケンス番号[1]

識別子[1]

システム管理情報テーブル[1]

システム形態[1]

システム構築（永続版リソースアダプタの場合）[1]

システム構築の準備[1]

システム構築の流れ[1]

システム構築・運用の流れとマニュアルの参照先[1]

システム名[1]

システム名の設定[1]

実行状態[1]

実行状態から管理状態に移行[1]

実行状態への移行[1]

受信用共用キュー[1]

出力メッセージ数[1]、[2]

出力メッセージバイト数[1]、[2]

順序保証[1]

障害コードの詳細[1]

障害時の動作[1]

障害調査用SQLの出力[1]

障害文字列[1]

状態遷移[1]

シリアル取り出し属性[1]

す

スキーマ定義[1]、[2]

スキーマ定義権限[1]

ステートメントキャンセル[1]

せ

接続テスト[1]、[2]

接続ユーザ[1]

接続ユーザ名の変更[1]

セレクタ[1]

全メッセージを削除[1]

そ

相関識別子[1]

送信時刻[1]

送信スレッドの起動数[1]

送信用共用キュー[1]

即時削除[1]

た

滞留メッセージの監視[1]

滞留メッセージの監視時間[1]

単一システムでのアプリケーション連携[1]

ち

遅延削除[1]

つ

通常状態[1]、[2]

通番[1]

て

データベース再編成ユティリティ（pdrorgコマンド）[1]

データベース定義ユティリティ（pddef）[1]

テーブル[1]

テーブル削除用SQLファイルの使用[1]

デッドメッセージID[1]、[2]、[3]

デッドメッセージキュー[1]

デッドメッセージキューに移動された原因[1]

デッドメッセージキューに移動された時刻[1]

デッドメッセージキューに移動される前に保存されていたキュー名[1]

デッドメッセージキューによるデッドメッセージの再登録[1]

デッドメッセージキュー未使用時の無効メッセージ自動削除の有無[1]

デッドメッセージキュー名[1]

デプロイ[1]、[2]

転送キュー[1]

転送データ相互接続用インタフェース継承図[1]

転送データ相互接続用インタフェースの一覧[1]

転送データ相互接続用インタフェースの使い方[1]

転送データ相互接続用インタフェースを利用する場合の設定[1]

と

同期受信[1]

トランザクション識別子[1]、[2]

トランザクション制御[1]

トランザクション設定[1]

トランザクションとメッセージ受信[1]

トランザクションとメッセージ送信[1]

トランザクションの状態[1]

トランザクションマネジャ[1]

トランザクションマネジャでのトランザクションの利用[1]

トレース取得ポイント[1]

トレースファイルの最大面数[1]

トレースファイルのファイルサイズ[1]

な

内部状態[1]、[2]

に

認証[1]

ね

ネーミングサービス[1]

は

配信[1]

配送[1]

配送回数の最大値[1]

配送時刻[1]

配送保証[1]

パッケージ[1]、[2]

パフォーマンストレーサ[1]

パラレル取り出し属性[1]

パラレル取り出し属性（ただし，同一ユニット識別子の配信順序制御）[1]

ひ

非永続キュー属性[1]

比較演算子[1]

非同期受信[1]

非同期通信[1]

ふ

ファイルサイズ[1]

ファイルサイズの設定[1]

ファイル面数の設定[1]

プール[1]

フォルトコード一覧[1]

複数システム間でのアプリケーション連携[1]

複数システムのキュー間でメッセージを転送するアプリケーション連携[1]

プライオリティ[1]、[2]

プロパティ[1]

プロパティが使用する接頭語[1]

プロパティ設定[1]

プロパティの型変換[1]

へ

閉塞状態[1]、[2]

ペイロード[1]

ヘッダ[1]

ほ

ポイントツーポイント[1]

ポート番号[1]

め

メソッドトレース[1]

メソッドトレースの出力レベル[1]

メソッドの機能差[1]

メッセージインタフェースとキューの種類[1]

メッセージ機能のメソッドの機能差[1]

メッセージサイズを見積もる方法[1]

メッセージ削除処理の実行間隔[1]

メッセージ識別子[1]

メッセージ受信時のアクセスモード[1]

メッセージ承認モード[1]

メッセージ情報テーブル[1]

メッセージ生成時のアクセスモード[1]

メッセージセレクタ[1]、[2]

メッセージ操作[1]

メッセージ即時削除の利用有無[1]

メッセージタイプ[1]

メッセージ通番[1]、[2]、[3]

メッセージとキューの関係[1]

メッセージ取り出しモード[1]、[2]、[3]

メッセージの受け渡し[1]

メッセージの永続性[1]

メッセージの管理[1]

メッセージの構成[1]

メッセージの再送[1]

メッセージの再利用[1]

メッセージの削除[1]

メッセージの受信制御[1]

メッセージの有効期間[1]

メッセージのユニット識別子[1]

メッセージ配送回数[1]

メッセージ有効期間[1]、[2]、[3]、[4]

メッセージ要素のアクセスモード[1]

メッセージング共通機能のメソッドの機能差[1]

メッセージングモデル[1]

メモリ所要量[1]

面数[1]

も

文字コード[1]

ゆ

有効期間[1]、[2]

ユーザ識別子[1]

よ

用語解説[1]

読み取り書き込み両用モード[1]

読み取り専用モード[1]

り

リカバー[1]

リカバリスレッド[1]

リクエストタイムアウト値の変更[1]

リソースアダプタ間の依存関係[1]

リソースアダプタの設定[1]

リテラル[1]

れ

例外クラスの一覧[1]、[2]

例外クラスの継承[1]、[2]

連携するDB Connectorの表示名[1]

ろ

ローカルキュー[1]

ローカルキューによるシステム内アプリケーション間連携[1]

ローカルキューの運用（非永続版リソースアダプタの場合）[1]

ローカルキューの状態遷移（非永続版リソースアダプタの場合）[1]

ローカルキューの操作方法[1]

ローカルトランザクションの利用[1]

ローテーション時刻の設定[1]

ローテーション方式の設定[1]

ログとトレースの設定[1]

論理演算子[1]