1

web.xml を使用せずに Wicket を構成する方法が必要です。

私はいくつかのブログ記事を試しましたが、まだ問題があります。

例えば:

https://cwiki.apache.org/confluence/display/WICKET/Wicket+without+web.xml+%28embedded+Jetty%29

http://dev-loki.blogspot.de/2008/05/embedded-jetty-wicketfilter-webxml.html

有効な解決策が見つかりません。

ホームページが 1 つだけの単純なプロジェクトを作成し、上記のリンクの手順に従っても成功しませんでした。

jetty を試してみたところ、HTTP ERROR 404 が発生しました。web.xml のように動作するコードを示します。これは、春ベースのソリューションです。

public class WicketApplicationInitializer implements WebApplicationInitializer {

@Override
public void onStartup(ServletContext servletContext) throws ServletException {

    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(SpringConfig.class);

    servletContext.addListener(new ContextLoaderListener(ctx));

    WicketFilter filter = new WicketFilter(new WicketApplication());
    filter.setFilterPath("");

    servletContext.addFilter("wicketFilter", filter).addMappingForUrlPatterns(null, false, "/*");

    servletContext.addServlet("/*", DefaultServlet.class);

}

}

これでうまくいくはずですが、サーバーに認識されませんでした。シンプルで、通常の web.xml の手順と同じように見えますが、機能しません。

HomePage へのマウントは 1 つだけです。

mountPage("/testing", HomePage.class);

アクセスしようとしています:

https://localhost:8443/testing

結果は次のとおりです。

HTTP ERROR 404 Problem accessing /testing. Reason:  Not Found

誰でも助けることができますか?

多分誰かが醜い web.xml なしで最小限の作業プロジェクトを持っていますか? またはいくつかのアドバイス。

4

2 に答える 2

1

次のコードは、web.xml なしでウィケットをサポートする桟橋を開始します。

import org.apache.wicket.protocol.http.WicketFilter;
import org.apache.wicket.protocol.http.WicketServlet;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.bio.SocketConnector;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;


public class Main {
    public static void main(String[] args) {
        // Object that holds, and configures the WicketServlet.
        ServletHolder servletHolder =
                new ServletHolder(new WicketServlet());
        servletHolder.setInitParameter(
                "applicationClassName",
                "com.javaeenotes.ExampleWicketApplication");
        servletHolder.setInitParameter(
                WicketFilter.FILTER_MAPPING_PARAM, "/*");
        servletHolder.setInitOrder(1);

        // Web context configuration.
        WebAppContext context = new WebAppContext();
        context.addServlet(servletHolder, "/*");
        context.setResourceBase("."); // Web root directory.

        // The HTTP-server on port 8080.
        Server server = new Server();
        SocketConnector connector = new SocketConnector();
        connector.setPort(8080);
        server.setConnectors(new Connector[]{connector});
        server.setHandler(context);

        try {
            // Start HTTP-server.
            server.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

これはhttp://javaeenotes.blogspot.de/2011/12/running-wicket-on-jetty.htmlによる解決策です

前に言ったように、これは今の私には合いませんが、トピックには合っています。これはウィケット アプリケーションを開始でき、web.xml 構成を必要としない桟橋です。

だから、私はこの答えを受け入れたものとしてマークし、改札処理の春の方法について別の質問を始めるかもしれません...とにかくありがとう

于 2013-07-26T15:04:54.207 に答える
0

このように web.xml なしで jetty を開始するコードを見たことがあります。

    import org.mortbay.jetty.Connector;
    import org.mortbay.jetty.Server;
    import org.mortbay.jetty.nio.SelectChannelConnector;
    import org.mortbay.jetty.webapp.WebAppContext;

    Server server = new Server();
    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(8000); //or any other port you need
    server.setConnectors(new Connector[]
    { connector });

    WebAppContext web = new WebAppContext();
    web.setContextPath("/"); //assuming you want / as a context like your sample
    web.setWar("src/webapp"); //check that it matches your webapp directory.
    server.addHandler(web);
    server.start();
    server.join();

このようにして、Jetty を使用すると仮定して、コンテキストに必要な数の war を追加できます。フィルターやその他のマッピングを制御するために、WebAppContext オブジェクト (web) にさらに要素を追加できます。

于 2013-07-26T09:35:51.720 に答える