Day: December 1, 2007

JNDIにてDataSourceを取得する設定(Spring1.2.1)

Springにて,HibernateのDataSourceをJNDIで取得する方法を調査してみた.JNDIによるDataSourceの設定Tomcatでのセキュリティ設定Servletコンテキストの設定デプロイと動作確認 JNDIによるDataSourceの設定 以下に本頁のサンプルのbeans.xmlを示す. id値sampleDataSourceがポイントである. classをJndiObjectFactoryBeanとし,あとはJNDI名を指定するだけである. 本頁のポイントは以上である. あとは以下の各要素を設定すると動作確認ができる.Springを使用したサーブレットのサンプル作成Tomcatでのセキュリティ設定DataSourceの設定を含むServletコンテキストの設定デプロイと動作確認これらのトピックはそれぞれ別頁に記述されており,本頁のサンプルではそれらを総合して動作させる. Tomcatでのセキュリティ設定 本頁のサンプルではシステムプロパティや設定ファイルを読み込むので,PermissionErrorが発生するかもしれない. ここでの主題ではないので,ざっくりと以下のような設定を行う.grant codeBase “file:/WEBアプリケーションのパス/-” {permission java.security.AllPermission;};これはザルな設定なので,重要な環境では,必要最小限の許可のみを行うようにする. 設定ファイルは,Debianな環境では/etc/tomcat4/policy.d/04webapps.policyになると思う. Servletコンテキストの設定 デプロイと動作確認 まず,warファイルを作成する.$ ant warできあがるspringsample.warを,先でservlet.xmlで設定した${webapp.docbase}に配置する. … More JNDIにてDataSourceを取得する設定(Spring1.2.1)

BeanFactoryPostProcessorとPropertyPlaceholderConfigurer(Spring1.2.1)

BeanFactoryPostProcessorは,BeanFactoryをインスタンス化した後に,そのインスタンスを引数にとり,何らかの処理をするものである.アプリケーションの起動後の初期化パターンとして使えることがあると思う.BeanFactoryPostProcessorの一つ,PropertyPlaceholderConfigurerは,設定ファイルであるbeans.xmlでの設定値を更に外部プロパティファイルへと移動することが可能な機能を持つらしいので,BeanFacotryPostProcesssorの挙動確認を兼ねて試してみた.BeanFactoryPostProcessorの組み込みPropertyPlaceholderConfigurerサンプルドライバ BeanFactoryPostProcessorの組み込み BeanFactoryPostProcessorは,インタフェースであり,以下のメソッドを宣言している.void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)ここで,アプリケーションにBeanFactoryPostProcessorを組み込むというのは,以下の作業を指す.BeanFactoryPostProcessor具象クラスの作成. あるいはSpringFrameworkにある上記具象クラスの選定. 本頁のサンプルでは,あるいはSpringFrameworkにあるPropertyPlaceholderConfigurerを使用する. この詳細は後述.BeanFactoryクラスの生成.上で作成あるいは生成したBeanFactoryPostProcessorクラスの生成.BeanFactoryPostProcessorのpostProcessBeanFactoryを呼び出す. 引数は先に生成したBeanFactoryオブジェクトである.postProcessBeanFactoryメソッド内で何をするかは,各アプリケーション毎の要件による. で,上の手作業でハードコードする手順だと,BeanFactoryPostProcessorはBeanFactory生成後処理の,統一的な仕組みを提供するということ以外にあまり意味はない. ところが,BeanFactoryを拡張したApplicationContextは,上記の作業のいくつかを自動的に行ってくれる. すなわち読み込んだbeans.xmlにBeanFactoryPostProcessorの具象クラスがあればそれを検出,生成し,該当beans.xmlを読み込んだBeanFactoryを引数としてpostProcessBeanFactoryを実行してくれる. BeanFactoryPostProcessor自身もbeans.xmlに記述することで,柔軟に初期化処理のモジュール化やDIが可能となる. PropertyPlaceholderConfigurer PropertyPlaceholderConfigurerは,beans.xmlに設定シンボルを記述し,そのシンボルに別プロパティファイルのプロパティ値を埋め込む. 以下はPropertyPlaceholderConfigurerを使用する本頁のサンプルのbeans.xmlである. ${…}で記述された部分は,今までならそのまま文字列としてbeanにsetされていたが,PropertyPlaceholderConfigurerの働きにより,プロパティファイルの値に置き換えられる. 例えば,プロパティファイルにsampleBean.value1=HOGEとあれば,beans.xmlの${sampleBean.value1}という記述はHOGEと置き換えられて処理される. この置き換えのタイミングは,PropertyPlaceholderConfigurer#postProcessBeanFactory呼び出し時である. サンプルドライバ … More BeanFactoryPostProcessorとPropertyPlaceholderConfigurer(Spring1.2.1)