为 JAX-RS 2.0 客户端配置代理 API

Configuring proxy for JAX-RS 2.0 client API

我有一个 运行 在 Java EE 7 应用程序服务器 (WildFly) 上的应用程序,它使用 REST 资源查询另一个服务。

在以前的应用程序中,我使用了 Jersey 1.x 客户端 API。通过 Web 代理授予对 REST 服务的访问权限。

在泽西岛,我创建了这样的 Client 实例:

public Client create() {

    Client client;
    if ( proxyConfiguration != null && proxyConfiguration.getHost() != null && !proxyConfiguration.getHost().trim().isEmpty() ) {
        HttpURLConnectionFactory urlConnectionFactory = new ProxyUrlConnectionFactory( proxyConfiguration );
        client = new Client( new URLConnectionClientHandler( urlConnectionFactory ), clientConfig );
    } else {
        client = Client.create( clientConfig );
    }

    return client;
}

运行 在 Java EE 7 应用程序服务器上 我想使用应用程序服务器提供的 JAX-RS 2.0 客户端 API。

现在我很难找到有关如何以独立于平台的方式配置 JAX-RS 2.0 客户端的信息。设置 http.proxyHosthttp.proxyPort 系统属性对 WildFly 没有影响(无论如何我宁愿不要全局配置它)。

有人知道怎么解决吗?

我认为没有独立于供应商的解决方案(至少,我没有在 JAX-RS API 中找到任何与代理相关的内容)。

对于球衣 2.x,您可以尝试:

ClientConfig config = new ClientConfig();
config.property(ClientProperties.PROXY_URI, "192.168.1.254:8080");  
Client client = ClientBuilder.withConfig(config).build();

ClientProperties 是来自泽西 API.

的 class

对于 RESTEasy,配置为:

Client client = new ResteasyClientBuilder()
                   .defaultProxy("192.168.1.254", 8080, "http")
                   .build();

ResteasyClientBuilder 是来自 RESTEasy API.

的 class