eastywest
@eastywest
Backend developer

Как правильно создать war для запуска встроенного Jetty сервера?

С помощью IntelliJ IDEA пытаюсь создать war файл для запуска с помощью Jetty без использования сервлетов.

Код такой:
package org.example;

import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerList;

public class HelloWorld {

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

        HandlerList handlers = new HandlerList();
        handlers.setHandlers(new Handler[] {new SimpleHandler()});

        server.setHandler(handlers);

        server.start();
        server.join();
    }
}


При непосредственном запуске из консоли - mvn clean compile exec:java, все работает прекрасно.
Но, если создать war файл из IDE, то при его деплое в браузере отображается содержимое этого файла - папки WEB-INF и META-INF.

В чем может быть причина?
  • Вопрос задан
  • 3770 просмотров
Решения вопроса 1
anyd3v
@anyd3v
Вы запускаете приложение (именно java приложение) и устанавливаете ему хендлер, который видимо и отрабатывается при получении запросов. В случае же деплоя в контейнер ваш код по установке хендлера не будет выполнятся и соответственно вы и получаете текущее поведение. У вас 2 пути:
1. запускать ваше приложение как приложение java (java -jar ...)
2. в конфиге сервера прописывать ваш хендлер
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
eastywest
@eastywest Автор вопроса
Backend developer
В итоге остановился на способе запуска java -jar

Для этого создаю один jar файл со всеми библиотеками
Ответ написан
Комментировать
@gurinderu
java developer
То что вы написали нельзя запустить в контейнере. По сути вы руками создаете контеинер, зачем вам вообще он нужен?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы