运行 使用码头 9 的球衣 2 服务器

Running jersey 2 server using jetty 9

为了在 windows 7(后来 linux)电脑上部署一个用 java 编写的简单 HelloWorld web 服务,我已经苦苦挣扎了好几个小时。

我找到的大多数示例(来自一般地方,以及 Whosebug 上的其他问题)都不起作用或使用了 jersey 和其他库的弃用版本。

我的目标是在 java 中编写 Web 服务,其中编码应该很容易,部署它也很容易。它不需要支持任何关于请求量 运行ning 和性能的特殊内容(我的要求是最低的)

根据我的研究,我开始相信使用 jersey 和嵌入式 netty 网络服务应该会回答我正在寻找的东西(如果有人知道得更多,我也想听听,但这不是我的这个问题的主要问题,但可能只是一个替代解决方案)

我遇到过这个例子:

jersey2-jetty-example

它为您提供了一个工作项目,其中包含从 maven 到 运行 jersey 和 jetty 嵌入式服务器所需的依赖项(可以 运行 作为独立的 jar,这正是那种易于部署的 im寻找)

我克隆了示例并获得了所有内容 运行ning。我在将它导入到 Eclipse 时遇到了问题,所以我在示例文件夹中使用了以下命令:

mvn -DoutputDirectory=./lib dependency:copy-依赖关系

这将为您提供来自 maven 的 deps 的 lib 文件夹的副本, 然后我创建了一个 java 项目,在构建路径中使用此 lib 文件夹,并使用与示例相同的源代码,并且一切正常。 当我尝试使用此 java 项目并将其导出为 运行nable jar(包含源文件选项!)时,问题就出现了。 然后我可以使用 java -jar 到 运行 服务,但是当我尝试从浏览器访问它时(与我从 eclipse 运行 它时使用的相同),它永远不会工作,当 运行ning 从 eclipse 中运行时,我总是在一秒钟前工作的相同路由上收到错误 404。我无法弄清楚问题的根源是什么,或者 eclipse 的不同之处使其以不同的方式运行。

我已经找到了 jar 在 eclipse 中运行时不起作用的原因,这是因为我正在导入一个重复的 jar 导致了这个问题。我在 git 示例中从 maven 获得的罐子有 2 个重复的罐子,分别称为 hamcrest-all 和 hamcrest-core。从项目构建路径中删除其中之一解决了问题。

如果有人能回答我问的另一个开放式问题,即如果像这样使用 jersey 和 jetty 是满足我要求的最佳解决方案,我会很高兴听到它