このブログはもはや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のほうがいいという人がいる理由が良く分かった.

まあでもJ2EEJ2EEのよさがあるので,みんなWebLogic使うのやめてJBossに乗り換えよう.ライセンス料金かからないだけでなく,開発も楽になるよ〜〜〜.