Откуда вы взяли эту командную строку?
java -server \
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog\
-jar lib/jetty-start.jar\
OPTIONS=All \
--lib=lib/* \
--lib=webapps/root/WEB-INF/classes/com/foo/bar/* \
etc/jetty.xml \
etc/jetty-jmx.xml \
--debug
Это не подходит для использования с Jetty 9.x start.jar
Некоторые советы
- не используйте XML непосредственно в командной строке java, это ответственность
start.jar
и модульной системы jetty-home
(порядок СУПЕР ВАЖНО).
Ваш выбор etc/jetty.xml and etc/jetty-jmx.xml
является неполный список xmls. (у вас отсутствуют все зависимые XML файлы) - не редактируйте стандартные файлы Jetty XML, оставьте их, иначе вы усложните обновление позже. Вместо этого используйте XML, чтобы ввести свое поведение (см. Пример ниже)
OPTIONS
не поддерживается Jetty 9.x (это поведение старой школы Codehaus / Jetty 6) - Ваше использование of
--lib=
не рекомендуется, он поддерживает только полные пути к jar-файлам или каталогам с разнесенными деревьями классов (не относительные пути, не поддерживаются глобусы). -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
- это жесткий sh способ настройки ведения журнала. Создайте файлы jetty-logging.properties
и убедитесь, что они присутствуют в пути к классам.
Пример содержимого jetty-logging.properties
org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
org.eclipse.jetty.LEVEL=INFO
#org.eclipse.jetty.deploy.LEVEL=DEBUG
Сделайте это вместо этого.
Create XML на основе инъекции для вашего нового обработчика.
my-handler. xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call name="insertHandler">
<Arg>
<New id="CustomJettyHandler" class="com.foo.bar.CustomJettyHandler" />
</Arg>
</Call>
</Configure>
Затем правильно создайте каталог вашей пристани (для причалов start.jar
)
# Create your "jetty-base" directory
$ mkdir /path/to/myjettybase
$ cd /path/to/myjettybase
# Establish the basic files / directories / modules that you want to use
# You can find the configuration in start.ini or start.d/*.ini
$ java -jar /path/to/jetty-home/start.jar --add-to-start=http,jmx,deploy,ext,resources
# Copy your custom handler JAR into place
$ cp /path/to/my-handlers.jar /path/to/myjettybase/lib/ext/
# Copy your custom handler XML into place
$ cp /path/to/my-handler.xml /path/to/myjettybase/etc/
# Ensure that the custom handler XML is loaded into the jetty instance at the right point in the XML load order by declaring it to be used in a custom INI
$ mkdir start.d
$ echo "etc/my-handler.xml" >> start.d/my-handlers.ini
# Copy your jetty-logging.properties into place
$ cp /path/to/my-jetty-logging.properties /path/to/myjettybase/resources/jetty-logging.properties
# verify that your configuration looks sane (including the server classpath)
$ cd /path/to/myjettybase
$ java -jar /path/to/jetty-home/start.jar --list-config
# run your instance
$ cd /path/to/myjettybase
$ java -jar /path/to/jetty-home/start.jar
Но это еще не все, поскольку вы, похоже, хотите использовать jetty-home
из проекта в стиле maven (или макета проекта), вы тоже можете это сделать!
Пример проекта, показывающий это, можно найти по адресу ...
https://github.com/jetty-project/servlet-error-page-handling
Этот проект maven также является допустимым каталогом jetty-base
, подходящим для выполнения архивом jetty-home
в другом месте на вашем компьютере.