RestEasy 客户端所需的 jar

Posted

技术标签:

【中文标题】RestEasy 客户端所需的 jar【英文标题】:Required jars for RestEasy Client 【发布时间】:2014-12-27 22:33:22 【问题描述】:

我需要提供一个 java REST 客户端,它应该在一个包中包含所有必需的 jar。我选择 RestEasy 作为 REST 框架,因为服务器应用程序是在 JBoss 上完成的。

到目前为止,我发现的几乎所有示例都使用应用程序容器环境,其中提供了这些库,因此在编译期间只需要 Java EE API,或者使用 Maven 构建,因此依赖关系会自动解决,这可能是一个不错的选择想法和当前的标准方法,但出于与项目相关的原因,我需要将 jar 放在 lib 文件夹中,并且能够在构建期间包含并包含在可执行 jar 中。

所以我的问题是,构建一个可以执行类似操作的简单客户端需要什么:

ResteasyClient client = new ResteasyClientBuilder().build();
ResteasyWebTarget target = client.target(myURL).queryParam("param",
                "value");
Builder builder = target.request(MediaType.APPLICATION_JSON).header("user", "abc");
Invocation invocation = builder.buildGet();
MyResponseObject response = invocation.invoke(MyResponseObject .class);

【问题讨论】:

【参考方案1】:

最简单的方法是使用Maven。我这样说的原因是,您想要的主要工件是 resteasy-client 工件,但该工件依赖于其他工件。如果我创建一个新的 Maven 项目,只添加这个依赖项

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-client</artifactId>
    <version>3.0.9.Final</version>
</dependency>

项目将引入所有这些工件

但是如果你不使用Maven,你可以下载整个resteasy包here。它提供的功能远远超出您的需要,但它会包含您在上图中看到的所有 jar,以及其他一些好东西,例如用户指南、示例等。根据上图,只需获取您需要的罐子即可。确保下载最终版本。解压后,所有的jar包都应该在lib目录下。

我可能要提到的另一件事是,为了将 JSON 表示形式解组到您的 Java 类中,您可能还需要 resteasy-jackson2-provider。执行与上述相同的操作,您将看到这些拉入的工件

同样,这些也包含在下载中。这在大多数情况下都有效,如果您使用 JAXB 注释(可能返回 XML 或 JSON),因为拉入工件 jackson-module-jaxb-annotations,但该工件不支持所有 JAXB 注释,因此您可能需要拉入resteasy-jaxb-provider,如果需要的话。就像我说的那样,只需 jackson2-provider 就足够了。但如果您确实需要 jaxb-prodiver,它的外观如下

再次,包含在下载中

【讨论】:

两个依赖项都是需要的。 Jackson2 提供者依赖也解决了消息体错误。这篇文章是一个计时器保护程序 您的 resteasy-jackson2-provider 链接指向 resteasy-jackson-provider【参考方案2】:

如果您在项目中使用 maven,您可以输入 dependency:tree 来查看您的依赖关系的层次结构。 RestEasy 使用的库将列在树中。

【讨论】:

没错。他还可以使用 maven-assembly-plugin 并生成包

以上是关于RestEasy 客户端所需的 jar的主要内容,如果未能解决你的问题,请参考以下文章

Vert.x JDBC 客户端:无法加载所需的实现

pywintypes.error: (1314, ‘****‘, ‘客户端没有所需的特权。‘)

Go 客户端访问 GAE 登录所需的应用程序

C# 如何确保所需的 UDP 数据到达客户端/服务器?

针对多个客户端和可定制的 Web 应用程序的架构所需的建议 [关闭]

内容提供者的应用程序如何指定客户端应用程序访问提供者数据所需的权限?