多模块GWT 2.4.0中的静态资源 - Spring 3.1.1应用程序

时间:2012-09-19 16:48:24

标签: spring gwt static resources overlays

我们正在开发一个新应用程序,遵循Thomas Broyer针对GWT应用程序提出的结构及其多模块maven原型。

在服务器模块中,我们包含了Spring 3.1.1和Spring Security 3.1.0。我们有一个Controller用于提供SignIn和GWT的主机页面。此模块使用jetty maven插件版本8.1.3.v20120416。在本单元中,我们将客户端模块配置为叠加层并添加了其资源:

        <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>

我们在web.xml中的配置将DispatcherServlet映射到/ pattern。

在运行带有jetty的服务器模块时,我们遇到了服务客户端模块中包含的静态内容的问题:运行,特别是在提供gwt的托管页面时,它请求

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

导致Not Found错误。

我知道如何处理本地资源(包含在webapp中):

registry.addResourceHandler( “/资源/ **”)addResourceLocations( “/资源/”);

但是app.nocache.js是其他叠加层中包含的资源。

我的问题是:如何告诉Spring不要处理另一个叠加层中包含的资源?我试过

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

在Spring java config(扩展WebMvcConfigurerAdapter)中遇到了同样的问题。

1 个答案:

答案 0 :(得分:2)

终于明白了。

问题只是一个Maven。我刚从父pom做了一个干净的安装,现在一切正常。

web.xml的最终配置是:

<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>

以及扩展WebMvcConfigurerAdapter的@Configuration类中Spring的最终配置:

@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();
}

很抱歉给您带来不便。