Java 加载web.xml用于与jetty的集成测试

Java 加载web.xml用于与jetty的集成测试,java,jvm,jetty,Java,Jvm,Jetty,好的,这有点像: 在那里得到了很好的答案,并且能够以编程方式加载servlet,而且它的所有功能都非常棒 然而,我想做的是在测试中加载一个web.xml(全部在类路径中),并让它在服务器上运行(使用当前的类路径)——我在文档中看到了如何将它指向一个目录来实现这一点,但我想使用类路径(更好地进行就地测试)。基本上是验证我的web.xml (这不相关,但这个应用程序是scala的,但我对此没有异议,一切都按照宣传的方式进行)。听起来你想做的是通过编程方式加载一个合适的web应用程序,而不是加载单个s

好的,这有点像:

在那里得到了很好的答案,并且能够以编程方式加载servlet,而且它的所有功能都非常棒

然而,我想做的是在测试中加载一个web.xml(全部在类路径中),并让它在服务器上运行(使用当前的类路径)——我在文档中看到了如何将它指向一个目录来实现这一点,但我想使用类路径(更好地进行就地测试)。基本上是验证我的web.xml


(这不相关,但这个应用程序是scala的,但我对此没有异议,一切都按照宣传的方式进行)。

听起来你想做的是通过编程方式加载一个合适的web应用程序,而不是加载单个servlet(我想你想在没有完整WAR文件的情况下这样做)


诀窍在于
/path/to/where
应该包含一个
WEB-INF
目录,并且您的
WEB.xml
文件应该位于其中。目录结构中不需要任何其他内容,因为所有其他内容都可以从类路径自动加载(不过,如果您愿意,您可以将该路径设置为实际WAR文件的路径或完整的分解WAR树)。

我看不出您的问题-您说的“类路径中的所有内容”是什么意思?据我所知,您希望使用某个web.xml启动Jetty。这应该没有问题,用脚本复制web.xml并启动Jetty。事实上,我希望它与测试一起运行-而不是作为单独的进程启动(工作正常,但不像进程内单元测试那样整洁)-这只是一件方便的事情。(而且它很快!非常适合于“单元”测试,而“单元”测试实际上比单元测试更多!)-谢谢你更新这篇文章。
Server server = new Server( port );
WebAppContext root = new WebAppContext();

root.setWar("/path/to/somewhere");
root.setContextPath("/");

server.addHandler( root );
server.start();