Jersey Server
Register RxJerseyServerFeature in resourceConfig
resourceConfig.register(RxJerseyServerFeature.class);Or with configuration
RxJerseyServerFeature rxJerseyServerFeature = new RxJerseyServerFeature()
.register(AuthInterceptor.class);
resourceConfig.register(rxJerseyServerFeature);Update your resource adding rx return type:
@Path("/")
public class HelloResource {
@GET
public Single<HelloEntity> getAsync() {
return Single.just(new HelloEntity());
}
public static class HelloEntity {
public String hello = "world";
}
}Inteceptor
You can use RxJava enabled interceptors. Result of such interceptor will be ignored. Thrown or returned error would be redirected to jersey.
RxJava
public class SimpleInterceptor implements ObservableRequestInterceptor<Void> {
public Observable<Void> intercept(ContainerRequestContext requestContext) {
return Observable.empty();
}
}RxJava 2
public class SimpleInterceptor implements CompletableRequestInterceptor {
public Completable intercept(ContainerRequestContext requestContext) {
return Observable.complete();
}
}Important notes
RxJava
- It’s recommended to use
rx.Singleas return type (Representing single response entity). - Multiple elements emitted in
Observablewill be treated as error. - Empty
Observableornullvalue inObservableorSinglewill be treated as204: No content. Completablewill be executed and204: No contentwill be returned.
RxJava 2
- It’s recommended to use
io.reactivex.Maybewhich could be 0 or 1 item or an error. - Multiple elements emitted in
ObservableorFlowablewill be treated as error. - Empty
Observable/Maybewill be treated as204: No content. Completablewill be executed and204: No contentwill be returned.