[Seasar-user:20166] Re: s2jdbc.dicon,jdbc.dicon をWEB-INF/classes外に配置したい(解決)

Kaoru Kobo [E-MAIL ADDRESS DELETED]
2010年 9月 20日 (月) 09:19:27 JST


かおる工房です。

小林さん、アドバイスありがとうございます。

>> データベース設定を書き込む s2jdbc.dicon を
>> <Webアプリケーションフォルダ>/WEB-INF/classes外に
>> 配備することができますでしょうか?
>
> dicon ファイルはクラスパスからリソースとして
> 読み込んでいるので,クラスパスに通っている
> 場所ならどこにでも置くことができます.

Tomcatを利用している場合、
アプリケーションごとに柔軟に別のクラスパスを追加する方法は
調べてみましたけど、分かりませんでした。
http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html

また、

>
> ...
> 簡単なのは War ファイルを作成するスクリプトで
> s2jdbc.dicon が含まれないようにすることでは
> ないかと.

これは確かに一番シンプルな手ですね。

ただ、やはりclassesの中というのが…
いわゆる「生成されたファイル」で
手軽に空にできるようにしたいという感覚があって
あまり設定などの手で編集するファイルを
置きたくないという感じがするのです。


そこで、

>
> こちらのプロダクトを利用している人達もいるようです.
>
> http://s2config.sandbox.seasar.org/ja/

を読んでみたところ、ヒントを得ました。
diconの中のOGNL式内でメソッド呼び出しができるのですね。

そこで、
WEB-INF/configuration.xml
という別の場所にあるXMLファイルをパースして設定をロード 
するための
コンポーネントXmlConfigurationを自作し、

jdbc.dicon
========================================================================
	<component name="xmlConfiguration"  
class="myapp.util.XmlConfiguration"></component>

	<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"com.mysql.jdbc.Driver"
		</property>
		<property name="URL">xmlConfiguration.get("jdbc/url")</property>
		<property name="user">xmlConfiguration.get("jdbc/username")</property>
		<property name="password">xmlConfiguration.get("jdbc/password")</ 
property>
	</component>
========================================================================

というふうに、
XmlConfiguration から取得した値を、
xaDataSource に注入するように記述しました。

configuration.xml の中身はこのようなものです。
========================================================================
<?xml version="1.0" encoding="UTF8"?>
<configuration>
	<jdbc>
		<url>jdbc:mysql://localhost:3306/DATABASE</url>
		<username>USER</username>
		<password>PASS</password>
	</jdbc>
</configuration>
========================================================================

いまのところ、このような形で満足しております。

アドバイスをありがとうございました。




Seasar-user メーリングリストの案内