gpt4 book ai didi

java - 嵌入式 jetty ServletTester 服务单个静态文件

转载 作者:行者123 更新时间:2023-12-04 07:01:41 26 4
gpt4 key购买 nike

我正在使用 jetty 进行单元测试,我不仅想为我的被测 servlet 提供服务,还想为静态页面提供服务。我的应用程序需要静态页面。我正在像这样初始化 jetty

tester = new ServletTester();
tester.setContextPath("/context");
tester.addServlet(MyServlet.class, "/servlet/*");
tester.start();

我现在需要的是像
tester.addStaticPage("local/path/in/my/workspace", "/as/remote/file");

这可以用 jetty 吗?

最佳答案

我不认为你可以用 ServletTester 做到这一点。 ServletTester 为 servlet 创建单个上下文。您需要使用至少两种上下文设置嵌入式 jetty :一种用于 servlet,一种用于静态内容。

如果有一个完整的 WebAppContext,你会被设置,但没有。

您可以复制 ServletTester 并添加头发,或者您可以阅读 API 并配置必要的上下文。这是一个代码片段,向您展示基本思想,您将
无法按原样编译此文件。您需要为静态内容创建合适的上下文。

        server = new Server();

int port = Integer.parseInt(portNumber);
if (connector == null) {
connector = createConnector(port);
}
server.addConnector(connector);

for (Webapp webapp : webapps) {
File sourceDirFile = new File(webapp.getWebappSourceDirectory());
WebAppContext wac = new WebAppContext(sourceDirFile.getCanonicalPath(), webapp.getContextPath());
WebAppClassLoader loader = new WebAppClassLoader(wac);
if (webapp.getLibDirectory() != null) {
Resource r = Resource.newResource(webapp.getLibDirectory());
loader.addJars(r);
}
if (webapp.getClasspathEntries() != null) {
for (String dir : webapp.getClasspathEntries()) {
loader.addClassPath(dir);
}
}
wac.setClassLoader(loader);
server.addHandler(wac);
}
server.start();

关于java - 嵌入式 jetty ServletTester 服务单个静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1742330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com