Вам нужно будет предоставить немного больше информации, если вы хотите получить полный ответ, но я мог бы предложить несколько подходов, которые приведут к другому поведению (вам нужно будет выбрать подходящий для вашего случая использования)
1. Просто введите правильный код в файл jetty.xml
. Файл XML является довольно полным языком исполнения, поэтому вы можете просто вызывать методы для объектов. Подходящий статический метод вместе с тегом <call>
должен сделать трюк
Недостатком является то, что вы ничего не получаете от Jetty - вы просто привязываете свой метод запуска к тому же процессу запуска, который использует Jetty.
2. Создайте компонент, который реализует интерфейс Jetty LifeCycle
(лучше всего расширить AbstractLifeCycle
), а затем вызвать Server.addLifeCycle()
Это позволит вам открыть свой порт при запуске Jetty, аккуратно завершить работу, когда Jetty, остановится и т. Д.
Но все, что вы получаете, это тот жизненный цикл. Вы ничего не получите от развертывания.
3. То же, что и в варианте 1, но укажите его в jetty-web.xml
(или jetty-env.xml
), что позволяет связать его с развертыванием файла WAR.
Это не слишком выгодно для варианта 1, но если вы пытаетесь развернуть приложение на существующей установке Jetty, это может помочь.
4. То же, что и вариант 1, но с использованием jetty-web.xml
. Я не уверен, насколько хорошо это будет работать, так как я не думаю, что вы можете прикрепить LifeCycle
к WebAppContext
, но это может сработать, хорошо - вам нужно провести дополнительное расследование по этому вопросу.
5. Согласно решению Брайана , просто напишите сервлет с методом init()
и initialise-on-startup
, затем не сопоставляйте его ни с какими URL-адресами. Поместите вызов вашего метода ввода внутри этого init
.