New NotePCの季節!?(なわけない 金ないよー)

実はここ数ヶ月間、「某用途のために購入された」会社のNotePCを一人で占有している。就業時間中に占有するのみにとどまらず、その勢いは社外で開催された業務とは関係の無い勉強会や打ち合わせ(それから自宅学習等)にまで持ち出すといったところにまで達している。(一応念のために言っておきますと、このマシンには技術情報を除く、一切の個人情報は入ってません。きっぱり。)

そんなことができたのも、某用途に関する業務の担当が僕だったためなのだけれども、実は来月あたりから某先輩にも半分肩代わりしていただくことになる。

それはそれで嬉しいことなのだけど、一つ問題が。このNotePCどーすんべ、と。

このまま占有し続けちゃっていいのかな? 某先輩は某先輩でお気に入りのOS(というかハードウェア込み)のNotePCがあるし。いいよね? うん、いいと思う。

決して、iBook/PowerBook/MacBookが欲しいとか言わないし〜。そんなお金ないしぃ〜〜。

しかし買ったとしても、いまは個人用PCの持ち込み禁止だからなぁ・・・。どっちも行ける検証環境作ろうと思ったら、会社のPCの私物化しか無いんだよw

TxConnectionManager

ここ数日、久しぶりにJBossのソースを読んでおります。

今日気づいた驚愕の事実。

TxConnectionManagerはクラスコメントにはConnectionManager実装だと書かれているけれども、よくソースを見てみるとjavax.resource.spi.ConnectionManagerとは何の継承/実装関係も無かった♪

これって良いのかな?

もう少し読み進めると、BaseConnectionManager2クラスのallocateConnectionメソッドが以下のように宣言されていることに気づく。

// implementation of javax.resource.spi.ConnectionManager interface

public Object allocateConnection(ManagedConnectionFactory mcf, ConnectionRequestInfo cri) throws ResourceException

このBaseConnectionManager2はTxConnectionManagerの基底クラスであり、TxConnectionManagerではこのメソッドをオーバーライドしておらず、javax.resource.spi.ConnectionManagerインタフェースが定義しているメソッドはこのallocateConnectionメソッドだけとなっている。
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/javax/resource/spi/ConnectionManager.html

"実装事実上"ということで見るならば、確かにTxConnectionManagerはConnectionManagerとも言えるかな。しかしそうすると、なぜ「わざとimplements宣言から外されているのか」が気になりますねー。



追記:
結論、問題なし。というかなるほどーという感じ。

WrapperDataSouceクラスが呼んでいるのはあくまでBaseConnectionManager2$ConnectionManagerProxyクラスのallocateConnectionメソッドであり、このConnectionManagerProxyクラスはjavax.resource.spi.ConnectionManagerインタフェースを実装しているのだった。だからここから先の処理は別にインタフェース実装クラスで無くとも良いし、無理に実装させるほうが不自然。