【问题标题】:Deploy a embedded Jetty&Jersey war to jetty9,only can see static file?将嵌入式Jetty&Jersey war部署到jetty9,只能看到静态文件?
【发布时间】:2017-10-16 11:02:05
【问题描述】:

我用 IDEA 和 Maven 创建了一个 jetty&jersey 嵌入式项目,我把它放在 Github https://github.com/Mengqi777/JettyProject。运行JettyServerStart.java启动服务器,在浏览器地址栏输入localhost:8080/dynamic,显示OK,输入localhost:8080/static,显示静态资源文件

现在我把它打包成一个war文件,放到jetty webapps目录下。但是在浏览器中输入localhost:8080/static.404 Not Found Error时只能在浏览器中看到静态文件输入localhost:8080/dynamic

发生了什么?

如何将这个项目打包成war文件或jar文件并在jetty中成功运行?

【问题讨论】:

  • 现在我只能在IDEA中运行这个嵌入式项目。我想知道的是如何在没有IDEA的情况下运行它?

标签: maven jetty embedded-jetty jetty-9


【解决方案1】:

您正在 JettyServerStart.java 中的嵌入式码头使用中做一些您未在 webapp 或 war 文件中声明/配置的事情。

这是一个 maven 项目,但没有声明为 webapp 或 war 项目(在 pom.xml 中)

它的 WEB-INF 没有放在正确的位置(maven 目录结构明智),这意味着您构建的 war 文件无效。

没有为 webapp 或 war 项目正确声明依赖项(您不能在 war 文件中包含 jetty-server)

您位置错误的 WEB-INF/web.xml 执行的配置步骤与您的 JettyServerStart.java 不同

您没有指定如何创建${jetty.base} 目录来支持这个war 文件?

您未指定您下载或尝试使用的 jetty-distribution 或 jetty-home 版本。

“并将其放在jetty webapps目录中”的说法不清楚,哪个? (使用 jetty-distribution/webapps 是无效的,如果您尝试将它用于您自己的 webapps,将导致许多错误和警告,没有 jetty-home/webapps,并且您没有识别您的 jetty-base 配置)

现在声明您的项目的方式,即使手动组装,完全跳过 maven,您也没有 servlet,没有过滤器,没有侦听器,没有初始化程序,只有 url-pattern / 上强制 DefaultServlet 的 servlet 规范给您静态内容。这就是为什么访问 http://localhost:8080/static/ 有效,但没有别的原因。

【讨论】:

  • 非常感谢,我对 Jetty 和 Maven 知之甚少,以后会进一步了解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
相关资源
最近更新 更多