2010年3月11日木曜日

フレームワーク奮闘記 その7 AOPとか思ったけど、もっとコアからだな。

今回、モデル周りの抽象化をしようと思って、色々とJavaについて知らないなぁと思って反省。
AOPだ!とか思ったけど、もっと基礎のところから、勉強をせねば。
まずはJNDI、WASがうちのAPだから、ここらへんからスタートだね。

JNDIとは、Java Naming and Directory Interfaceのこと。
もの凄いザクっというと、他のサービスやなんやらに、階層的にアクセス出来るインターフェイスだってこと。裏側にはLDAPだとか、ファイルシステムとかが来る。
それゆえに、データソースから値をとるときに、特定の命名規約にのっとってアクセスが出来るわけだ。

我が家の中でも結構、適当に使われていて、コード的には以下の部分になる。
InitialContext ctx = new InitialContext();
 DataSource ds = (DataSource) ctx.lookup("jdbc/Database");
とか書いてある部分。
これも、ファイルシステムの中にアクセスするとか、jdbcにアクセスするとか言うことを
一元的にJNDIが引き受けてくれているから出来ることらしい。
腐ったコードだと思っているところにも、思わぬ収穫があるもんだ。勉強になるなぁ。

InitialContextには引数をとれて、Propertiesを放り込むことが出来る。
書式的には、下記の通り。
Properties props = new Properties();
 props.put(Context.INITIAL_CONTEXT_FACTORY, "<サービス・プロバイダーのファクトリー・クラス名>");
 props.put(Context.PROVIDER_URL, "<サービス・プロバイダーを示すURL>");
 InitialContext ictx = new InitialContext(props); 
なるほどねぇ。
ここまでは、下記のリンクで勉強しました。

今さら人に訊けないJNDI

JNDIが何ものなのかはとりあえず分かった。
これで、MainServlet内に書いてある。InitalContext.lookup()が何やってるかも理解できた。
次は、どうやってSpringのapplicationContext.xmlに設定するかだ。
でも、これは意外と簡単に解決してしまった。そもそも、検索をする際のキーワードに
JNDIというキーワードが頭の中に無かったので、検索出来なかったのだ。
さすが。。。JNDI。。。おそるべし。
ちなみに、Springでは下記のように設定するらしい。jdbc/以下のDatabaseは可変だから。
設定した人に聞かないと分からないですが。。。

さて、次はログだな。MethodInterceptorとかThrowAdviceとか。
色々謎の単語が飛び交ってるけど、1つづつ片付けて行きますかねぇ。。。

0 件のコメント: