我们正在按照 Thomas Broyer 为 GWT 应用程序和他的多模块 maven 原型提出的结构开发一个新应用程序。
在服务器模块中,我们包含了 Spring 3.1.1 和 Spring Security 3.1.0。我们有一个控制器来提供登录和 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
导致 Not Found 错误。
我知道如何处理本地资源(包含在 webapp 中):
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
但 app.nocache.js 是包含在其他叠加层中的资源。
我的问题是:我怎么能告诉 Spring 不要处理另一个覆盖中包含的资源?我试过了
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
在 Spring java config(扩展 WebMvcConfigurerAdapter)中,但同样的问题。