1

wicket は JSP を使用しないため、Wicket プロジェクトに埋め込み桟橋を問題なく使用しています。組み込みの jetty アプリケーション サーバーを使用して基本的な動的 Web アプリケーションを作成するタスクに出くわすまでは。

デフォルトでは、jetty は JSP をサポートしていません。また、他にも選択できるサーブレット コンテナーがいくつかあることも認識しています。しかし、このタスクでは、Jetty を使用して大規模なプロジェクトで大きな成功を収めているため、強力でシンプルな Web 開発が Jetty をどのように使用しているかを示したいと思います。

IDE として Eclipse Helios を使用しており、次の jar をクラスパスに追加しました

  • junit-4.8.1.jar
  • jetty-6.1.25.jar
  • 桟橋管理-6.1.25.jar
  • jetty-util-6.1.25.jar
  • log4j-1.2.14.jar
  • サーブレット-api-2.5-6.1.4.jar
  • jsp-2.1-6.1.5.jar
  • javax.servlet.jar

ここに、埋め込まれた桟橋を開始するために使用するコードがあります

import org.mortbay.jetty.Connector;

import org.mortbay.jetty.Server;

import org.mortbay.jetty.bio.SocketConnector;

import org.mortbay.jetty.webapp.WebAppContext;

public class Start {

    public static void main(String[] args) throws Exception {
        Server server = new Server();
        SocketConnector connector = new SocketConnector();

        // Set some timeout options to make debugging easier.
        connector.setMaxIdleTime(1000 * 60 * 60);
        connector.setSoLingerTime(-1);
        connector.setPort(8080);
        server.setConnectors(new Connector[] { connector });

        WebAppContext bb = new WebAppContext();
        bb.setServer(server);
        bb.setContextPath("/");
        bb.setWar("WebContent");

        server.addHandler(bb);

        try {
            System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP");
            server.start();
            System.in.read();
            System.out.println(">>> STOPPING EMBEDDED JETTY SERVER"); 
            // while (System.in.available() == 0) {
            //   Thread.sleep(5000);
            // }
            server.stop();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(100);
        }
    }
}

そして、以下はエラーメッセージです

2011-02-11 09:18:12.953:INFO:: org.mortbay.log.StdErrLog 経由で STDERR にログを記録しています 組み込みの JETTY サーバーを開始し、任意のキーを押して停止します 2011-02-11 09:18:13.000:INFO::jetty -6.1.25 2011-02-11 09:18:13.156:WARN::失敗した jsp: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext 2011-02-11 09:18:13.171:WARN::失敗した組織.mortbay.jetty.webapp.WebAppContext@76cbf7{/,WebContent}: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext 2011-02-11 09:18:13.171:WARN::エラー開始ハンドラ java.lang. NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext at org.apache.jasper.compiler.JspRuntimeContext.(JspRuntimeContext.java:103) at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:134) at org.mortbay org.mortbay の .jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)。jetty.servlet.ServletHolder.doStart(ServletHolder.java:263) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) org.mortbay.jetty.servlet.Context.startContext(Context.java:140) で org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272) で org.mortbay.jetty.handler.ContextHandler.doStart で(ContextHandler.java:517) org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489) で org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) で org.mortbay.jetty. org.mortbay.jetty.Server.doStart(Server.java:224) の handler.HandlerWrapper.doStart(HandlerWrapper.java:130) org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) com.pldt.embededserver.Start.main (Start.java:36) 2011-02-11 09:18:13.203:INFO::Started SocketConnector@0.0.0.0:8080 で

皆さんがこれで私を助けてくれることを願っています。私はとてもがっかりしています (これに関する jetty のドキュメントに) このような非常に単純なタスクは、すべてのタスクの中で最も単純なタスク (JSP を使用して Web アプリケーションを実行する方法) でさえも貧弱なドキュメントのために非常に混乱し、時間がかかることが判明しました。 Java を勉強したい人や、jetty をサーブレット コンテナーと考え​​ている人にとっては、特に難しいでしょう。

前もって感謝します。

4

1 に答える 1

3

いくつかの jar ファイルが不足しているようです。

ただし、ドキュメンテーションに関するあなたの不満は的外れだと思います。Jetty は JSP で正常に動作し、スタンドアロンの Jetty と Jetty-Maven-plugin の両方が自動的に JSP サポートを含めるように設計されています。

あなたが選択したのは、Jetty を埋め込んで独自のサーバーを構築することであり、それを機能させるために必要な jar ファイルを含めることができませんでした。
Jetty の埋め込みは高度なユースケースであり、ドキュメントは、自分が何をしているのかを理解していることを前提としています。

さて、あなたが遭遇した問題については...

Jetty ディストリビューション内にはlib/ディレクトリがあります。
そのディレクトリ内にlib/ディレクトリがありjsp-2.1ます。
そのディレクトリのすべての jar ファイルをクラスパスに含める必要があります。
あなたが行方不明のようです

  • jsp-2.1-glassfish-2.1.v20091210.jar
  • jsp-api-2.1-glassfish-2.1.v20091210.jar
  • ant-1.6.5.jar
  • コア-3.1.1.jar

(Jetty 6.1.25 ではバージョンが若干異なる可能性があります。これらは 6.1.26 か​​ら取得しました)

于 2011-02-11T04:23:20.973 に答える