Как встроить причал в динамический веб-проект с использованием jsp в IDE затмения - PullRequest
1 голос
/ 11 февраля 2011

Я использую встроенный причал для своих проектов Wicket без проблем, так как wicket не использует JSP.Пока я не столкнулся с задачей создания базового динамического веб-приложения с использованием встроенного сервера приложений Jetty.

Я знаю, что по умолчанию Jetty не поддерживает JSP.Я также знаю, что есть несколько других контейнеров сервлетов на выбор.Но для этой задачи я хотел бы показать, насколько мощная и простая веб-разработка использует Jetty, поскольку я с большим успехом использую ее для крупных проектов.

Я использую Eclipse Helios в качестве своей IDE и добавилследующие файлы в мой classpath

  • junit-4.8.1.jar
  • jetty-6.1.25.jar
  • jetty-management-6.1.25.jar
  • jetty-util-6.1.25.jar
  • log4j-1.2.14.jar
  • servlet-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 :: Вход в STDERR через org.mortbay.log.StdErLL ЗАПУСК ВСТРОЕННОГО СЕРВЕРА JETTY, НАЖМИТЕ ЛЮБОЙ КЛЮЧ, ЧТОБЫ ОСТАНОВИТЬ2011-02-11 09: 18: 13.000: ИНФОРМАЦИЯ :: jetty-6.1.25 2011-02-11 09: 18: 13.156: ПРЕДУПРЕЖДЕНИЕ :: ошибка jsp: java.lang.NoClassDefFoundError: javax / servlet / jsp / JspApplicationContext 2011-02-11 09: 18: 13.171: WARN :: fail org.mortbay.jetty.webapp.WebAppContext@76cbf7 {/, WebContent}: java.lang.NoClassDefFoundError: javax / servlet / jsp / JspApplicationContext 2011-02-11 09: 18: 13.171: WARN :: Ошибка запуска обработчиков java.lang.NoClassDefFoundErlet jrror:/ jsp / JspApplicationContext в org.apache.jasper.compiler.JspRuntimeContext. (JspRuntimeContext.java:103) в org.apache.jasper.servlet.JspServlet.init (JspServlet.java:134) на org.mortty.let.ServletHolder.initServlet (ServletHolder.java:440) по адресу org.mortbay.jetty.servlet.ServletHolder.doStart (ServletHolder.java:263) по адресу org.mortbay.component.AbstractLifeCycle.start (AbstractLava.50) или orb.mj..jetty.servlet.ServletHandler.initialize (ServletHandler.java:685) в org.mortbay.jetty.servlet.Context.startContext (Context.java:140) в org.mortbay.jetty.webapp.WebAppContext.stavaContext: 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.handler.HandlerWrapper.doStart (HandlerWrapper.java:130) в org.mortbay.jetty.Server.doStart (Server.java:2)на org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50) на com.pldt.embededserver.Start.main (Start.java:36) 2011-02-11 09: 18: 13.203: INFO :: Запущен SocketConnector@ 0.0.0.0: 8080

Надеюсь, вы, ребята, поможете мне с этим.Я чувствую себя настолько разочарованным (с учетом документации Jetty по этому поводу), что такая простая задача, как эта, оказывается очень запутанной и отнимает много времени из-за плохой документации, что даже самая простая из всех задач (как запустить веб-приложение с JSP)было бы очень тяжело, особенно для людей, которые хотят изучать Java и считают причал своим контейнером для сервлетов.

Заранее спасибо.

1 Ответ

3 голосов
/ 11 февраля 2011

Похоже, вы просто пропустили пару файлов jar.

Позвольте мне сказать, что ваши жалобы на документацию неуместны. Jetty прекрасно работает с JSP, и как автономный Jetty, так и плагин Jetty-Maven предназначены для автоматического включения поддержки JSP.

То, что вы решили сделать, это собрать свой собственный сервер, встроив Jetty, и вы не смогли включить необходимые jar-файлы, чтобы это работало. Встраивание Jetty - это расширенный вариант использования, и в документации предполагается, что вы знаете, что делаете.

Теперь, что касается проблемы, с которой вы столкнулись ...

Внутри дистрибутива Jetty есть каталог lib/.
Внутри этого каталога lib/ находится каталог jsp-2.1.
Вам нужно включить все jar-файлы из этого каталога в ваш путь к классам.
Вы, кажется, пропали без вести

  • 2,1-JSP-GlassFish-2.1.v20091210.jar
  • JSP-апи-2,1-GlassFish-2.1.v20091210.jar
  • муравей-1.6.5.jar
  • ядро-3.1.1.jar

(В Jetty 6.1.25 они могут быть немного другими версиями - я вытащил их из 6.1.26)

...