我有一个部署到JBOSS的Web应用程序。它包含对jersey-rx-client-rxjava包的依赖,其中一个包具有对resteasy-jaxrs的短暂依赖。
我有以下代码。
let urlSearchParams = new URLSearchParams();
urlSearchParams.append('password', password);
urlSearchParams.append('email', email);
let loginInfo = urlSearchParams.toString();
在此行中,抛出以下异常。
RxObservable.newClient()
.target(fullURL)
.request()
.header("Authorization", "Bearer " + config.getApiKey())
.rx()
.post(javax.ws.rs.client.Entity.entity(context, MediaType.APPLICATION_JSON_TYPE), AIResponse.class)
.map(new Func1<AIResponse, String>() {
@Override
public String call(AIResponse res) {
return res.getType();
}
})
.subscribe(new Action1<String>() {
@Override
public void call(final String type) {
Log.info(type);
}
}, new Action1<Throwable>() {
@Override
public void call(final Throwable throwable) {
//async.resume(throwable);
Log.error(throwable.getMessage(), throwable);
}
}, new Action0() {
@Override
public void call() {
//async.resume(throwable);
Log.info("Done");
}
});
为什么构建方法返回final JerseyInvocation invocation = (JerseyInvocation) getBuilder().build(name, entity);
而不是org.jboss.resteasy.client.jaxrs.internal.ClientInvocation
?
JerseyInvocation
答案 0 :(得分:1)
为什么构建方法返回
Mikrotik
而不是org.jboss.resteasy.client.jaxrs.internal.ClientInvocation
它是如何设计JAX-RS客户端API的。当我们尝试调用JerseyInvocation
(在内部完成)时,JAX-RS API会对JAX-RS客户端API的任何实现执行服务查找。如果没有,它会回到泽西岛。问题是,当服务查找完成后,可以在类路径中找到RESTEasy的客户端。
Jersey RX API有一个我们可以使用的ClientBuilder.newBuilder
方法,而不是默认的from(Client)
。这将允许我们传递明确的newClient
而不是使用JAX-RS API JerseyClient
ClientBuilder.newBuilder/newClient
// actual JerseyClient which implements Client
Client client = new JerseyClientBuilder().build();
RxObservable.from(client)
与JAX-RS JerseyClientBuilder
具有几乎相同的API,因此您可以以相同的方式使用它。