Создание ApplicationContext более одного раза (в Struts + проект Spring) - PullRequest
0 голосов
/ 01 мая 2020

У меня есть устаревшая система, которая находится в стойках 1 и пружине 3, теперь мне нужно обновить версию пружины 3 до 5. Я сделал почти все, и все работает нормально. есть только проблема, с которой я сталкиваюсь при запуске сервера Tomcat.

Давайте посмотрим с кодом: - Это веб-конфигурация. xml ранее,

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <servlet>
        <servlet-name>context</servlet-name>
        <servlet-class>
            org.springframework.web.context.ContextLoaderServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet> 

После обновления версии : -

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

  <servlet>
        <servlet-name>servlet</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>       
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>       
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>  

    <servlet-mapping>
        <servlet-name>servlet</servlet-name>
        <url-pattern>*.do</url-pattern>
   </servlet-mapping>

Теперь, когда я запускаю свой сервер Tomcat, среда applicationContext создается два раза. один для "org. apache .struts.action.ActionServlet" и второй для этого "org.springframework.web.context.ContextLoaderListener"

check log:

INFO: TLD skipped. URI: http://struts.apache.org/tags-nested is already defined
May 01, 2020 11:14:09 AM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
May 01, 2020 11:14:09 AM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
May 01, 2020 11:14:09 AM org.apache.catalina.core.ApplicationContext log

// First time
INFO: Initializing Spring root WebApplicationContext  


log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
Calling the CacheManager Constructor...
May 01, 2020 11:14:17 AM org.apache.catalina.core.ApplicationContext log
// Second time
INFO: Initializing WebApplicationContext for Struts ActionServlet 'servlet', module ''  

May 01, 2020 11:14:19 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-9090"]
May 01, 2020 11:14:19 AM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-9009"]
May 01, 2020 11:14:19 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 18889 ms

Предложить мне как это исправить.

...