この節には、Message Queue 4.0 の既知の問題についてのリストが含まれています。製品に関する次のトピックが記載されています。
現時点のバグ、その状態、および回避策の一覧については、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 宛てにメールを送信してください。
以前のバージョンの Message Queue では、—p または —password オプションを使用して、次のようなコマンドのパスワードを対話形式で指定することができました。imqcmd、imqbrokerd、imdbmgr 今回のバージョンの 4.0 から、これらのオプションは使用できなくなりました。パスワードを指定するには次の手順に従います。
パスワードのみを格納するために使用するファイルで、適切なプロパティーを必要なパスワード値に設定します。
パスワードファイル内で、次の構文を使用してパスワードを指定します。
PasswordPropertyName =MyPassword
—passfile オプションを使用してパスワードファイルの名前を渡します。
パスワードファイルには、次に示すパスワードを 1 つ以上格納することができます。
SSL キーストアを開くために使用するキーストアパスワード。このパスワードを指定するには imq.keystore.password プロパティーを使用します。
接続が匿名でない場合に LDAP ディレクトリとの接続のセキュリティーを確保するために使用する LDAP リポジトリパスワード。このパスワードを指定するには imq.user_repository.ldap.password プロパティーを使用します。
JDBC 準拠のデータベースとの接続に使用する JDBC データベースパスワード。このパスワードを指定するには imq.persist.jdbc.password プロパティーを使用します。
imqcmd コマンド (ブローカ管理タスクを実行する) に対するパスワード。このパスワードを指定するには imq.imqcmd.password プロパティーを使用します。
次の例では、JDBC データベースに対するパスワードに abracadabra を設定しています。
imq.persist.jdbc.password=abracadabra
ブローカがユーザー作成のパスワードファイルを使用するように設定するには、次のいずれかの方法を実行します。
ブローカの config.properties ファイルに次のプロパティーを設定する。
imq.passfile.enabled=true |
imq.passfile.dirpath=MyFileDirectory |
imq.passfile.name=MyPassfileName |
imqbrokerd コマンドの —passfile オプションを使用する。
imqbrokerd —passfile MyPassfileName
この節では Message Queue 4.0 の一般的な問題を説明しています。中には以前のバージョンの Message Queue で発生した問題もあります。
次に示す問題は Message Queue 4.0 製品のどちらの版にも影響します。
SOAP クライアント。これまでは、mail.jar および mail.jar を参照するために使用する SAAJ 1.2 実装 JAR が CLASSPATH 内に存在する必要はありませんでした。SAAJ 1.3 では、この参照が削除されたため、Message Queue クライアントが mail.jar を明示的に CLASSPATH 内に配置する必要があります。
Message Queue 4.0 では、LDAP サーバーをユーザーリポジトリとして使用するためのブローカ設定の例が、config.properties ファイルのコメント領域に用意されています。default.properties ファイルにある LDAP ユーザーリポジトリの例は、コメントアウトされています。
従来、default.properties ファイルにある、LDAP ユーザーリポジトリプロパティー設定例のプロパティー値に依存していた場合、JMS アプリケーションクライアントは、JMS 接続を作成しようとするとセキュリティーの例外を受け取ります。これは、Message Queue 4.0 へのアップグレード後に発生します。
JMS クライアントが Message Queue 4.0 ブローカへの接続を作成しようとすると、ブローカログでエラーとなり、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 2005Q4 管理ガイド』の第 8 章にある指示に従い、ブローカプロパティー imq.user_repository.ldap.uidattr を設定します。
次に示す問題は JMX API の使用に関係するものです。
Windows プラットフォームでは、トランザクションマネージャーの監視 MBean の getTransactionInfo メソッドが不正なトランザクションの作成時間を含むトランザクション情報を返します (バグ ID 6393359)。
回避策 代わりにトランザクションマネージャーの監視 MBean の getTransactionInfoByID メソッドを使用します。
送信先監視 MBean の getActiveConsumerIDs メソッドをトピック送信先と一緒に使用すると例外をスローします (バグ ID 6397184)。
回避策 代わりに送信先監視 MBean の getConsumerIDs メソッドを使用します。
次に示す問題は 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 ブローカに影響します。
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)。
キューの内容を検索するとき、キューブラウザの列挙に、トランザクション内で生成されたがまだコミットされていないメッセージが表示されることがあります。
回避策 この問題には、回避策がありません。
クラスタ内のブローカの接続が切断されます (バグ ID 6377527)。
この問題の原因の 1 つとして、接続が切断されたブローカのアドレスがループバック IP アドレス (127.0.0.1) として解決されていることが考えられます。
回避策 ブローカのアドレスがループバック IP アドレスとして解決されないようにします。