如何更改errai jaxrs代理的基本URL端点?

时间:2019-03-25 08:27:41

标签: gwt jax-rs errai

我需要调用位于不同服务器上的不同终结点,我尝试更改其余服务的基本url的值。

但是我只找到了这种方法

 RestClient.create(MyService.class, otherServiceBaseUrl,
            myCallback,               
            200).doStaf() ;

有人建议以更优雅的方式为MyService类中的所有服务设置基本URL吗?

1 个答案:

答案 0 :(得分:0)

我找到了这个解决方案。 我创建了一个抽象类DinamicCaller。

   public abstract class DinamicCaller<T> {


    public T call() {
        T call = getCaller().call();
        ((AbstractJaxrsProxy) call).setBaseUrl(getBaseUrl());
        return call;
    }

    public T call(RemoteCallback<?> callback) {
        T call = getCaller().call(callback);
        ((AbstractJaxrsProxy) call).setBaseUrl(getBaseUrl());

        return call;
    }

    public T call(RemoteCallback<?> callback, ErrorCallback<?> errorCallback) {

        T call = getCaller().call(callback, errorCallback);
        ((AbstractJaxrsProxy) call).setBaseUrl(getBaseUrl());

        return call;

    }

    protected abstract Caller<T> getCaller();


    protected abstract String getBaseUrl();
}

我创建一个具体类

public class CallerCORSNegoziService extends DinamicCaller<CORSNegoziService> {

    @Inject
    NegozioManager negozioManager;
    @Inject
    Caller<CORSNegoziService> caller;


    @Override
    protected Caller<CORSNegoziService> getCaller() {
        return caller;
    }

    @Override
    protected String getBaseUrl() {
        return negozioManager.getNegozio().getUrl();
    }
}

我在课堂上注入了具体的课堂

@Inject
CallerCORSNegoziService service;

我用它

@UiHandler("testButton")
public void testButtonClick(ClickEvent event) {
      service.call(testCallback, testCallback).findAllNegozi();
}

很丑,但是可​​以工作。