Начало работы со встроенной Jetty - PullRequest
2 голосов
/ 08 декабря 2010

Я только начал со встроенной пристани. Я застрял в некоторых сообщениях об ошибках. Это простой и понятный код из нескольких строк, который я нашел в сети и хотел проверить.

 import org.jaxen.Context;
 import org.mortbay.jetty.Server;
 import org.mortbay.jetty.servlet.ServletHolder;

 public class Main {

    public static void main(String[] args) throws Exception {

        ServletHolder sh = new ServletHolder(ServletContainer.class);
        sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
        sh.setInitParameter("com.sun.jersey.config.property.packages", "jerseyplusjetty");
        Server server = new Server(80);
        ServletContextHandler sch = new ServletContextHandler(server, "/");
        sch.addServlet(sh, "/*");
        server.start();
        server.join();

    }
}

У меня есть все банки для причалов на пути сборки Java. Но я продолжал получать ошибки: конструктор ServletHolder (Class) не определен, конструктор Server (int) не определен, ServletContextHandler не может быть преобразован в тип. Если я удалю параметр внутри ServletHolder и Server, он перестанет жаловаться. например если у меня есть: ServletHolder sh = новый ServletHolder (); Серверный сервер = новый сервер (); Но это не правильно. Я прочитал документы Jetty и класс ServletHolder может принимать параметры. Я что-то здесь упускаю?

Ответы [ 2 ]

4 голосов
/ 24 мая 2012

Только к вашему сведению на встроенной Jetty в целом ... Я создал проект github, который я смиренно отправляю, может покрыть большинство проблем встроенной пристани, которые продолжают появляться.

У меня есть примеры для AbstractHandlers, Сервлетов, Сервлетов Джерси, статических файлов, веб-приложений и чего нет. Все еще работаю над RoR и Sinatra, но доберусь туда.

Подробнее см. https://github.com/ZenGirl/EmbeddedJettyRepository. Кто хочет внести свой вклад, просто спросите.

1 голос
/ 13 февраля 2011

Версия ServletHolder, которую я имею, принимает String или сервлет в конструкторе. Так что вместо того, чтобы делать

new ServletHolder(ServletContainer.class) вы должны сделать new ServletHolder(ServletContainer.class.getCanonicalName()) или new ServletHolder(new ServletContainer()).

ServletContainer - странное имя для сервлета, убедитесь, что это действительно сервлет.

Также имейте в виду, что существует множество разных версий Jetty (вы используете старую, потому что в новой все классы находятся в пакете org.eclipse.jetty), и пример кода легко подобрать это относится к другой версии, которая у вас есть. Я получил бы причал 7.2.2 от maven и использовал пример кода здесь .

...