2015-12-12 3 views
1

У меня есть рабочее веб-приложение, которое я построил, успешно развернутый в Heroku, и работает хорошо. Тем не менее, я пытаюсь настроить конфигурацию сервера/сервлета, и именно тогда я понял, что не знаю, что на самом деле делает мое приложение.Настройка сервера Jetty с сервлетом Glassfish

Для стеклянной рыбы, this is the config that's needed.

Однако, для Jetty, this is the config that's needed.

я понял, что я понятия не имею, какой из выше моего приложения на самом деле, используя, таким образом, я начал копаться в моем коде и нашел следующее:

Основной метод вызывается с помощью Heroku является инстанцировании следующий сервер Jetty/webappcontext.

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.webapp.WebAppContext; 

Однако мола конфигурации, кажется, полагается на ряд файлов (например, и т.д./jetty.xml, папки WebApps или военных файлов), которые мой проект не имеет вообще.

Кроме того, мой файл web.xml определяет следующий сервлет:

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

Тот факт, что мое приложение, определяющее сервер Jetty, но Glassfish сервлет касалось меня совсем немного. В попытке унифицировать все вокруг Jetty, я попытался добавить причал сервлет моих зависимости pom.xml и изменил выше:

<servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class> 

Однако это изменение вызвало мое заявление, чтобы сломаться. Он все еще успешно компилируется, и все мои тесты на основе тестов на основе jerset-тестов все еще успешно выполняются локально. Но когда я фактически запускаю сервер, ни один из маршрутов не работает.

Некоторые вопросы:

  1. Является ли это плохо рекомендуется использовать сервер Jetty вместе с Glassfish сервлет (контейнер)?

  2. Если да, какой сервлет (контейнер?) Следует заменить Glassfish, и что мне нужно сделать, чтобы заставить новый сервлет серфинга работать?

  3. Если нет, какую конфигурацию я должен использовать для текущей настройки? Должен ли я использовать Glassfish config или Jersey config?

Я провел много часов, пытаясь прочитать с помощью различных документаций, учебники и стек переполнения темы, но все они либо принять предшествующее знание о сервлетов, JavaEE и связанные с ними темы (ни один из которых я знаком с), или они ориентированы на создание новых приложений hello-world с нуля (в отличие от переноса существующего рабочего приложения, что я и пытаюсь сделать). Любые объяснения, которые вы могли бы дать, не предполагая предварительных знаний, относящихся к контексту, описанному выше, были бы высоко оценены.


Edit: Я думаю, что я начинаю теперь понимать, что сервлет код, который генерирует ответ на запрос, и ServletContainer является то, что обеспечивает инфраструктуру для сервлетов. Мне никогда не приходилось иметь дело с Сервлетами непосредственно в создании моего веб-приложения.Вот пример того, что маршрут выглядит в моем приложении:

@Path(Ping.REST_PREFIX) 
public class Ping { 
    static final String REST_PREFIX = "/ping"; 

    @GET 
    public static Response get(@DefaultValue("getPing") @QueryParam("param") String param) { 
     return Response.ok().entity(param).build(); 
    } 

    @Path("/pong") 
    @GET 
    public static Response getPong(@DefaultValue("getPong") @QueryParam("param") String param) { 
     return Response.ok().entity(param).build(); 
    } 
} 

Как порт код, как выше в Jetty ServletContainer, без переписывания обширных разделов моего приложения?

ответ

1

Вы не используете «Контейнер сервлетов из морской рыбы», вы используете «Контейнер сервлетов Джерси».

Джерси - это проект, который вы используете.

Glassfish была зонтичной организацией (иногда называемой кузницей), которая помогает управлять/поддерживать проект Джерси (наряду с десятками других проектов).

Difference com.sun.jersey and org.glassfish.jersey

проект Джерси теперь можно найти в java.net организации.

https://jersey.java.net/

Смежные вопросы