2012-09-19 6 views
1

Nous développons une nouvelle application suivant la structure proposée par Thomas Broyer pour les applications GWT avec ses archétypes multimodules Maven.Ressources statiques en multimodule GWT 2.4.0 - Application Spring 3.1.1

Dans le module serveur, nous avons inclus Spring 3.1.1 et Spring Security 3.1.0. Nous avons un contrôleur pour fournir les pages d'hôtes SignIn et GWT. Ce module utilise jetty maven plugin version 8.1.3.v20120416. Dans ce module, nous avons configuré le module client comme une superposition et a ajouté ses ressources aussi:

 <plugin> 
      <groupId>org.mortbay.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <configuration> 
      <scanIntervalSeconds>1</scanIntervalSeconds> 
      <webApp> 
       <baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection"> 
       <resourcesAsCSV>src/main/webapp,${basedir}/../accounts-ui-client-desktop/target/accounts-ui-client-desktop-${project.version}/</resourcesAsCSV> 
       </baseResource> 
       <extraClasspath>${basedir}/../accounts-ui-shared/target/classes/</extraClasspath> 
       <jettyEnvXml>${basedir}/src/main/resources/jetty-web.xml</jettyEnvXml> 
      </webApp> 
      <systemProperties> 
       <systemProperty> 
        <name>java.util.logging.config.file</name> 
        <value>${basedir}/src/main/resources/logging.properties</value> 
       </systemProperty>     
      </systemProperties> 
      </configuration> 
     </plugin> 

Notre config dans web.xml mappe le DispatcherServlet à/modèle.

Nous avons des problèmes pour servir le contenu statique contenue dans le module client lors de l'exécution du module de serveur avec jetée: course, en particulier, quand est servi la page hébergée du GWT, il demande

http://localhost:8080/app/app.nocache.js

résultant dans une erreur non trouvée.

Je sais comment gérer cela pour une ressource locale (contenue dans webapp):

registry.addResourceHandler ("/ ressources/**") addResourceLocations ("/ Ressources /");.

mais app.nocache.js est une ressource contenue dans une autre superposition.

Ma question est: comment puis-je dire à Spring de ne pas gérer cette ressource contenue dans un autre overlay ?. Je l'ai essayé avec

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

dans la configuration java Spring (extension WebMvcConfigurerAdapter), mais le même problème.

Répondre

1

Enfin obtenu.

Le problème était uniquement celui de Maven. Je viens de faire une installation propre du pom parent et tout fonctionne maintenant.

La configuration finale pour web.xml est:

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextClass</param-name> 
     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
    </init-param> 
    <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>/</url-pattern> 
</servlet-mapping> 

et la configuration finale pour le printemps dans une classe de @Configuration extension WebMvcConfigurerAdapter:

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/favicon.ico").addResourceLocations("/favicon.ico"); 
    registry.addResourceHandler("/app/**").addResourceLocations("/app/"); 
} 

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

Désolé pour les inconvénients.

Questions connexes