配置 Web Service 客户机以使用 Web 代理来访问资源

可以将 Web Service 客户机配置为通过 Web 代理服务器来访问资源。

关于此任务

正如同其他 HTTP 客户机应用程序一样,而不论是否需要认证,可以将 Web Service 客户机配置为通过连接至 Web 代理服务器来访问资源。可以配置 Web Service 的 HTTP 传输属性,该 Web Service 充当另一 Web Service 的客户机。您配置的 HTTP 传输值在运行时使用。通过下列其中一种方式来配置 HTTP 传输值:
  • 在管理控制台中使用 Java™ 虚拟机 (JVM) 定制属性面板来配置属性。
  • 使用 wsadmin 命令行工具来配置这些属性。
  • 使用组装工具来配置这些属性。
  • 以编程方式使用应用程序编程模型来配置这些属性。

如果要使用 Java API XML-based Remote Procedure Call (JAX-RPC) 编程模型或 Java API for XML Web Services (JAX-WS) 编程模型以编程方式来配置这些属性,请查看 JAX-RPC 或 JAX-WS 规范。

有关受支持的标准和规范的完整列表,请参阅 Web Service 规范和 API 文档。

对于 Java API for XML-based Remote Procedure Call (JAX-RPC) Web Service,HTTP 传输值采用以下优先顺序,其中程序化方法最重要:
  1. 以编程方式对 Call 对象指定的值
  2. 使用组装工具在每个 portQNameBinding 属性的部署描述符中定义的值
  3. 定义为 JVM 系统属性的值

对于 Java API for XML Web Service (JAX-WS) Web Service,您在策略集定义中指定的 HTTP 传输值优先于以编程方式定义的值。 随后,以编程方式定义的 HTTP 传输值优先于定义为 JVM 系统属性的值。对于 JAX-WS 应用程序,部署描述符不受支持。使用注释来指定部署信息。

过程

  1. 通过下列其中一种方式来配置 Web Service 的 HTTP 或 HTTPS proxyHostproxyPort 传输属性:
    • 在管理控制台中使用 Java 虚拟机 (JVM) 定制属性面板
    • 使用 wsadmin 命令行工具
    • 使用组装工具
    • 以编程方式使用应用程序编程模型
    要通过 HTTP 访问 Web 代理:
    • http.proxyHost
    • http.proxyPort
    要通过 HTTPS 访问 Web 代理:
    • https.proxyHost
    • https.proxyPort
  2. 如果 Web Service 客户机需要 HTTP 代理认证,那么请使用上一步骤中指定的方法之一对 HTTP 或 HTTPS proxyUserproxyPassword 传输属性进行额外的配置。
    要通过 HTTP 访问 Web 代理:
    • http.proxyUser
    • http.proxyPassword
    要通过 HTTPS 访问 Web 代理:
    • https.proxyUser
    • https.proxyPassword
  3. 如果以编程方式指定 HTTP 或 HTTPS 属性,请设置 Stub 或 Call 实例中的属性以配置 HTTP 代理认证。
    1. 可使用以下 Web Service 常量以编程方式来设置 HTTP 或 HTTPS 属性:
      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
  4. 使用 Web Service 传输层中的隧道以使 Web Service 客户机能够通过 Web 代理服务器访问资源。 将 Java 虚拟机 (JVM) 属性 com.ibm.ws.websvcs.transport.enableProxyTunnel 设置为值 true

结果

您已经将 Web Service 客户机配置为使用 Web 代理服务器来访问资源。

可根据需要设置 http.nonProxyHosts 属性,以指定不通过代理服务器向其发送请求的机器主机名。任何由客户机应用程序调用并发送至名称包含在此属性中的主机的请求都不通过代理服务器进行传递。此属性适用于 HTTP 和 HTTPS 连接。要了解有关 http.nonProxyHosts 属性以及其他您可以配置的 HTTP 属性的更多信息,请参阅 Web Service 应用程序的 HTTP 传输定制属性。

示例

以下代码允许您以编程方式配置 HTTP 代理:
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");
注: 对于 JAX-WS,以下代码使您可以使用 BindingProvider 的 RequestContext 以编程方式指定 HTTP 或 HTTPS 属性:
//Set the https.proxyHost as a property on the RequestContext.
BindingProvider bp = (Binding Provider)port;
bp.getRequestContext().put("https.proxyHost", "proxyHost1.ibm.com");
bp.getRequestContext().put("https.proxyPort", "80");

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_configwbsclient2webproxy
文件名:twbs_configwbsclient2webproxy.html