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

标签 spring gwt static resources overlays

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

在服务器模块中,我们包含了 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 映射到/模式。

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

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

导致未找到错误。

我知道如何处理本地资源(包含在 web 应用程序中):

registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");

但是app.nocache.js是包含在其他覆盖层中的资源。

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

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

在Spring java配置(扩展WebMvcConfigurerAdapter)中但同样的问题。

最佳答案

终于明白了。

问题仅出在 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();
}

对于给您带来的不便,我们深表歉意。

关于spring - 多模块 GWT 2.4.0 - Spring 3.1.1 应用程序中的静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12499255/

相关文章:

java - 无法确定 : java. util.List 的类型,位于表 : file_post, 的列 : [org. hibernate.mapping.Column(file)]

java - 如何配置 Spring-WS 以使用 JAXB Marshaller?

java - Spring + GWT 项目 - 对每个用户操作执行处理程序

java - intellij GWT调试配置

java - GWT 持久 URL

php - 从字符串访问类常量和静态方法

c++ - 如何在编译时检查内联函数的参数是否已知?

java - 使用 Spring 3 配置 PostgreSQL 数据库(故障转移机制)

AJAX 在 Spring MVC 中返回 404

c - "static char"与 C 中的 "char"