【发布时间】:2020-03-09 16:01:51
【问题描述】:
我有一个 Java servlets 项目,我想构建一个 WAR 以部署到服务器和一个可执行 JAR,其中包含可以独立运行的嵌入式 Jetty 服务器。 该项目如下所示:
HelloWorldServlets
common
src/main
java
HelloServlet.java
webapp
index.jsp
build.gradle
jetty
src/main
java
JettyServer.java
build.gradle
build.gradle
jetty 导入 common 作为编译依赖。构建任务是:
jar {
manifest { attributes "Main-Class": "JettyServer" }
from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) })
}
common中的jar任务如下:
jar {
sourceSets.main.resources.srcDirs += ["src/main/webapp"]
}
Web 资源包含在common.jar 中,common.jar 在jetty.jar 中被展平,因此jetty.jar 的资源位于其根目录中,但是将服务器设置为:
Server server = new Server(8080);
WebAppContext context = new WebAppContext();
server.setHandler(context);
context.setResourceBase("/");
context.setContextPath("/");
context.addServlet(Hello.class, "");
总是导致 HTTP ERROR 404 访问 /index.jsp 时出现问题。
我不应该将common.jar 扁平化为jetty.jar 还是我缺少关于ResourceBase 的一些东西?谢谢!
【问题讨论】:
标签: java servlets jetty embedded-jetty