好的,这与:Using jetty to install and run servlet tests programmatically
有关在那里得到了很好的答案,并且能够以编程方式加载servlet并且它们都非常棒。
然而,我想要做的是在测试中加载一个web.xml(所有在类路径中)并让它运行一个服务器(使用当前的类路径) - 我在docs中看到如何指向它这样做的目录,但我想在类路径下工作(更好地进行现场测试)。基本上验证我的web.xml。
(它不相关,但这个应用程序是scala,但我对此没有任何问题,一切都按照宣传的方式工作)。
答案 0 :(得分:13)
听起来你想要做的是以编程方式加载一个合适的Web应用程序,而不是加载单个servlet(我认为你想要在没有完整的WAR文件的情况下完成它)。
Server server = new Server( port );
WebAppContext root = new WebAppContext();
root.setWar("/path/to/somewhere");
root.setContextPath("/");
server.addHandler( root );
server.start();
诀窍是/path/to/somewhere
应该包含一个WEB-INF
目录,而你的web.xml
文件应该存在于那里。没有其他东西需要存在于该目录结构中,因为其他所有内容都可以从类路径中自动加载(尽管如果您愿意,可以将其作为实际WAR文件的路径或完整的爆炸WAR树)。