Seasar用のJNDI文字列の切り替えクラスを作ったよ
仕事ではアプリケーションサーバーが、本番WebSphere、開発Tomcatになっています。
WebSphereの開発環境であるRationalApplicationDeveloperはライセンスが必要でお金がかかります。
せっかくフリーの物があるのでそれを使ったほうが経費削減になるしお得です。
アプリケーションサーバーが異なるので設定も異なってきます。
JNDIに関してはWebSphereの場合、「jdbc/hoge」でいいのですが、
Tomcatの場合、「java:comp/env/jdbc/hoge」と「java:comp/env」が必要です。
動かす環境によってその都度JNDIの文字列を変更するのがめんどくさいので、自動で切り替えてくれるクラスを作りました。
環境はSeasar2.4です。
JNDIの切り替えクラス
import test; public class JndiSwitcher { private static final String ENC_PREFIX = "java:comp/env/"; /** * JNDIの文字列を切り替えます。 * WebSphereの場合、jdbc/hoge、Tomcatの場合、java:comp/env/jdbc/hogeの形にします。 * 引数にはjava:comp/env/jdbc/hogeの値を想定しています。 * @param name JNDI名 * @return ret JNDIの結果 */ public static String doSwitch(String name) { String ret; try { // WebSphere Class.forName("com.ibm.wsspi.webcontainer.WebContainer"); ret = name.replaceAll(ENC_PREFIX, ""); } catch (ClassNotFoundException e) { // Tomcat ret = name; } // message System.out.println(String.format("JNDIは[%s]が設定されました", ret)); return ret; } }
jdbc.dicon
<!-- from JNDI --> <component name="DataSource" class="javax.sql.DataSource"> @org.seasar.extension.j2ee.JndiResourceLocator@lookup(@test.JndiSwitcher@doSwitch("java:comp/env/jdbc/hoge")) </component>
Seasar 2 徹底入門 SAStruts/S2JDBC 対応 竹添 直樹 翔泳社 2010-04-20 売り上げランキング : 10315 Amazonで詳しく見る |