内部JMS.ConnectionPoolへのlookupが成功したり失敗したりするので、どうもおかしいなと思って調べていたら、ここにバグとして出ていた。
* 1度以上OSGi以外からlookupしていれば見つかるが、そうでないとだめ。
* 3.0.1で修正の見込みの模様
ただし、外部リソースへのlookupは問題ないようだ。
2010年1月30日土曜日
2009年12月4日金曜日
Websphere MQ JMSからのメッセージをMQSTRにする
通常のJMSのTextMessageで送ると、MQ側ではRFHという形式になってしまい。そのままでは受け取れない。その場合は、以下の資料にあるように、「targetClient=1」を指定するとよいのだが、この指定の場所が Desitination であることが厄介だ。
参考:[S2JMS]S2JMSを使ってみる~アウトバウンド通信編~CommentsAdd Star
MQのマニュアルを見ると、以下のようにすればいいとあった。
つまり、キューの宛先指定に単なる文字でなく、URI形式で以下のように書けばいいということだ。
ホスト名を省略する場合は、///となることに注意。
これは、以下のマニュアルの381ページあたりにあった。
d8864272.pdf
参考:[S2JMS]S2JMSを使ってみる~アウトバウンド通信編~CommentsAdd Star
MQのマニュアルを見ると、以下のようにすればいいとあった。
以下の例では、キュー・マネージャーHOST1.QM1 上のキューQ1 に接続し、すべ
てのメッセージを非持続性および優先順位5 として送信します。
ioQueue = session.createQueue("queue://HOST1.QM1/Q1?persistence=1&priority=5");
つまり、キューの宛先指定に単なる文字でなく、URI形式で以下のように書けばいいということだ。
queue:///TGT_QUEUE_NAME?targetClient=1
ホスト名を省略する場合は、///となることに注意。
これは、以下のマニュアルの381ページあたりにあった。
d8864272.pdf
Websphere MQ での名称文字列 大文字/小文字
ずーーーっと、大文字のみで区別なしだと思っていたのだが、
JMSからの接続でどうにもつながらず、以下のエラーがでまくっ
たために調べてみると、区別があることが分かった。
参考文献は、MQ設計虎の巻: 第8回「トラブル・シューティング」
うーーん、何事にも先達はあらまほしき、、、
JMSからの接続でどうにもつながらず、以下のエラーがでまくっ
たために調べてみると、区別があることが分かった。
javax.jms.InvalidDestinationException: MQJMS2008: MQ キュー cmt_spo_nrml のオープンに失敗しました
参考文献は、MQ設計虎の巻: 第8回「トラブル・シューティング」
MQのオブジェクト(キュー、キューマネージャー、チャネル等)は大文字、小文字を識別します。
プログラムなどで、キュー名、キューマネージャー名を指定する場合は、大文字、小文字に注意してください。
特に、MQSCコマンドのDEFINEでキュー名を指定する場合、明示的に小文字で作成する場合には、' '(シングルクォーテーション)で囲む必要があります。
シングルクォテーションを使用せずに、小文字で指定すると、自動的に大文字に変換されて定義されます。
MQでは、便宜上、オブジェクト名を、大文字に統一することをお勧めします。
うーーん、何事にも先達はあらまほしき、、、
2009年12月2日水曜日
MQ6.0+JMS 初期設定 on Ubuntu 9.10
1) MQユーザにスイッチ
su - mqm
2) QueueManagerを作成
crtmqm QM1
3) スタート
strmqm QM1
4) リスタースタート
runmqlsr -t tcp -m QM1 -p 1515 &
5) JMS環境
cd /opt/mqm/java/bin
source setjmsenv
6) 設定変更(当初は LDAP なので、File に変更)
vi ./JMSAdmin.config
----------
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/opt/mqm/tmp
----------
7) JMS用のキューを作成
runmqsc QM1 < MQJMS_PSQ.mqsc
8) データ授受用のローカルキュー
runmqsc QM1
> DEF QL(C.SND.NRML)
> DEF QL(C.SND.CTRL)
> ......
> end
9) MQ/JMS ブローカを起動
strmqbrk -m QM1
10) JMSAdmin でConnectionFactoryなどを定義
./JMSAdmin
def qcf(QCF) qmanager(QM1) hostname(localhost) port(1515) channel(SYSTEM.DEF.SVRCONN) transport(CLIENT)
def xaqcf(XAQCF) qmanager(QM1) hostname(localhost) port(1515) channel(SYSTEM.DEF.SVRCONN) transport(CLIENT)
def q(c_s_nrml)) queue(xxxxxx) qmanager(QM1)
つぎや、GlassFishのRA(ResourceAdaptor)定義へ続く
su - mqm
2) QueueManagerを作成
crtmqm QM1
3) スタート
strmqm QM1
4) リスタースタート
runmqlsr -t tcp -m QM1 -p 1515 &
5) JMS環境
cd /opt/mqm/java/bin
source setjmsenv
6) 設定変更(当初は LDAP なので、File に変更)
vi ./JMSAdmin.config
----------
INITIAL_CONTEXT_FACTORY=com.sun.jndi.fscontext.RefFSContextFactory
PROVIDER_URL=file:/opt/mqm/tmp
----------
7) JMS用のキューを作成
runmqsc QM1 < MQJMS_PSQ.mqsc
8) データ授受用のローカルキュー
runmqsc QM1
> DEF QL(C.SND.NRML)
> DEF QL(C.SND.CTRL)
> ......
> end
9) MQ/JMS ブローカを起動
strmqbrk -m QM1
10) JMSAdmin でConnectionFactoryなどを定義
./JMSAdmin
def qcf(QCF) qmanager(QM1) hostname(localhost) port(1515) channel(SYSTEM.DEF.SVRCONN) transport(CLIENT)
def xaqcf(XAQCF) qmanager(QM1) hostname(localhost) port(1515) channel(SYSTEM.DEF.SVRCONN) transport(CLIENT)
def q(c_s_nrml)) queue(xxxxxx) qmanager(QM1)
つぎや、GlassFishのRA(ResourceAdaptor)定義へ続く
登録:
投稿 (Atom)