2017-07-27 5 views
1

Project Directory Nous travaillons sur le projet Spring MVC. Nous voulons initialiser tous les haricots au moment du déploiement de l'EAR. À la suite de notre fichier web.xml:Les haricots de printemps sont en cours d'initialisation deux fois dans l'application Spring Web

<servlet> 
    <servlet-name>Spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>Spring</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 


    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/Spring-servlet.xml</param-value> 
    </context-param> 

    <listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Ci-dessous notre fichier de configuration Spring:

<context:component-scan base-package="com"></context:component-scan> 
<context:annotation-config></context:annotation-config> 
<mvc:annotation-driven></mvc:annotation-driven> 

<!-- Switch on the Caching --> 
<cache:annotation-driven /> 

<!-- Do the component scan path --> 
<!-- <context:component-scan base-package="caching" /> --> 
<bean id="ehcache" 
    class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean" 
    p:configLocation="WEB-INF/ehcache.xml" p:shared="true" /> <!-- Why changed to true? https://stackoverflow.com/a/16370326 --> 

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" 
    p:cacheManager-ref="ehcache" /> 

<!-- creating datasource --> 
<bean id="dataSourceForFilters" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.mariadb.jdbc.Driver" /> 
    <property name="url" value="jdbc:mariadb://ip:3306/demo" /> 
    <property name="username" value="remote" /> 
    <property name="password" value="password" /> 
</bean> 
<bean id="dataSourceForData" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:/misoracle"></property> 
</bean> 

<!-- creating jdbctemplate and injecting datasource into it --> 
<bean id="jdbcTemplateForFilters" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="dataSourceForFilters"></property> 
</bean> 
<bean id="jdbcTemplateForData" class="org.springframework.jdbc.core.JdbcTemplate"> 
    <property name="dataSource" ref="dataSourceForData"></property> 
</bean> 
<!-- end --> 

<bean id="applicationContextProvider" class="com.providers.ApplicationContextProvider"></bean> 

Nous utilisons des annotations de composants (@ Controller, @ service, @ dépôt) pour définir les haricots. Lors du déploiement du fichier EAR dans le serveur, les beans s'initialisent correctement selon nos besoins.

Lorsque nous tapons sur l'application avec un modèle d'URL comme 'IP: port/context-root/rest', les beans Spring s'initialisent à nouveau. Pourquoi les haricots sont à nouveau en cours d'initialisation, est-ce que quelqu'un peut vous aider?

+0

questions visant à obtenir l'aide de débogage (« pourquoi pas ce code fonctionne? ») Doit comprendre le comportement souhaité, un problème spécifique ou d'une erreur et la plus courte code nécessaire pour le reproduire dans la question elle-même. Les questions sans énoncé de problème clair ne sont pas utiles aux autres lecteurs. Voir: Comment créer un exemple minimal, complet et vérifiable. –

+0

Partagez votre spring-servlet.xml. Et partagez également votre répertoire de projet et les journaux d'erreurs. – KayV

+0

@KayV edit done – Yogendra123

Répondre

1

Votre cartographie web.xml devrait ressembler à ceci:

<servlet> 
    <servlet-name>Spring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value></param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Spring</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/Spring-servlet.xml</param-value> 
</context-param> 
+0

Merci pour votre réponse. Pourriez-vous expliquer comment cela fonctionnait plus tôt et comment cela fonctionne maintenant? – Yogendra123