この節には、Message Queue 3.7 UR1 の既知の問題についてのリストが含まれています。次の内容について説明します。
現時点のバグ、その状態、および回避策の一覧については、Java Developer Connection™ メンバーは、Java Developer Connection Web サイトの「Bug Parade」ページを参照してください。新しいバグを報告する前に、このページをチェックしてください。すべての Message Queue バグがリストされているわけではありませんが、このページはある問題が報告済みかどうかを知りたい場合に活用できます。
http://bugs.sun.com/bugdatabase/index.jsp
Java Developer Connection のメンバーになるのは無料ですが、登録が必要です。Java Developer Connection のメンバーになる方法についての詳細は、Sun の「For Developers」Web ページを参照してください。
新しいバグの報告や機能に関する要求を行うには、imq-feedback@sun.com 宛てにメールを送信してください。
SSL を使用した接続サービスでは現在、自己署名サーバー証明書、つまりホスト信頼モードしかサポートしていません。
HTTP トランスポートを使用している JMS クライアントが、Ctrl-C の使用などにより突然終了した場合、ブローカがクライアント接続や関連するすべてのリソースを解放するまでに、およそ 1 分かかります。
この 1 分の間にクライアントのほかのインスタンスが起動し、同じ ClientID、永続サブスクリプション、またはキューを使おうとした場合、そのインスタンスは「クライアント ID はすでに使用されています」の例外を受け取ります。このことは実際の問題ではなく、上記の終了処理の結果にすぎません。およそ 1 分経過後にクライアントが起動すると、すべて問題なく動作します。
Message Queue 3.7 UR1 では、LDAP サーバーをユーザーリポジトリとして使用するためのブローカ設定の例が、config.properties ファイルのコメント領域に用意されています。default.properties ファイルにある LDAP ユーザーリポジトリの例は、コメントアウトされています。
従来、default.properties ファイルにある、LDAP ユーザーリポジトリプロパティー設定例のプロパティー値に依存していた場合、JMS アプリケーションクライアントは、JMS 接続を作成しようとするとセキュリティーの例外を受け取ります。これは、Message Queue 3.7 UR1 へのアップグレード後に発生します。
JMS クライアントが Message Queue 3.7 UR1 ブローカへの接続を作成しようとすると、ブローカログでエラーとなり、JMS クライアントは次の例外を受け取ります。
SecurityException. 20/Aug/2004:11:16:41 PDT] ERROR [B4064]: Ldap repository ldap property .uidattr not defined for authentication type basic:com.sun.messaging.jmq.auth.LoginException: [B4064]: Ldap repository ldap property .uidattr not defined for authentication type basic
回避策 『Sun Java System Message Queue 3.7 UR1 管理ガイド』の第 7 章「セキュリティーの管理」の指示に従い、ブローカプロパティー imq.user_repository.ldap.uidattr を設定します。
次の項目はブローカクラスタの使用に関連しています。
このリリースでは、フル接続のブローカクラスタのみサポートされています。つまり、クラスタ内のすべてのブローカは、そのクラスタ内のほかのブローカと相互に直接やり取りする必要があります。imqbrokerd -cluster コマンド行引数を使用してブローカを接続する場合は、そのクラスタ内のすべてのブローカが含まれていることを確認してください。
クラスタの一部であるブローカに接続されているクライアントは、現在 QueueBrowser を使用して該当するクラスタ内のリモートブローカにあるキューを検索することはできません。クライアントが検索できるのは、直接接続されているブローカにあるキューの内容のみです。この場合でも、クライアントは、クラスタ内の任意のブローカに対してキューにメッセージを送信したりキューからのメッセージを消費したりできます。制約を受けるのは検索のみです。
ブローカクラスタでマスターブローカを使用しない場合、クラスタに追加されているブローカによって保存された持続性の情報は、クラスタ内のほかのブローカには伝播されません。
クラスタ内のブローカの接続が切断されます (バグ ID 6377527)。
この問題の原因の 1 つとして、接続が切断されたブローカのアドレスがループバック IP アドレス (127.0.0.1) として解決されていることが考えられます。
回避策 ブローカのアドレスがループバック IP アドレスとして解決されないようにします。
ブローカクラスタで、開始しないリモート接続へのメッセージをブローカがキューに入れる (バグ ID 4951010)
回避策 いったんその接続が開始すると、メッセージはコンシューマによって受信されます。コンシューマの接続が閉じている場合、メッセージは別のコンシューマへ再配信されます。
次に示す問題は Message Queue の管理および設定に関係するものです。
Windows コンピュータで CLASSPATH に二重引用符が含まれている場合、imqadmin および imqobjmgr ユーティリティーはエラーをスローする (バグ ID 5060769)
回避策 エラーメッセージは無視できます。ブローカはコンシューマへのエラーの通知を正しく処理します。このエラーは、システムの信頼性には影響を与えません。
すべての Solaris および Windows スクリプトで、-javahome オプションの値に空白文字が含まれると動作しない (バグ ID 4683029)。
javahome オプションは Message Queue コマンドおよびユーティリティーで使用し、使用する代替の Java 2 互換のランタイムを指定します。ただし、代替の Java 2 互換のランタイムへのパスには、空白文字を含めることはできません。空白文字を含むパスの例は次のとおりです。
Windows の場合C:/jdk 1.4
Solaris: /work/java 1.4
回避策 Java ランタイムを、空白文字が含まれない場所またはパスにインストールします。
imqQueueBrowserMaxMessagesPerRetrieve 属性は、クライアントランタイムがキュー送信先の内容を検索するときに一度に取得することのできるメッセージの最大数を指定します。ただし、クライアントアプリケーションは常にキューにあるすべてのメッセージを取得します。このため imqQueueBrowserMaxMessagesPerRetrieve 属性は、キューに入れられたメッセージがチャンクされ、クライアントランタイムに配信される方法 (より少ない大型チャンク、またはより多い小型チャンク) には影響しますが、参照されるメッセージの総数には影響しません。この属性の値を変更するとパフォーマンスに影響が出る可能性はありますが、クライアントアプリケーションの取得するデータ量が変動することはありません (バグ ID 6387631)。
次に示す問題は Message Queue ブローカに影響します。
imqbrokerd —license コマンドが、日付の古いまたは重複した情報を表示する。このコマンドは、もうサポートされていない試用版ライセンスについての情報を表示し (バグ ID 6489711)、無制限ライセンスについての重複した情報を表示します (バグ ID 6441015)。
回避策 これらは表面的な問題で、回避策は必要ありません。
ブローカはデッドメッセージキューのデフォルトの制限 (1000 メッセージ) を守らず、ブローカのメモリーがなくなるまでデッドメッセージキューにメッセージを追加し続けます。(バグ ID 6502744)
回避策 デッドメッセージキューの制限を 1001、または 1000 以外の任意の値に設定し直します。
Windows 2000 で HTTPS createQueueConnection が例外をスローする場合がある (バグ ID 4953348)
回避策 接続を再試行します。
Ctrl-C を使用してブローカをシャットダウンする場合、ストアが閉じられたあとにトランザクションがクリーンアップされることがある (バグ ID 49344466)。
メッセージまたはトランザクションの処理中にブローカがシャットダウンされた場合、「ストアが閉じられたあとに、ストアメソッドがアクセスされました。」という内容のエラーをブローカが表示することがあります。
回避策 エラーメッセージは無視できます。ブローカはコンシューマへのエラーの通知を正しく処理します。このエラーは、システムの信頼性には影響を与えません。
持続ストアがあまりにも多くの送信先を開く場合、ブローカがアクセス不可能になる (バグ ID 4953354)。
回避策 この状態はブローカがシステムのオープンファイル記述子の制限に達したことが原因です。Solaris や Linux では、ulimit コマンドを使って、ファイル記述子の制限を増やします。
送信先が破棄された場合、コンシューマが孤立する (バグ ID 5060787)。
送信先が破棄された場合、アクティブコンシューマが孤立します。いったんコンシューマが孤立すると、送信先が再作成された場合でもメッセージを受信しなくなります。
回避策 この問題には、回避策がありません。
JMSMessageID を使用したメッセージ選択が機能しない (バグ ID 6196233)。
回避策 次のセレクタを変更します。
JMSMessageID = "ID:message-id-string"
次のように変更します。
JMSMessageID IN (’ID:message-id-string’, ’message-id-string’)
Message Queue のキューブラウザが、コミットされていないメッセージも表示する (バグ ID 6264003)。
キューの内容を検索するとき、キューブラウザの列挙に、トランザクション内で生成されたがまだコミットされていないメッセージが表示されることがあります。
回避策 この問題には、回避策がありません。
コミット中にブローカがクラッシュしたあと、メッセージが利用できない (Bug ID 6467874)。
ごくまれなケースですが、ブローカのクラッシュ中にトランザクション内のメッセージをコンシューマが利用できなくなる場合があります。具体的にはごくまれに、コミットの処理中にメッセージが持続ストア内に取り残されることがあります。この状況が発生した場合、クラッシュ後にブローカを起動すると次のメッセージが表示されます。
[06/Sep/2006:10:11:11 PDT] ERROR [B2085]: Loading Destination q0 [Queue] failed. Messages stored on that destination will not be available.: > com.sun.messaging.jmq.jmsserver.util.BrokerException: The message 8-129.145.180.87(b8:8b:26:15:41:26)-38998-1157562551217 has an associated acknowledgement list already.
回避策 この問題には、回避策がありません。
Message Queue 3.7 UR1 のベータリリースには、スタンドアロン製品はありません。このリリースでは、Java Enterprise System インストーラを使用して Message Queue をインストールしてください。方法については『Sun Java System インストールガイド』を参照してください。