Этот проект и основной исходный код доступны на GitHub по адресу https://github.com/todylu/example_executable_war_with_jetty. В исходном проекте использовался Jetty 7; в данном случае были изменены версия JDK и Jetty, а также решены вопросы конфликтов библиотек.
Целью данного проекта является создание исполняемого WAR-пакета на основе Jetty с помощью Maven.
Сгенерированный WAR-пакет может быть запущен как в традиционной директории Tomcat, так и в других средах.
===========================================================
На платформе Windows при выполнении команды java -jar -Dport=10080 jettyExam.war
через командную строку CMD используется по умолчанию JRE-окружение, что приводит к ошибкам при обращении к JSP-файлам:
org.apache.jasper.JasperException: PWC6345: Error calling javac. Requires a full installation of JDK (not only JRE)
Поэтому в Windows следует указывать использование Java.exe из JDK:
%JAVA_HOME%\bin\java -jar -Dport=10080 jettyExam.war (при отсутствии переменной окружения JAVA_HOME, следует указать полный путь к JDK)
Или можно указать параметры JVM:
%JAVA_HOME%\bin\java -jar -Xms512m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=256M -Dport=10080 jettyExam.war
Проект создан с помощью Eclipse Luna
Название проекта: jettyExam
Требования к окружению: Maven 3.2.3
Основная функциональность определена в файле "jettyExam/src/main/java/Runner.java"
, который отвечает за создание сервера Jetty.Файлы сервлета находятся в "jettyExam/src/main/java/hello/app/HelloWorldServlet.java"
.
Картография, которая связывает URL и сервлеты, определена в файле "jettyExam/src/main/webapp/WEB-INF/web.xml"
.
Пример не поддерживает JSP, поскольку некоторые необходимые JAR-файлы отсутствуют.
Основные усилия направлены на поддержание файла "jettyExam/pom.xml"
: чтобы исходный код успешно компилировался, ключевым моментом являются зависимости.
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jettyVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jettyVersion}</version>
<scope>provided</scope>
</dependency>
</dependencies>
При этом, "provided"
позволяет избежать упаковки этих JAR-файлов в WAR-файл.
Если требуется поддержка JSP, следующую зависимость следует добавить:
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>${jettyVersion}</version>
<scope>provided</scope>
</dependency>
Добавление зависимости JSP увеличит размер WAR-файла на 800 КБ. Поэтому рекомендуется закомментировать зависимость JSP.
Кроме того, некоторые плагины являются обязательными.
maven-war-plugin определяет "основной" класс в MANIFEST.MF.
maven-antrun-plugin перемещает "основной" класс в корневой путь WAR-файла.
maven-dependency-plugin распаковывает зависимости из JAR-файлов.После выполнения "Run" -> "Run As" -> "Maven Install" в Eclipse, файл jettyExam.war
можно найти в каталоге target.
Теперь можно запустить java -jar -Dport=10080 jettyExam.war
и проверить результат через браузеры http://localhost:10080/
и http://localhost:10080/helloworld
.Ссылка:
Шаг за шагом: исполняемые WAR-файлы
Обратите внимание, что в статье есть ошибки.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )