2

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は最初の起動時にデータソースを見つけるため、確実に定義されています)。

4

3 に答える 3

3

Tomcatのsrc/main / webapp / META-INFの下にcontext.xmlファイルがあります:[...]

私のserver.xmlも(ホストとエンジンの下で)宣言します:

つまり、Webアプリを2回デプロイしました。何か違うことを期待していましたか?

server.xmlから削除<Context>します:それはそこに属していません。次に、Webアプリは1回だけロードする必要があります。

于 2012-10-15T12:12:31.287 に答える
1

私は戦争と爆発戦争をTomcatサーバーにデプロイしました。そのため、2つのアプリケーションコンテキストをロードし、そのうちの1つを削除すると問題が解決しました。

于 2013-03-19T16:53:27.763 に答える
0

これを防ぐには、タグにautoDeploy =” false”とdeployOnStartup =” false”を設定する必要があります。

<Host name="localhost" appBase="webapps" unpackWARs="true"
  autoDeploy="false" deployOnStartup="false">
    <Context path="" docBase="ExampleApp"></Context>

    <!-- Further settings for localhost -->
</Host>
于 2020-02-18T06:03:33.420 に答える