将一个嵌入式Jetty& Jersey战争部署到jetty9,只能看到静态文件?

时间:2017-05-17 06:26:38

标签: maven jetty embedded-jetty jetty-9

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

现在我将它打包到war文件中,并将其放在jetty webapps目录中。但只有在输入localhost:8080/static时才能看到浏览器中的静态文件。在浏览器中使用输入localhost:8080/dynamic时找不到404错误

发生了什么?

如何将此项目打包成war文件或jar文件并成功在jetty中运行该怎么办?

1 个答案:

答案 0 :(得分:0)

您正在使用JettyServerStart.java中的嵌入式Jetty用法,而不是在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-distributionjetty-home版本。

声明“并将其放入jetty webapps目录”尚不清楚,哪一个? (使用jetty-distribution / webapps无效,如果您尝试将其用于自己的Web应用程序,将导致许多错误和警告,没有jetty-home / webapps,并且您没有识别您的基于jetty的配置)

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