rest - JAX-RS 2.0 更改默认实现

标签 rest jersey jax-rs resteasy

我正在尝试使用 RESTEasy 作为 JAX-RS 2.0 客户端实现。问题是我遇到了运行时异常:

06-28 13:29:06.410: E/AndroidRuntime(5745): Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
06-28 13:29:06.410: E/AndroidRuntime(5745):     at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:103)

因此,如果我理解正确的话,newBuilder() 方法正在搜索 JerseyClientBuilder 。我如何告诉系统改用RESTEasy?

最佳答案

嗯,JAX-RS 依赖于服务提供者约定。 在 newBuilder 方法的第一行,您可以阅读:

 Object delegate = FactoryFinder.find(JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY,
   JAXRS_DEFAULT_CLIENT_BUILDER); 

其中JAXRS_DEFAULT_CLIENT_BUILDER_PROPERTY“javax.ws.rs.client.ClientBuilder”

反过来,FactoryFinder 看起来

  • 首先将类名放入META-INF/services/javax.ws.rs.client.ClientBuilder
  • 然后在属性javax.ws.rs.client.ClientBuilder中进入${java.home}/lib/jaxrs.properties
  • 最终进入系统属性javax.ws.rs.client.ClientBuilder

因此,要使用 RESTEasy,您应该创建一个文件

META-INF/services/javax.ws.rs.client.ClientBuilder

带有文字:

org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder

这是 RESTEasy ClientBuilder 的类名

关于rest - JAX-RS 2.0 更改默认实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17366266/

相关文章:

node.js - 在 Express REST API 中使用 OOP 的最佳方式?

php - 如何使用具有相同 Controller 的 Laravel 制作网站和 API REST?

Ruby Net::HTTP::Options 不允许响应主体

java - 如何从启用 jax-rs/rest-easy 的返回 pojo 的方法返回 cookie

java - Java Jersey 中的异步

java - 在maven项目中保存java文件失败

将文件上传到 REST URL 的 Python 3 脚本(多部分请求)

java - 如何使用 jersey 将 session 绑定(bind)到 User 对象

eclipse - Eclipse 可以将 Maven Web 项目导入为 "Dynamic Web Application"吗?

java - 如何根据后缀有条件地路由 JAX-RS 请求?