EclipseでTomcat7を使用してStruts3でWebアプリケーションを作成しています。Tomcatを起動すると、コンテキストが2回ロードされているようです(ログファイルには、applicationContext.xmlが2回読み取られていることが示されています)。
Tomcatのsrc/main / webapp / META-INFの下にcontext.xmlファイルがあります:
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/dbname" docBase="dbname" reloadable="true" debug="1">
<Resource name="jdbc/dbname"
username="dbusername"
password="dbpassword"
auth="Container"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbname"
type="javax.sql.DataSource"
initialSize="5"
maxActive="120"
maxIdle="5"
maxWait="5000"
poolPreparedStatements="true"
validationQuery="select 1" />
</Context>
私のserver.xmlも(ホストとエンジンの下で)宣言します:
<Context docBase="dbname" path="/dbname" source="org.eclipse.jst.jee.server:dbname"/>
これがないと、Tomcatはアプリケーションを起動しません。
web.xmlで、次のようにcontextConfigLocationを宣言します。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
applicationContext.xmlはsrc/main / resources/springの下にあります
これらは、リロードを示すログファイルの2行です。
2012-10-14 00:17:08,191 INFO [org.springframework.web.servlet.DispatcherServlet] - FrameworkServlet 'name': initialization completed in 438 ms
2012-10-14 00:17:10,972 INFO [org.springframework.web.context.support.XmlWebApplicationContext] - Closing WebApplicationContext for namespace 'name-servlet': startup date [Sun Oct 14 00:17:07 CEST 2012]; parent: Root WebApplicationContext
問題は、2回目のリロードで、Springがデータソースを見つけられないために失敗することです(ただし、Springは最初の起動時にデータソースを見つけるため、確実に定義されています)。