2

Thomas Broyer が彼のマルチモジュール Maven アーキタイプを使用して GWT アプリケーション用に提案した構造に従って、新しいアプリケーションを開発しています。

サーバー モジュールには、Spring 3.1.1 と Spring Security 3.1.0 が含まれています。SignIn と GWT のホスト ページを提供するための Controller があります。このモジュールは、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を拡張)では同じ問題があります。

4

1 に答える 1

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

ご不便をおかけして申し訳ありません。

于 2012-09-20T11:47:34.903 に答える