[Seasar-user:19535] Re: [S2Config][ コンフィグ設定方法の質問]設定ファイル「app.properties」が、リクエスト毎に(大量に)オープンされてToo many open filesエラーが発生

Yasuo Higa [E-MAIL ADDRESS DELETED]
2010年 3月 23日 (火) 10:31:38 JST


ひがです。

> 前薗と申します。
> 
> 設定ファイル「app.properties」が、大量にオープンされ閉じずに残っている現象が発生しました。
> (Linuxのlsofコマンドで見ると、Tomcatのプロセスが、設定ファイルを大量に開いており、OSのファイルオープン数上限を超えてエラーになります。)
> 
> CoolDeploy状態で起動しており、初回画面表示時(例えばログイン時)に、
> 1回だけ、app.propertiesが読み込まれ、その内容が保持されるものと思っていましたが、
> 現状そのようになっておりません。
> 
SAStrutsではなく、S2Configの話ではないでしょうか。
一応タイトルを変えておきました。

S2Configのソースをデバッガで追うと原因がわかるのではないかと
思います。

> 以下が関連する設定です。
> 
> instance="singleton"にしたり、
> targetURIsを、「login.*」にしたりしましたが、
> 結果同様でした。
> 
> 対応方法について、アドバイス頂けると助かります。
> よろしくお願いします。
> 
> # 設定値自体の取得は問題ありません。ただ、ファイルオープン数が異常に多いことが問題です。
> # 設定内容の過不足があれば教えてください。
> 
> ■app.properties
> 
> # common.dir
> common.dir=/var/tmp/
> 
> 
> ■AppConfig.java
> 
> @Config(name = "app")
> public class AppConfig {
> 
> @ConfigKey(name = "common.dir", readOnly = true)
> public String dir;
> 	
> 
> ■configCustomize.dicon
> 
> <components>
> 	<component class="org.seasar.config.core.config.impl.ConfigPropertiesWriter"
> instance="prototype"/>
> 	<component class="org.seasar.config.core.config.impl.ConfigPropertiesReader"
> instance="prototype"/>
> </components>
> 
> 
> ■config.dicon
> 
> <components>
> 	<include path="s2config-core.dicon"/>
> 	<component class="org.seasar.config.core.container.impl.ConfigContainerImpl"
> instance="prototype">
> 		<property name="configName">"app"</property>
> 		<initMethod name="loadToBeans"/>
> 	</component>
> </components>
> 
> ■web.xml
> 
> <filter>
>     <filter-name>configFilter</filter-name>
>     <filter-class>org.seasar.config.extension.servlet.filter.ConfigFilter</filter-class>
>     <init-param>
>         <param-name>targetURIs</param-name>
>         <param-value>.*</param-value>
>     </init-param>
> </filter>
> 
> ■実際に設定を使用しているクラス
> 
> @Resource
> protected AppConfig appConfig;
> 
> @Execute(validator = false)
> public String hoge() throws Exception {
> 
> 	String path = appConfig.dir + fileName;
> 	
> ■環境
> -------------------------------------------------------------
> □Seasar
> s2-framework-2.4.40.jar
> sa-struts-1.0.4-sp7.jar
> 
> □Tomcat
> Server version: Apache Tomcat/6.0.24
> OS Name:        Linux
> OS Version:     2.6.18-164.el5
> Architecture:   i386
> JVM Version:    1.6.0_18-b07
> JVM Vendor:     Sun Microsystems Inc.
> 
> □Mysql
> mysql  Ver 14.14 Distrib 5.1.41
> -------------------------------------------------------------
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


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