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的主要内容,如果未能解决你的问题,请参考以下文章
pywintypes.error: (1314, ‘****‘, ‘客户端没有所需的特权。‘)