Configuring proxy for JAX-RS 2.0 client API

Max Fichtelmann picture Max Fichtelmann · Nov 23, 2015 · Viewed 14.6k times · Source

I have an application that is running on a Java EE 7 application server (WildFly), that queries another service using REST resources.

In previous applications I have used the Jersey 1.x client API. Access to the REST service is granted through a web proxy.

In Jersey I create the Client instance like this:

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;
}

Running on a Java EE 7 application server I wanted to use the JAX-RS 2.0 client API which is provided by the application server.

Now I am having a really hard time to find information on how to configure the JAX-RS 2.0 client in a platform independent way. Setting the http.proxyHost and http.proxyPort system properties had no effect in WildFly (I would prefer to not configure it globally anyway).

Does anyone know how to solve this?

Answer

cassiomolin picture cassiomolin · Nov 23, 2015

I think there's no vendor independent solution (at least, I didn't find anything related to proxies in the JAX-RS API).

For Jersey 2.x, you can try:

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

ClientProperties is a class from Jersey API.


For RESTEasy, the configuration is:

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

ResteasyClientBuilder is a class from RESTEasy API.