【发布时间】:2015-08-04 03:57:20
【问题描述】:
我正在尝试使用 Jetty 的自执行 WAR 包。它默认配置为 web.xml。如果给出了运行时选项,我想通过 Java 代码级配置使用 ServletContextHandler#addServlet、#addEventListener 和 ...
覆盖 web.xml我可以在加载 WAR 包时忽略 web.xml 吗?
% java -jar foobar.jar # Use web.xml
% java -jar foobar.jar --customize=something # Use Java code to configure
// Example
WebAppContext webapp = new WebAppContext();
webapp.setWar(warLocation.toExternalForm());
webapp.setContextPath("/");
if ( /* has run-time options */ ) {
webapp.setWar(warLocation.toExternalForm()); // But, no load web.xml!
// Emulates web.xml.
webapp.addEventListener(...);
webapp.setInitParameter("resteasy.role.based.security", "true");
webapp.addFilter(...);
} else {
webapp.setWar(warLocation.toExternalForm()); // Loading web.xml.
}
补充问题:
在调用 server.start() 之前,不会加载 WEB-INF/ 下的类。我可以对 WEB-INF/ 下的一些类做一些配置 webapp.something() 吗? (例如,扩展 WebInfConfiguration 或执行与 WebInfConfiguration 类似的类加载?)
例如,我想做这样的事情:
- webapp.addEventListener(new SomeClassUnderWebInf()));
- webapp.addEventListener(someInjector.inject(SomeClassUnderWebInf.class));
在 server.start() 之前。
【问题讨论】:
-
在 stackoverflow 上将“附加问题”作为另一个问题提出,不要在此处使原始问题复杂化。 (它也让那些追随你的人更好地找到相关的问题和答案)
-
啊,有道理。谢谢你的建议。我会再问一个问题!
-
在stackoverflow.com/questions/31192270/…发布了另一个问题。