1.9 KiB
1.9 KiB
RxJersey Proxy Client
Proxy client provides convenient way to call resources without constructing request. Also it allows to reuse resource interfaces between microservices.
In order to enable RxJava in proxy client register Jersey feature
RxJerseyClientFeature rxJerseyClientFeature = new RxJerseyClientFeature()
.register(client); //should be non-blocking client implementation
resourceConfig.register(rxJerseyClientFeature);
Default client with Grizzly connector will be used if not provided
Remote resource injection
You can inject proxy client with @Remote
annotation, in addition you can inject WebTarget
or RxWebTarget
@Path("/example/")
public class GithubResource {
@Remote("https://api.github.com/")
private GithubApi githubApi;
@Remote("https://api.github.com/")
private WebTarget webTarget;
@GET
@Path("github")
public Single<GithubRepository> getRepository() {
return githubApi.getRepository("alex-shpak", "rx-jersey").toSingle();
}
}
Manual proxy client creation
You can use WebResourceFactory
from net.winterly.rxjersey.client
package in order to create proxy client
RxJava
WebResourceFactory.newResource(
ResourceInterface.class,
rxWebTarget,
new ObservableClientMethodInvoker()
);
RxJava 2
WebResourceFactory.newResource(
ResourceInterface.class,
webTarget,
new FlowableClientMethodInvoker()
);
Url resolving
Below is example of URL merging based on @Remote
annotation value
Annotation Value | Jersey Context Path | Result URL |
---|---|---|
@Remote("http://example.com") | http://baseurl.com/resource | http://example.com/ |
@Remote("/resource/") | http://baseurl.com/some | http://baseurl.com/resource/ |