You can configure a Web services client to access resources through
a Web proxy server.
About this task
You can 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. You 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. Configure the HTTP
transport values in one of the following ways:
- Configure the properties using the Java Virtual Machine (JVM) custom property
panel in the administrative console.
- Configure the properties using the wsadmin command-line tool.
- Configure the properties with an assembly tool.
- Configure the properties programmatically using the application programming
model
If you want to programmatically
configure the HTTP properties using the Java API XML-based Remote Procedure
Call (JAX-RPC) programming model, review the JAX-RPC specification that is
available through Web
services: Resources for learning.
For Java API XML-based
Remote Procedure Call (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
Procedure
- Configure the HTTP or HTTPS proxyHost and proxyPort transport
properties for the Web services in one of the following ways:
- using the Java Virtual Machine (JVM) custom property panel in the administrative
console
- using the wsadmin command-line tool
- using assembly tools
- programmatically using the application programming model
To access the Web proxy over HTTP:
- http.proxyHost
- http.proxyPort
To access the Web proxy over HTTPS:
- https.proxyHost
- https.proxyPort
- If HTTP proxy authentication is required for your 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 you are specifying the HTTP or HTTPS properties programmatically,
set the properties in the Stub or Call instance to configure the HTTP proxy
authentication.
- You 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_PROPERTY
com.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
You have configured your Web services client to use a Web proxy
server to access resources.
You 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 you can configure, read about HTTP transport custom properties
for Web services applications.
Example
Configuring 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");