Миграция с Jetty 6 на Jetty 8 - PullRequest
       11

Миграция с Jetty 6 на Jetty 8

8 голосов
/ 14 февраля 2012

Я использую jetty6 в простом приложении в качестве встроенного контейнера сервлета.Я решил обновить его до Jetty 8. В Jetty 6 было довольно просто запустить сервер:

Server server = new Server(8080);
Context context = new Context(server, "/", Context.SESSIONS);
context.addServlet(MyServlet.class, "/communication-service");
server.start();

, но он не работает в Jetty8.К сожалению, я не могу найти простой пример для этой версии.Невозможно создать экземпляр Context с ошибкой

an enclosing instance that contains
    org.eclipse.jetty.server.handler.ContextHandler.Context is required

, потому что теперь он является внутренним классом и также не имеет такого конструктора.

Большинство примеров относятся к причалам 6 и 7. Не могли бы вы привести простой пример?как запустить сервлет на пристани 8?

Ответы [ 2 ]

13 голосов
/ 17 февраля 2012

Это Jetty 8, эквивалентный вашему коду.Это все так же просто, как и раньше, однако API немного изменился.

Если это не работает для вас, то у вас, вероятно, есть проблема с classpath - Jetty 8 разделен на множество независимых jarфайлы, и вам понадобится несколько из них.По крайней мере, вам нужно:

  • Jetty-продолжение
  • Jetty-http
  • Jetty-IO
  • Jetty-Security
  • jetty-server
  • jetty-servlet
  • jetty-util
  • servlet-api

Если у вас есть эти банки, то этот коддолжно работать нормально:

package test;

import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;

public class Jetty8Server {
    public static class MyServlet extends HttpServlet {
        protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
            response.setContentType("text/plain");
            response.getWriter().write(getClass().getName() + " - OK");
        }
    }
    public static void main(String[] args) throws Exception {
        Server server = new Server(8080);
        ServletContextHandler handler = new ServletContextHandler(ServletContextHandler.SESSIONS);
        handler.setContextPath("/"); // technically not required, as "/" is the default
        handler.addServlet(MyServlet.class, "/communication-service");
        server.setHandler(handler);
        server.start();
    }
}
1 голос
/ 14 февраля 2012

Причал в настоящее время является частью Eclipse. Документация здесь предназначена для Jetty 7, но утверждает, что она должна работать для Jetty 8. В конце страницы есть пример использования сервлетов.

...