Контекст: существующее приложение JavaSE, написанное на Swing, которое запускает встроенный сервер (пока это был Jetty), но нам нужно переключиться на Java EE, поэтому мы подумали о внедрении корпоративного контейнера (кандидаты: Payara, Tomee,Wildfly).Сервер должен иметь возможность запускать веб-приложение на основе динамического ввода: веб-контекст с собственным web.xml, определенными веб-ресурсами, которые неизвестны во время сборки, поэтому uber jar на самом деле не вариант для нас.Мы успешно запустили веб-приложение на Payara с использованием кода, подобного следующему (это не рабочий код, но он показывает шаги, которые мы предприняли для использования Payara)
GlassFish glassfish;
WebContainer container;
GlassFishRuntime glassfishRuntime = = GlassFishRuntime.bootstrap();
glassfish = glassfishRuntime.newGlassFish();
glassfish.start();
// Access WebContainer
container = glassfish.getService(WebContainer.class);
WebContainerConfig config = new WebContainerConfig();
container.setConfiguration(config);
Context context = container.createContext(contextPathLocation);
m_webAppContexts.put(p_contextName, context);
WebListener listener = container.createWebListener("listener-1", HttpListener.class);
listener.setPort(myDynamicPortNumber);
container.addWebListener(listener);
container.addContext(context, myDynamicContextPath);
context.addServlet(myDynamicMapping, myServletName);
Это все работает и является базовым веб-приложениемзапускается в Payara при вызове из нашего приложения Java SE.
У нас также есть фрагмент web.xml, объявляющий дополнительные сервлеты, которые мы хотим внедрить в этом динамическом развертывании, если заданные условия удовлетворены.Каков наилучший способ переопределить существующий файл web.xml фрагментами из другого файла web.xml?Нам нужны указатели на документацию, указания от более опытных пользователей Payara.