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

前薗裕作 [E-MAIL ADDRESS DELETED]
2010年 3月 23日 (火) 03:16:27 JST


前薗と申します。

設定ファイル「app.properties」が、大量にオープンされ閉じずに残っている現象が発生しました。
(Linuxのlsofコマンドで見ると、Tomcatのプロセスが、設定ファイルを大量に開いており、OSのファイルオープン数上限を超えてエラーになります。)

CoolDeploy状態で起動しており、初回画面表示時(例えばログイン時)に、
1回だけ、app.propertiesが読み込まれ、その内容が保持されるものと思っていましたが、
現状そのようになっておりません。

以下が関連する設定です。

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 メーリングリストの案内