このブログはもはやWebLogicを血祭りに挙げるブログとなりました
[weblogic.management.ApplicationException: Exception:weblogic.management.ApplicationException: Prepare failed. Task Id = 12 Module: xasimpletest Error: [EJB:011025]XML パーサはデプロイメント記述子でエラーを検出しました。DOC TYPE が正しいことを確認してください。デプロイメント記述子を WebLogic Server のサンプルと比較してフォーマットが 正しいことを確認することもできます。エラーは次のとおりです。 PAction[8369942](.ejb-jar.assembly-descriptor.container-transaction.trans-attribute.) must be one of the value s: NotSupported,Supports,Required,RequiresNew,Mandatory,Never
まずね,CMPのトランザクションタイプを設定する際,"MANDATORY"とかのように大文字で書くとこんなエラーでちゃうの.お前はequalsIgnoreCaseくらい使えんのかと・・・.
「それがWebLogicクオリティ」とか心の中で思いつつも"Mandatory"と書き直して再デプロイ.
しかし今度は"weblogic.jms.XAConnectionFactory"を使っているのにUserTransactionのcommitに反応せず.あるいは"XA 接続ファクトリを有効化"にチェックを入れた接続ファクトリを使ってもutx.commit()に反応せず.お前はQueueSession.commit()にしか反応しないのかよと・・・.
そもそも,XA以前にQueueにメッセージ送信できても受信できないもんね.QueueSessionオブジェクトが変わると.
さらに,XADataSourceはデプロイ自体がエラーで駄目.なぞのXA_HEURMIXなXAExceptionが飛んでくる.まだトランザクション発行もしていないのにXA_HEURMIXとは恐れ入った.WebLogicにはMySQL XAなJDBCドライバは使えないですか,そうですか.
しょうがないのでとりあえずエミュレートXAで動かそうかとやってみる.「グローバル トランザクションを受け付ける:true」「非 XA ドライバ用に 2 フェーズ コミットをエミュレート」チェックオンなのに,autocommit=onのままでデータソースがからConnectionが渡される.XAなんだからautocommit=offにして渡せよ.
しぶしぶ自分でsetAutoCommit(false)を追加する.しかしまたやってくれた.utx.commit()にこいつも反応しない.
予想:Transaction ContextへRecoverable Resourceをenlistする処理の実装がへぼい.
なんでたかだかサンプルレベルのテストコードを走らせようとするだけで,こんなに想定どおりに行かないの? GUI管理コンソールの言うことを信じてチェックを入れたり外したりしても,ぜんぜん動き変わらないじゃん.
こういう目に遭っているのうちだけですかー? これで200万とは笑わせてくれる.今までWebLogicのことはあまりよく知らなかったから,200万もお金を取るということはたいそうJBossよりも良い物なんだろうと想像していたが,ひどいもんだ.こんなのに高い金を出して工数かけてまでEJB使った開発する必要なんてないね.Apache+Tomcat+Springのほうがいいという人がいる理由が良く分かった.
まあでもJ2EEはJ2EEのよさがあるので,みんなWebLogic使うのやめてJBossに乗り換えよう.ライセンス料金かからないだけでなく,開発も楽になるよ〜〜〜.