この節には、メッセージキュー 4.4 Update 1 の既知の問題についてのリストが含まれています。次の内容について説明します。
現時点のバグ、その状態、および回避策の一覧については、Java Developer Connection™ メンバーは、Java Developer Connection Web サイトの「Bug Parade」ページを参照してください。新しいバグを報告する前に、このページをチェックしてください。すべての メッセージキュー バグがリストされているわけではありませんが、このページはある問題が報告済みかどうかを知りたい場合に活用できます。
http://bugs.sun.com/bugdatabase/index.jsp
Java Developer Connection のメンバーになるのは無料ですが、登録が必要です。Java Developer Connection のメンバーになる方法についての詳細は、Sun の「For Developers」Web ページを参照してください。
新しいバグの報告や機能に関する要求を行うには、imq-feedback@sun.com 宛てにメールを送信してください。
この節では、Message Queue version 4.4 Update 1 のインストールに関連した問題について説明します。
メッセージキュー 4.4 は、メッセージキュー 4.2 および 4.1 と同様に、新しいインストーラでインストールされます。このインストーラでは、JDK、NSS、JavaHelp など、Message Queue に必要な Java Enterprise System (Java ES) 共有コンポーネントもインストールされます。
新しい Message Queue インストーラと、以前のバージョンの Message Queue で使用されていた古い Java ES インストーラは、同じ製品レジストリを共有しません。Java ES でインストールされた Message Queue を削除したあと、Message Queue インストーラで メッセージキュー 4.4 をインストールすると、Java ES 製品レジストリが矛盾した状態になる場合があります。その結果、Java ES アンインストーラを実行すると、Java ES でインストールしなかったとしても、メッセージキュー 4.4 とそれが依存する共有コンポーネントが意図せずに削除されることがあります。
Java ES インストーラでインストールした Message Queue ソフトウェアをアップグレードする最善の方法は、次のとおりです。
Java ES アンインストーラを使用して、メッセージキュー とその共有コンポーネントを削除します。
Message Queue インストーラを使用して、メッセージキュー 4.4 をインストールします。
次に示す問題は、すべてのプラットフォームでのインストールに影響します。
「インストールの準備完了」画面で、製品名が「Sun Java System Message Queue 4.3」ではなく「mq」と表示されます。(バグ 6650841)
インストーラが Message Queue 4.3 のインストールを処理中で、「進行状況」画面が表示されているときは、「取消し」ボタンがアクティブになります。ここで「取消し」ボタンを選択すると、インストールが完了しないか、破棄されます。 (バグ 6595578)
インストーラの「概要」画面には、クリックするとログまたは概要ページビューアが開くリンクがいくつか含まれています。「閉じる」というラベルの付いたボタンの代わりに、ウィンドウの閉じるボタン「X」を使用してこのビューアウィンドウを閉じた場合、このビューアウィンドウを再度表示することができません。(バグ 6587138)
回避方法: 「閉じる」というラベルの付いたボタンを使用してウィンドウを閉じます。
登録が省略されるサイレントインストールを実行したあとに、インストーラを登録のみのモード (installer -r) で実行すると、「ファイルの途中終了」エラーにより登録が失敗します。(バグ 6767988)
JDK がインストールされていないコンピュータで Message Queue インストーラを実行すると、「Invalid root in registry key HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion」というエラーメッセージが表示されます。(バグ 6764358)
回避方法: インストーラを実行する前に、JDK をインストールします。
「インストールの準備完了」画面の「インストール」ボタンをクリックする前に、Message Queue インストーラによって mqInstallHome ディレクトリが作成されます。(Bug 6595590)
Message Queue を Windows にインストールするときは、次の制限事項に注意してください。
Windows プラットフォームにインストールされた Message Queue 4.3 のディレクトリ構造は、これまでのリリースのディレクトリ構造と異なります。『『Sun Java System Message Queue 4.3 Installation Guide』』の「「Installed Directory Structure」」を参照してください。
インストーラは、Message Queue 用のエントリを「スタート」>「すべてのプログラム」メニューに追加しません。(バグ 6567258)
回避方法: 管理コンソールを起動するには、『Sun GlassFish Message Queue 4.4 Administration Guide』の「Starting the Administration Console」で説明されているようにコマンド行を使用します。
インストーラは、IMQ_HOME\mq\bin ディレクトリを PATH 環境変数に追加しません。(バグ 6567197)
回避方法: ユーザーは Message Queue ユーティリティー (IMQ_HOME\mq\bin\command) を起動するときに、このエントリを PATH 環境変数に追加するか、フルパス名を指定する必要があります。
インストーラは、Message Queue がインストールされたことを示すために Windows レジストリにエントリを追加しません。(バグ 6586389)
インストーラは、メッセージキュー ブローカを Windows サービスとして追加しません。
回避方法: imqsvcadm コマンドを使用して、メッセージキュー ブローカを Windows サービスとして手動で追加します。
JDK がインストールされていない場合、インストーラが「Invalid root in registry key HKLM\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\CurrentVersion」というエラーをスローします。(バグ 6764358)
回避方法: このエラーが表示された場合は、JDK をインストールしてから操作を続行します。
回答ファイルを使用してサイレントモードで実行すると、インストーラはすぐに返されます。インストールは行われますが、ユーザーにはサイレントインストールがいつ実際に実行されたかを知る方法がありません。(バグ 6586560)
オペレーティングシステムが別のドライブにインストールされている場合でも、インストーラは Message Queue を C:\ にインストールします。(バグ 6673511)
Windows でのインストールおよびアンインストールでは、ユーザーが実行できる bat ファイルはありません。また、ユーザーが Windows コントロールパネルの「プログラムの追加と削除」を使用してアンインストールすることもできません。(バグ 6673417)
Windows Vista では、コマンドプロンプトから管理者としてインストールを実行しなければ、Message Queue を C:\Program Files にインストールできません。(バグ 6701661)
回避方法: 管理者としてコマンドプロンプトからインストールするには、次の手順に従います。
1. 「スタート」 -> 「すべてのプログラム」 -> 「アクセサリ」の順にクリックし、「コマンド プロンプト」をポイントします。
2. 「コマンド プロンプト」を右クリックします。
3. 「管理者として実行」をクリックします。
4. ディレクトリを Message Queue 4.2 のインストールイメージに変更します。
5. installer.vbs を実行します。
アンインストーラを予行モード (uninstaller -n) で実行すると、アンインストールが誤って実行されます。(バグ 6719051)
回避方法: 次のコマンドを使用して、サイレントインストールを実行します。
uninstaller -s
インストーラのホームページで「Install Home」の文字列がローカライズされません。(バグ 6592491)
Message Queue の ZIP ベースのアンインストーラが、Windows 2003 でハングアップします。(バグ 6764370)
回避方法: mqInstallHome ディレクトリを手動で削除します。
インストーラを予行モード (installer –n ) で実行すると、「概要」画面にいくつかのエラーメッセージが表示され、「未完了」のインストール状態も表示されます。これは誤りで、誤解を招きます。予行モードでは、何もシステムにインストールされません。後でサイレントインストールの実行に使用できる回答ファイルが作成されるだけです。(バグ 6594351)
回答ファイルを使用してサイレントモード (installer -a filename -s) でインストーラを実行すると、Sun Connection への登録が実行されません。(バグ 6710268)
次に示す問題は、Linux プラットフォームでのインストールに影響します。
Red Hat Linux 5 では、C クライアントアプリケーションの実行に必要な compat-libstdc++ ライブラリが、メッセージキュー の配布に含まれていません。したがって、メッセージキュー インストーラではこのライブラリをインストールできません。C クライアントを開発および実行している場合は、このライブラリを手動でインストールする必要があります。
通常、compat-libstdc++ RPM は使用している Linux のバージョンのインストールメディアにあります。次のコマンドを使用してインストールできます。
rpm -ivh compat-libstdc++-x-x.x.x.x..rpm
x はバージョン番号を表します。
ライブラリが正常にインストールされたかどうかを確認するには、次のコマンドを使用します。
rpm -qa | grep compat-libstdc++
Red Hat Linux 5 では、C クライアントが PR_LOAD_LIBRARY_ERROR エラーで失敗する場合があります。(バグ 6885978)
Red Hat Linux 5 では、C クライアントが失敗して、次のようなメッセージが表示される場合があります。
"Preparing for NSS initialization ..." "Initializing NSS ..." "Could not connect to broker because 'PR_LOAD_LIBRARY_ERROR' (-5977)." producer(): Error: PR_LOAD_LIBRARY_ERROR |
このエラーは、NSS または NSPR ライブラリにアクセスできないために発生します。
この問題を解決するには、LD_LIBRARY_PATH 環境変数を、NSS または NSPR ライブラリのパス (IMQ_HOME/nss/lib) を含むように設定します。
「JDK 選択」パネルで、スクロールリストに項目が 1 つしか表示されません。このため、リスト内のほかの JDK を選択することが難しくなります。(バグ 6584735)
JDK が現在のもので、ユーザーが「JDK 選択」画面で「Java(TM) SDK のデフォルトバージョンをインストールして使用します。」を選択した場合、インストーラはその JDK をインストールしようとし、パッケージをインストールできないというレポートを返します。この問題があっても、インストールは正常に完了します。(バグ 6581310)
現在インストールされている JDK が JDK 1.5.0_15 (メッセージキュー インストーラによって標準でインストールされるバージョン) より新しいバージョンの場合、メッセージキュー アンインストーラはデフォルトの IMQ_JAVAHOME ディレクトリを見つけることができず、エラーを返します。(バグ 6673415)
回避方法: メッセージキュー アンインストーラを実行する前に、次のコマンドを使用して JDK 1.5 を手動でインストールします。
# cd installImage/Product/UNIX/LINUX/X86/2.4/Packages
# rpm -i --force jdk-1.5.0_15–linux- arch.rpm
arch は i586 か amd64 のいずれかです。
インストーラを予行モード (installer –n ) で実行すると、「概要」画面にいくつかのエラーメッセージが表示され、「未完了」のインストール状態も表示されます。これは誤りで、誤解を招きます。予行モードでは、何もシステムにインストールされません。後でサイレントインストールの実行に使用できる回答ファイルが作成されるだけです。(バグ 6594351)
インストーラには、メッセージキュー のバージョン情報が不明瞭な形式で表示されます。(バグ 6586507)
Solaris プラットフォームの場合は、次の表を参照して、インストーラに表示される メッセージキュー のバージョンを判別してください。
表 1–13 バージョン文字列の読み換え
Solaris OS でインストーラに表示されるバージョン |
対応する メッセージキュー のリリース |
---|---|
4.4.1.0 |
4.4 Update 1 |
4.4.0.0 |
4.4 |
4.3.0.0 |
4.3 |
4.2.0.0 |
4.2 |
4.1.0.2 |
4.1 Patch 2 |
4.1.0.1 |
4.1 Patch 1 |
4.1.0.0 |
4.1 |
3.7.2.1 |
3.7 UR2 Patch 1 |
3.7.0.2 |
3.7 UR2 |
3.7.0.1 |
3.7 UR1 |
3.6.0.0 |
3.6 |
3.6.0.4 |
3.6 SP4 |
3.6.0.3 |
3.6 SP3 |
3.6.0.2 |
3.6 SP2 |
3.6.0.1 |
3.6 SP1 |
3.6 SP4 のパッチリリースの場合 (たとえば、3.6 SP4 Patch 1)、インストーラで表示されるリリース文字列は同じままです。厳密なバージョンを判別するには、コマンド imqbrokerd -version を実行する必要があります。
Linux のプラットフォームの場合、インストーラで表示されるバージョン番号は次の形式になります。
majorReleaseNumber.minorReleaseNumber-someNumber
たとえば、3.7–22 のようになります。これにより、3.7 リリースの 1 つであることだけはわかりますが、どの特定のバージョンかはわかりません。インストールされている メッセージキュー のバージョンを判別するには、次のコマンドを実行します。
imqbrokerd -version.
次に示す問題は、ローカリゼーションの問題に関係しています。
インストーラを英語以外のロケールでテキストモード (installer –t) で実行すると、マルチバイト文字が文字化けします。 (バグ 6586923)
インストーラの「進行状況」画面で、進行状況のバーに見慣れない文字が表示されます。ツールヒントは、英語以外のロケールではハードコードされています。(バグ 6591632)
インストーラの「ライセンス」画面には、インストーラが実行されるロケールに関係なく、英語のライセンステキストが表示されます。(バグ 6592399)
回避方法: ローカライズされたライセンスファイルにアクセスするには、LICENSE_MULTILANGUAGE.pdf ファイルを検索してください。
インストーラの使用方法に関するヘルプテキストがローカライズされていません。(バグ 6592493)
インストーラの概要 HTML ページに表示される文字列「None」は、英語でハードコードされています。(バグ 6593089)
インストーラをドイツ語のロケールで実行すると、ほかのロケールでは表示される開始画面のテキストが正しく表示されません。(バグ 6592666)
インストーラの「Install Home」画面に表示される文字列「Install Home」がローカライズされていません。その文字列は、英語以外のロケールでインストーラを実行しても、英語で表示されます。(バグ 6592491)
テキストモード (installer –t) でインストーラを実行すると、どのロケールでインストーラを実行するかに関係なく、英語の応答選択肢「Yes」および「No」が使用されます。(バグ 6593230)
インストーラの「JDK 選択」画面の参照ボタンのツールヒントは、英語でハードコードされています。(バグ 6593085)
以前のバージョンの メッセージキュー では、—p または —password オプションを使用して、imqcmd、imqbrokerd、および imdbmgr コマンドのパスワードを対話形式で指定することができました。version 4.0 から、これらのオプションは使用できなくなりました。
代わりに、関連するパスワードを指定したパスワードファイルを作成し、-passfile コマンドオプションを使用してそのパスワードファイルを参照できます。または、コマンドで要求されたときにパスワードを入力することもできます。
パスワードファイルには、次に示すパスワードを 1 つ以上格納することができます。
SSL キーストアを開くために使用するキーストアパスワード。このパスワードを指定するには imq.keystore.password プロパティーを使用します。
接続が匿名でない場合に LDAP ディレクトリとの接続のセキュリティーを確保するために使用する LDAP リポジトリパスワード。このパスワードを指定するには imq.user_repository.ldap.password プロパティーを使用します。
JDBC 準拠のデータベースとの接続に使用する JDBC データベースパスワード。このパスワードを指定するには imq.persist.jdbc.vendorName.password プロパティーを使用します。プロパティー名の vendorName コンポーネントは、データベースベンダーを指定する変数です。hadb、derby、pointbase、oracle、mysql から選択できます。
imqcmd コマンド (ブローカ管理タスクを実行する) に対するパスワード。このパスワードを指定するには imq.imqcmd.password プロパティーを使用します。
次の例では、JDBC データベースに対するパスワード abracadabra をパスワードファイルに設定しています。
imq.persist.jdbc.mysql.password=abracadabra
バスワードファイルは、次のいずれかの方法で使用できます。
ブローカがパスワードファイルを使用するように、ブローカの config.properties ファイルに次のプロパティーを設定する。
imq.passfile.enabled=trueimq.passfile.dirpath= passwordFileDirectoryimq.passfile.name=passwordFileName
関連するコマンドの -passfile オプションを使用する。次に例を示します。
imqbrokerd -passfile passwordFileName
次に示す問題は メッセージキュー の管理および設定に関係するものです。
Windows プラットフォームでは、imqsvcadm コマンドを使用して、メッセージキュー ブローカを Windows サービスとして手動で追加する必要があります。インストーラはこの処理を実行しません。
Windows プラットフォームの場合、デフォルトで有効になっている組み込みの Windows ファイアウォールで、ブローカがクライアントから受信接続を受け付けるようにするためのファイアウォール規則を手動で設定する必要があります。(バグ 6675595)
コントロールパネルの「Windows ファイアウォール」をダブルクリックします。
Windows ファイアウォールの設定ダイアログを開くには、「ユーザー アカウント制御」ダイアログで「続行」をクリックします。
Windows ファイアウォールの設定ダイアログで、「例外」タブをクリックします。
「プログラムの追加」をクリックします。
「プログラムの追加」ダイアログで、「java.exe」を選択し、「参照」をクリックします。
Windows はブローカプロセスを Java Platform SE バイナリとして識別します。従って、ブローカが使用する java.exe (通常は jdk1.5.0_15\jre\bin\java.exe) を探します。
「スコープの変更」をクリックします。
「スコープの変更」ダイアログで、「任意のコンピュータ (インターネット上のコンピュータを含む)」を選択します。
「了解」をクリックします。
「プログラムの追加」ダイアログで「OK」をクリックします。
Windows ファイアウォールの設定ダイアログで「OK」をクリックします。
Windows プラットフォームの場合、CLASSPATH に二重引用符が含まれていると、imqadmin および imqobjmgr コマンドの実行時にエラーがスローされます。(バグ 5060769)
回避方法: コマンドプロンプトウィンドウを開き、次のように入力して CLASSPATH を設定解除します。
set classpath=
その後、同じコマンドプロンプトウィンドウで、必要なコマンドを実行します。次に例を示します。
mqInstallHome\mq\bin\imqadmin
すべての Solaris および Windows スクリプトで、-javahome オプションの値に空白文字が含まれると動作しません。(バグ 4683029)
javahome オプションは メッセージキュー コマンドおよびユーティリティーで使用し、使用する代替の Java 2 互換のランタイムを指定します。ただし、代替の Java 2 互換のランタイムへのパスには、空白文字を含めることはできません。空白文字を含むパスの例は次のとおりです。
Windows: C:\jdk 1.4
Solaris: /work/java 1.4
回避方法: Java ランタイムを、空白文字を含まない場所またはパスにインストールします。
imqQueueBrowserMaxMessagesPerRetrieve 属性は、クライアントランタイムがキューの内容を検索するときに一度に取得することのできるメッセージの最大数を指定します。この属性は、キューに入れられたメッセージがバッチ処理され、クライアントランタイムに配信される方法には影響しますが、参照されるメッセージの総数には影響しません。この属性は参照機構のみに影響し、キューのメッセージの配信には影響しません。(バグ 6387631)
SELinux を実行している Linux プラットフォームでは、Update Center の pkg コマンドが失敗します。(バグ 6892062)
回避方法: この問題は Update Center の既知の問題により発生します (https://updatecenter2.dev.java.net/issues/show_bug.cgi?id=1211)。次のコマンドを使用して、Enforcement が有効な SELinux で pkg コマンドが機能するようにします。
# chcon -f -t textrel_shlib_t $IMAGE/pkg/vendor-packages/OpenSSL/crypto.so |
次に示す問題は メッセージキュー ブローカに影響します。
メッセージキュー 4.4 クライアントは、メッセージキュー 3.7 ブローカに接続するときに不明瞭な警告を受信します。(バグ 6899886)
メッセージキュー 4.4 クライアントが メッセージキュー 3.7 ブローカに接続するときに、クライアントは次の形式の警告を受信します。
WARNING [I500]: Caught JVM exception: ... [C4036]: A broker error occurred. :[505] bad version ...
この「正しくないバージョン」の警告は、プロトコルレベルを下げてクライアントをブローカに再接続すべきであることを示しています。
JDBC データストアを使用する場合、データベースのパスワードが平文で保存されます。(バグ 6691717)
回避方法: 『Sun GlassFish Message Queue 4.4 Administration Guide』の「Password Files」で説明しているように、データベースのパスワードを含むパスワードファイルをセキュリティー保護します。
持続データストアがあまりにも多くの送信先を開く場合、ブローカがアクセス不可能になります。(バグ 4953354)
回避方法: この状態はブローカがシステムのオープンファイル記述子の制限に達したことが原因です。Solaris や Linux では、ulimit コマンドを使って、ファイル記述子の制限を増やします。
送信先が破棄された場合、コンシューマが孤立します。(バグ 5060787)
送信先が破棄された場合、アクティブコンシューマが孤立します。いったんコンシューマが孤立すると、送信先が再作成された場合でもメッセージを受信しなくなります。
HTTP 接続サービスを使用している JMS クライアントが、Ctrl-C の使用などにより突然終了した場合、ブローカがクライアント接続や関連するすべてのリソースを解放するまでに、およそ 1 分かかります。
この 1 分の間にクライアントのほかのインスタンスが起動し、同じ ClientID、永続サブスクリプション、またはキューを使おうとした場合、そのインスタンスは「クライアント ID はすでに使用されています」の例外を受け取ります。このことは実際の問題ではなく、上記の終了処理の結果にすぎません。およそ 1 分経過後にクライアントが起動すると、すべて問題なく動作します。
データストアに MySQL データベースを使用している場合、1M バイトを超えるメッセージを格納すると、「クエリーのパケットが大きすぎます...」という SQLException がスローされます。(バグ 6682815)
回避方法:--max_allowed_packet オプションでデフォルトの 1M バイトより大きい値を設定して MySQL サーバーを起動します。たとえば、次の値を使用します。
--max_allowed_packet=60M
高可用性共有データストアに MySQL データベースを使用している場合、MySQL ストレージエンジンを NDBCLUSTER として設定する機構が必要です。(バグ 6691394)
回避方法: ブローカの config.properties ファイルに、次のプロパティー値を追加します (『Sun GlassFish Message Queue 4.4 Administration Guide』の「Enhanced Clusters: JDBC Configuration Properties 」を参照)。
imq.persist.jdbc.mysql.tableoption=EMGINE=NDBCLUSTER
Oracle の 9i (JDBC 9.2.0.x) ドライバを使用する場合、ブローカが「Failed to persist property...」という例外をスローします。(バグ 6626825)
回避方法: Oracle の 10g (JDBC 10.2.0.x) ドライバを使用します。ブローカはこのドライバに対して最適化されます。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
データストアに Java DB データベースを使用している場合、メッセージを格納すると、「要求された時間内に例外を取得できませんでした」という SQLException がスローされます。(バグ 6691394)
回避方法: ブローカの config.properties ファイルに次のプロパティー値を設定します。
imq.persist.jdbc.derby.table.MYCONSTATE41.index.IDX2=CREATE INDEX &(index) ON $(name) (MESSAAGE_ID)
AIX で IBM JVM を使用しているときに、明白な理由なく、ブローカが低メモリーまたはメモリー不足の状態に陥ります。(バグ 6899526)
回避方法: IBM JVM の最新のバージョン (Java Runtime 1.6.0 IBM Corporation 以降) を使用して、imqbrokerd に次の IBM JVM GC オプションを渡します。
# imqbrokerd -vmargs -Xgcpolicy:gencon |
次に示す問題は、ブローカクラスタに影響します。
MySQL Cluster データストアを使用する高可用性ブローカは、異常終了した場合、再起動に失敗します。(バグ 6896877)
回避方法: この問題は MySQL Cluster の既知の問題により発生します (http://bugs.mysql.com/bug.php?id=47955)。この問題に対する修正は、MySQL バージョン 5.1.39-ndb-6.3.28、5.1.39-ndb-7.0.9、および 5.1.39-ndb-7.1.0 に組み込まれています。
このリリースでは、フル接続のブローカクラスタのみサポートされています。つまり、クラスタ内のすべてのブローカは、そのクラスタ内のほかのブローカと相互に直接やり取りする必要があります。imqbrokerd -cluster コマンド行引数を使用してブローカを従来のクラスタに接続する場合は、そのクラスタ内のすべてのブローカが含まれていることを確認してください。
クライアントが拡張ブローカクラスタ内のブローカに接続されている場合、クライアントランタイムは、imqAddressListIterations 接続ファクトリ属性の値を無視して、成功するまで再接続を試みます。
クライアントが検索できるのは、ホームブローカにあるキューの内容のみです。この場合でも、クライアントは、クラスタ内の任意のブローカに対してキューにメッセージを送信したりキューからのメッセージを消費したりできます。制約を受けるのはキューの検索のみです。
Version 4.3 のブローカが含まれる従来のクラスタでは、すべてのクラスタが Version 3.5 以降でなければなりません。
デフォルトでは、メッセージキュー 4.3、4.2、および 4.1 のブローカを メッセージキュー 3.7 または 3.6 のブローカと同時に使用できません。これは、これらのバージョン間で imq.autocreate.queue.maxNumActiveConsumers のデフォルト値が変更されているためです。(バグ 6716400)
回避方法: すべてのブローカで imq.autocreate.queue.maxNumActiveConsumers の値を同じにします。通常は、メッセージキュー 4.3、4.2、および 4.1 の設定を変更して、3.7 または 3.6 のブローカで使用されている設定に一致させます (デフォルトでは、-1 の値を以前のバージョンのデフォルト値の 1 に変更します)。
Message Queue 4.3 (または 4.x) ブローカを Message Queue 3.x ブローカクラスタに追加するには、マスターブローカが動作している必要があります。(バグ 6763796)
従来のクラスタから拡張クラスタに変換するときに、メッセージキュー データベースマネージャーユーティリティー (imqdbmgr ) を使用して、既存のスタンドアロン JDBC ベースのデータストアから共有 JDBC データストアに変換できます。方法については、『Sun GlassFish Message Queue 4.4 Administration Guide』の「Cluster Conversion: JDBC-Based Data Store」を参照してください。
HADB を使用するブローカは、10M バイトより大きなメッセージを処理できません。(バグ 6531734)
コマンド imqdbmgr upgrade hastore を使用した HADB ストアへの変換は、ストアに 10,000 を超えるメッセージが保持されている場合、「設定されているロックの数が多すぎます」というメッセージが表示されて失敗することがあります。(バグ 6588856)
回避方法: 次のコマンドを使用して、ロックの数を増やします。
hadbm set NumberOfLocks=<desiredNumber>
詳細は、『Sun Java System Application Server 9.1 Enterprise Edition トラブルシューティングガイド』の「HADB の問題」を参照してください。
1 つのトランザクションに 500 を超えるリモートメッセージがコミットされている場合、ブローカは「HADB-E-12815: Table memory space exhausted」というエラーを返します。(バグ 6550483)
詳細は、『Sun Java System Application Server 9.1 Enterprise Edition トラブルシューティングガイド』の「HADB の問題」を参照してください。
ブローカクラスタで、ブローカが開かれていないリモート接続へのメッセージをキューに入れます。(バグ 4951010)
回避方法: いったんその接続が開かれると、メッセージはコンシューマによって受信されます。コンシューマの接続が閉じたままの場合、メッセージは別のコンシューマへ再配信されます。
1 つのトランザクションでリモートブローカから複数のメッセージを消費しているときは、次のエラーメッセージがブローカに記録される可能性があります。このメッセージは無視しても問題ありません。
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Message acknowledgement failed from mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Reason = Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] WARNING Notify commit transaction [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.: com.sun.messaging.jmq.jmsserver.util.BrokerException: Update remote transaction state to COMMITED(6): transaction 3534784765719091968 not found, the transaction may have already been committed.r
このメッセージは、imq.txn.reapLimit プロパティーが 1 つのトランザクション内のリモートメッセージの数と比較して少ない場合に、トランザクション内の後のメッセージのためにコミットをメッセージホームブローカに通知するときに記録されます。(バグ 6585449)
回避方法: このメッセージを回避するには、imq.txn.reapLimit プロパティーの値を増やします。
Windows プラットフォームでは、トランザクションマネージャーの監視 MBean の getTransactionInfo メソッドが不正なトランザクションの作成時間を含むトランザクション情報を返します。(バグ 6393359)
回避方法: 代わりに、トランザクションマネージャーの監視 MBean の getTransactionInfoByID メソッドを使用します。
SOAP サポートに関連した 2 つの問題に注意する必要があります。
Message Queue の version 4.0 のリリースから、SOAP 管理によるオブジェクトのサポートは中止されています。
SOAP 開発は、SUNWjaf、SUNWjmail、SUNWxsrt、および SUNWjaxp ファイルに依存します。Message Queue の version 4.1 では、これらのファイルを利用できるのは JDK version 1.6.0 以降で Message Queue を実行している場合のみです。
以前は、SAAJ 1.2 実装 .jar が mail.jar を直接参照していました。SAAJ 1.3 では、この参照が削除されたため、Message Queue クライアントが mail.jar を明示的に CLASSPATH 内に配置する必要があります。