以下の内容はhttps://shinsuke789.hatenablog.jp/entry/20110216/1297854413より取得しました。


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>



竹添 直樹

翔泳社 2010-04-20
売り上げランキング : 10315




以上の内容はhttps://shinsuke789.hatenablog.jp/entry/20110216/1297854413より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14