Set a Web services client to access resources using a Web proxy
Configure a Web services client to access resources by connecting to a Web proxy server either with or without requiring authentication, just like other HTTP client applications. We can configure HTTP transport properties for a Web service acting as a client to another Web service. The HTTP transport values you configure are used at runtime. Set the HTTP transport values in one of the following ways:
- Set the properties using the JVM custom property panel in the admin console.
- Set the properties using the wsadmin command-line tool.
- Set the properties with an assembly tool.
- Set the properties programmatically using the application model
We can programmatically configure the properties using the JAX-RPC or JAX-WS model.
For JAX-RPC Web services, the HTTP transport values take the following precedence order with the programmatic method being the most significant:
- values specified programmatically on the Call object
- values defined in the deployment descriptors in each portQNameBinding attribute using an assembly tool
- values defined as JVM system properties
For JAX-WS Web services, the HTTP transport values you specify in the policy set definitions take precedence over the values defined programmatically. Subsequently, the HTTP transport values you define programmatically take precedence over the values defined as JVM system properties.
For JAX-WS applications, deployment descriptors are not supported.
Use annotations to specify deployment information.
- Set the HTTP or HTTPS proxyHost and proxyPort transport properties for the Web services in one of the following ways:
- Using the JVM custom property panel in the admin console
- Using the wsadmin command-line tool
- Using assembly tools
- Programmatically using the application model
To access the Web proxy over HTTP:
To access the Web proxy over HTTPS:
- If HTTP proxy authentication is required for the Web services client, then additionally configure the HTTP or HTTPS proxyUser and proxyPassword transport properties using one of the methods specified in the previous step.
To access the Web proxy over HTTP:
- http.proxyUser
- http.proxyPassword
To access the Web proxy over HTTPS:
- https.proxyUser
- https.proxyPassword
- If specifying the HTTP or HTTPS properties programmatically, set the properties in the Stub or Call instance to configure the HTTP proxy authentication.
- We can set the HTTP or HTTPS properties programmatically using the following Web services constants:
com.ibm.wsspi.webservices.Constants.HTTP_PROXYHOST_PROPERTY com.ibm.wsspi.webservices.Constants.HTTP_PROXYPORT_PROPERTY com.ibm.wsspi.webservices.Constants.HTTP_PROXYUSER_PROPERTY com.ibm.wsspi.webservices.Constants.HTTP_PROXYPASSWORD_PROPERTYcom.ibm.wsspi.webservices.Constants.HTTPS_PROXYHOST_PROPERTY com.ibm.wsspi.webservices.Constants.HTTPS_PROXYPORT_PROPERTY com.ibm.wsspi.webservices.Constants.HTTPS_PROXYUSER_PROPERTY com.ibm.wsspi.webservices.Constants.HTTPS_PROXYPASSWORD_PROPERTY
Results
we have configured the Web services client to use a Web proxy server to access resources.
We can optionally set the http.nonProxyHosts property to specify the host names of machines to which requests will not be sent through the proxy server. Any requests invoked by the client application that are sent to a host whose name is contained in this property will not pass through the proxy server. This property applies for both HTTP and HTTPS connections. To learn more about the http.nonProxyHosts property and other HTTP properties that we can configure, read about HTTP transport custom properties for Web services applications.
Example
Set the HTTP proxy programmatically
The following code allows you to configure the HTTP proxy programmatically:
import com.ibm.wsspi.webservices.Constants Properties prop = new Properties(); InitialContext ctx = new InitialContext(prop); Service service = (Service)ctx.lookup("java:comp/env/service/StockQuoteService"); QName portQname = new QName("http://httpchannel.test.wsfvt.ws.ibm.com", "StockQuoteHttp"); StockQuote sq = (StockQuote)service.getPort(portQname, StockQuote.class); ((javax.xml.rpc.Stub) sq)._setProperty(Constants.HTTP_PROXYHOST_PROPERTY, "proxyHost1.ibm.com"); ((javax.xml.rpc.Stub) sq)._setProperty(Constants.HTTP_PROXYPORT_PROPERTY, "80");
Related tasks
Web Services transactions, high availability, firewalls and intermediary nodes
Implementing JAX-WS Web services clients
Implementing JAX-RPC Web services clients
Set additional HTTP transport properties for JAX-RPC Web services with an assembly tool
Set additional HTTP transport properties using the wsadmin command-line tool
Set additional HTTP transport properties using the JVM custom property panel in the admin console
Set HTTP basic authentication for JAX-RPC Web services programmatically
Secure Web services applications at the transport level
Related
HTTP transport custom properties for Web services applications
Web services specifications and APIs 
Related information
Class Constants