【发布时间】:2018-06-04 10:02:55
【问题描述】:
上下文:用 Swing 编写的现有 JavaSE 应用程序会启动嵌入式服务器(目前是 Jetty),但我们需要切换到 Java EE,因此我们考虑引入企业容器(候选人是:Payara、Tomee、野蝇)。 服务器应该能够基于动态输入运行 web 应用程序:web 上下文,具有自己的 web.xml,在构建时不知道的特定 web 资源,所以 uber jar 对我们来说不是一个真正的选择。 我们已经使用如下代码在 Payara 上成功启动了一个 Web 应用程序(这不是工作代码,但它显示了我们使用 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);
这一切正常,当从我们的 Java SE 应用程序调用时,一个基本的 Web 应用程序在 Payara 中启动。
我们还有一个 web.xml 片段,它声明了如果满足给定条件,我们希望在此动态部署中引入额外的 servlet。 用另一个 web.xml 的片段覆盖现有 web.xml 的最佳方法是什么?我们需要更多有经验的 Payara 用户提供的文档指南和指导。
【问题讨论】: