【问题标题】:Configuring proxy for JAX-RS 2.0 client API为 JAX-RS 2.0 客户端 API 配置代理
【发布时间】:2015-11-23 13:38:40
【问题描述】:

我有一个在 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 java-ee-7


    【解决方案1】:

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

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

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

    ClientProperties 是 Jersey API 中的一个类。


    对于 RESTEasy,配置为:

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

    ResteasyClientBuilder 是 RESTEasy API 中的一个类。

    【讨论】:

    • 非常感谢。我非常害怕——我想我可以将 Resteasy 指定为提供的依赖项。我希望避免供应商锁定
    • @MaxFichtelmann 实际上,我对这个解决方案并不满意。 JAX-RS 2.0 JSR 只提到了一次proxy 这个词,不幸的是,它与network proxies 无关。恕我直言,下一版本的规范可能会涵盖这种情况。
    猜你喜欢
    • 1970-01-01
    • 2014-07-11
    • 2023-03-20
    • 2019-04-19
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多