Hatena::ブログ(Diary)

日記

2005-01-17 (月)

CanCam2004年06月号の蛯原友里ちゃん

[][] CanCam 06 月号 エビちゃんベストセレクション 4 03:00

CanCam から,お気に入りの蛯原友里ちゃんを紹介しようというこのコーナー.

今日は「夏の Luxury Denim Style 5」というコーナーから P176 の友里ちゃん.

久々に全身のカットなんですが... すっごいですよね,この薄さ. っていうか脚の長さも... 生で見ると本当にこんな感じっていうか同じ人間とは思えないっていうか隣に並んで歩くのは無理とか思っちゃいましたよ.って,いうじゃなぁーい.どうせそんな機会ありませんから!! 残念!!!!

そんなわけで (どんなわけで?),やっぱり CanCam 買うしか!!

[][][] 出演予定 TV 番組 03:00

情報がない... (;_;)

[][] Re: JtaTransactionManagerとnon-XA-awareのDataSource 02:02

またまた id:taedium さんからネタを頂きました.(^^;

まずはちょっと整理.

JTA は分散トランザクションすなわち 2 フェーズコミットを利用するために規定されている仕様で,トランザクションを表現するインタフェースとして Transactionトランザクションに参加できるリソースを表現するインタフェースとして XAResource を定めています.そして,Transaction#enlistResource(XAResource) を呼び出す事で,そのリソースをトランザクションに参加させることが出来ます.

ここで注意すべきなのは,誰が Transaction#enlistResource(XAResource) を呼び出すかは規定されていない (そういうインタフェースやクラスは決められていないという意味) ということです.


次に JDBC ですが,こちらで分散トランザクションに関連するのは XADataSourceXAConnection です.XAConnection#getXAResource() を呼び出すと,その RDBMS を表す XAResource を取得することが出来ます.

ここで注意すべきなのは,誰が XAConnection#getXAResource() を呼び出すかは規定されていないということです.


そんなわけで (どんなわけで?),JTAJDBC を並べてみると,XAResource を通じて両者を結びつける存在が欠けていることが分かります.それを担うのは誰か? J2EE 仕様的には,アプリケーションサーバということになっています.とはいえ,別にアプリケーションサーバである必要はありません.多くの場合,この仲介者としての責務を果たすのはコネクションプールです.

ということで JDBC を見直すと,XAConnectionPooledConnectionextends しています.PooledConnection とはプールされるコネクションということですよね.プールする側ではなくて,プールされる側.XAConnection はどこかにコネクションプールが存在し,そいつにプールされることを前提としているわけです.

通常,コネクションプールは DataSource を実装します.そしてアプリケーションから getConnection() が呼び出されると,プールされている XAConnection を取ってきて XAResource を取得し,Transaction#enlistResource(XAResource) を呼び出します.そして XAConnection#getConnection() が返す Connection をアプリに返すわけです.

ちなみに,大抵のコネクションプールは非 XA な DataSourceJTAトランザクションに参加させるためのラッパーも提供していると思います.


という具合に,コネクションプールはとても重要な存在なのですが,それは仕様の一部ではなくて個別に提供される実装です.そんなわけで (どんなわけで?),S2 はコネクションプールの実装として S2DBCP を提供しています.さらに S2 では JTA の実装も S2Tx として提供しています.

一方 Spring はそのようなコネクションプールの実装を提供していません (たぶん).JTA の実装も提供していません (たぶん).それらはどこかから調達してくる必要があります.かつての入門記ではそのために S2DBCPS2Tx を使いましたが,その他に例えば ObjectWeb の XAPool と JOTM を使うことも出来るでしょうし,JBossWebSphereWebLogic 等が提供するコネクションプールや JTA の実装を使うことも当然出来るでしょう.

その場合,JDBC コネクションをクローズしたりするのは Spring ではなくてコネクションプールの実装です.ですから,Spring のソースを見ても何も分かりませんから!! 残念!!!!


そんなわけで (どんなわけで?),「Spring では beforeCompletion でコネクションをクローズしている」という話の対象になると私が思ったのは JTA を使わない DataSourceTransactionManager を使った場合の話です.この場合も,一般的な DataSource は Spring の DataSourceTransactionManager の存在なんか知らないので,誰かが両者を結びつける必要があります.それを実際に行っているのが悪名高い DataSourceUtils で,それを意識しなくてもいいように追加されたのが TransactionAwareDataSourceProxy ということになります (たぶん).


ともあれ (JW),Spring で JTA を使いたいのなら JTA の実装とコネクションプールの実装が必要です.S2Tx および S2DBCP を使うのは以前入門記でやっているので,ここは是非 JOTM と XAPool でやってみてください.これらは Spring のディストリビューションに含まれています.XAPool には非 XA な DataSource に対するラッパーもついているので,HSQLDB とかでもお試しできます (その場合本当の 2PC はできませんが).

頑張ってねぇ〜.

[][][] Inter 0 - 0 Reggina 01:23

こちらも一日遅れですが...

(;_;)

無敗伝説更新というか引き分け地獄に逆戻り? 相手に退場者が出てたのに...

[][][] Lakers 104 - 102 Warriors 01:10

一日遅れですが...

\(^o^)/

Kobe 故障者リスト入りで心配な状況ですが,どうにか粘り勝ちした模様.みんな頑張ってね〜.

[][] めざましテレビ 01:00

今日の早耳ムスメ臼田あさ美ちゃーん,お題は「こだわりの味が集結!! 日本全国 人気の駅弁」.

大塚さんの宣言通り,早くもぶっちぎり体制を築きつつあるあさ美ちゃんがまたしても登場.

それにしてもなんですなぁ,駅弁ってそんなに人気なんだぁ.でもでも,お弁当ばかりであさ美ちゃんあんまり映ってないような気のせいが.あさ美ちゃん,髪あげた方がかわいいね♪

お,「あさ美のお気に!」は福井の「香ばしい焼きかにめし」だ! っていうじゃなぁーい.でも拙者,食べた記憶ありませんから!! 残念!!!!

makotanmakotan 2005/01/18 07:02 1年前原理恵子がやってたんだよ〜<駅弁
今日のあさみちゃん可愛い!!

skimuraskimura 2005/01/18 11:51 今日から、しばらく早起きなので、リアルタイムであさみちゃん見れた。