public static void main(String[] args) {
Server server = new Server(8080);
ServletContextHandler servletContextHandler = new ServletContextHandler(NO_SESSIONS);
servletContextHandler.setContextPath("/");
DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder holderPwd = new ServletHolder("default", defaultServlet);
final URL htmlDirectory = JerseyApplication.class.getResource("/html");
holderPwd.setInitParameter("resourceBase", htmlDirectory.getFile());
servletContextHandler.addServlet(holderPwd, "/*");
server.setHandler(servletContextHandler);
ServletHolder servletHolder = servletContextHandler.addServlet(ServletContainer.class, "/api/*");
servletHolder.setInitOrder(0);
servletHolder.setInitParameter(
"jersey.config.server.provider.packages",
"com.x.y.z.parser");
try {
LOGGER.info("Starting server");
server.start();
server.join();
}
catch (Exception ex) {
LOGGER.error("Server failed to start - Aborting");
ex.printStackTrace();
}
finally {
LOGGER.info("Destroying server");
server.destroy();
}
}
当我运行jar tvf jarfile.jar grep html
时,我可以看到html
目录,它的内容就在其中:
0 Thu Nov 01 11:48:46 UTC 2018 html/
2258 Thu Nov 01 11:48:46 UTC 2018 html/formRequest.js
871 Thu Nov 01 11:48:46 UTC 2018 html/index.html
谢了!
使用从HtmlDirectory
获得的URL作为整个ServletContexthHandler
的基本资源。
详情见先前答复:https://stackoverflow.com/a/39019797/775715
final URL htmlDirectory = JerseyApplication.class.getResource("/html");
// TODO: Handle error if htmlDirectory == null
ServletContextHandler servletContextHandler = new ServletContextHandler(NO_SESSIONS);
servletContextHandler.setContextPath("/");
servletContextHandler.setBaseResource(Resource.newResource(htmlDirectory));
DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder holderPwd = new ServletHolder("default", defaultServlet);
// holderPwd.setInitParameter("resourceBase", htmlDirectory.getFile()); <-- not needed here
servletContextHandler.addServlet(holderPwd, "/"); // NOTE: MUST be "/" not "/*"!
最后一件事,你好像在用泽西。(又名Jersey.config.server.provider.packages
)确保禁用使Jersey本身服务静态内容的Jersey配置。让杰蒂负责。(至于如何做到这一点,这是另一个问题,这是Jersey版本特定的,在stackoverflow上已经有了答案)
我了解在lambda中捕获此(修改对象属性)的正确方法如下: 但我对我所看到的以下特点感到好奇: 我感到困惑(并希望得到回答)的奇怪之处在于,为什么以下方法有效: 以及为什么我无法通过引用明确捕获此内容:
我是K8s的新手,所以仍然试图让我的头脑周围的事情。我一直在研究部署,并能够理解它们将有多有用。但是,我不明白为什么它们不支持服务(只支持副本集和豆荚)。
以下是JDK11的源代码: 使用访问器而不是直接使用字段有什么意义?既然访问器方法是最终的,为什么不声明:并删除访问器呢?
我在Java中使用嵌套类时遇到问题,有人知道为什么Java不允许我这样做吗?
当我在tomcat服务器上运行它时,它在服务页面中返回以下错误:我不能访问WSDL和SOAP 我有这个错误: 类型异常报告 servlet[CXFServlet]的“servlet.init()”消息引发了异常 说明服务器遇到内部错误,导致它无法满足请求。
当使用NodePort服务和Kubernetes入口公开时,SFTP服务器不可访问。但是,如果使用LoadBalancer类型的服务公开相同的部署,它就可以正常工作。 然而,我尝试使用GKE Ingress公开相同的部署,但它不起作用。以下是入口的清单: 将外部IP分配给入口后(我知道完全设置需要几分钟),开始工作,但不工作。 下面是我从服务器得到的错误: 在上面的设置中,我做错了什么?为什么Lo