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

问题描述 投票:1回答:1

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

但我发现只有这种方法

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

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

gwt jax-rs errai
1个回答
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();
}

是丑陋但工作。

© www.soinside.com 2019 - 2024. All rights reserved.