7

XML を使用せずに Java 構成の Spring MVC アプリケーションを作成しました。問題なくラップトップにアプリケーションをデプロイして起動できます。しかし、テストサーバー (tomcat 7) にアプリケーションをデプロイしようとするとすぐに、次のメッセージが表示されます。

HTTP Status 404 - The requested resource (/[application context]/) is not available.

Eclipse Maven プラグインを使用してアプリケーションを構築しています。web.xml なしでアプリケーションを展開することは可能ですか? そうでない場合、本当に必要な基本的な web.xml はどれですか?

Maven WAR プラグイン:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>${maven.war.plugin.version}</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

WebAppInitializer:

@Order(value = 1)
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        super.onStartup(servletContext);
    }

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { HibernateConfig.class, SecurityConfig.class, HibernateDaoConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebAppConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Filter[] getServletFilters() {
        return new Filter[]{};
    }
}

更新: catalina.out

Feb 3, 2014 4:18:32 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/[appname]] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak.
Feb 3, 2014 4:18:33 PM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/[appname]]
Feb 3, 2014 4:18:45 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive [appname].war
4

2 に答える 2

1

最新の Tomcat バージョンにアップグレードして、それが機能するかどうかを確認します (問題を特定するため)。古い Tocmat サーバーで新しい Spring 機能 (例: java config など) を使用するには、多くの問題があります。たとえば、http: //docs.spring.io/autorepo/docs/spring-framework/3.1.x/javadoc-api/org/springframework/web/WebApplicationInitializer.htmlを参照してください。

Tomcat での「/」へのマッピング

Apache Tomcat は内部の DefaultServlet を「/」にマップします。Tomcat バージョン <= 7.0.14 では、この >>サーブレット マッピングをプログラムでオーバーライドすることはできません。7.0.15 では、この問題が修正されています。"/" >>サーブレット マッピングのオーバーライドも、GlassFish 3.1 で正常にテストされています。

于 2014-08-11T15:22:16.433 に答える
1

それでも解決しない場合は、サーブレットのバージョンが原因である可能性があります。Servlet 3.x API は、WEB-INF フォルダー内に web.xml ファイルを配置する代わりに、Java クラスを作成することによって Java Web アプリケーションを構成できるようにする必要があります。

完全な例については、こちらを参照してください。

于 2014-03-07T13:21:41.403 に答える