createWSGWProxyService 命令

使用 createWSGWProxyService 命令设置网关以使其充当服务代理,并使用 JAX-RPC 处理程序来设置服务的入局请求消息的端点。

可以按本主题中所述使用 wsadmin 工具来创建新的代理服务配置,也可以按 创建新的代理服务配置中所述使用管理控制台来创建新的代理服务配置。

要运行此命令,请使用 wsadmin 脚本编制客户机的 AdminTask 对象。

[IBM i][IBM i]wsadmin 脚本编制客户机从 Qshell 运行

为服务集成总线的命令提供了命令行帮助:
  • 要获取可用的网关命令列表以及每个命令的简短描述,请在 wsadmin 提示符处输入以下命令:

    print AdminTask.help('WSGateway')

  • 有关特定命令的概述帮助,请在 wsadmin 提示符处输入以下命令:

    print AdminTask.help('command_name')

使用该命令后,使用以下命令将更改保存到主配置。

AdminConfig.save()

用途

该命令创建新的 ProxyService 对象和关联的 InboundService 对象以及 TargetService 对象和关联的 OutboundService 对象。

然后,使用与 InboundService 对象关联的 支持服务集成总线的 Web Service 命令添加任何 InboundPort 对象。 有关更多信息,请参阅本主题末尾的有效示例。

目标对象

创建代理服务的网关实例的 ObjectName

此命令创建代理请求目标及相应的应答目标。 配置代理请求目标以更新应答路径来添加代理应答目标。 如果带有指定名称或缺省名称的目标已存在,那么该命令失败。

如果同名的网关服务或代理服务已存在,那么该命令失败。

如果指定代理请求目标的名称,那么使用该名称创建代理服务目标和端口目标。 否则,使用源自代理服务名称的名称创建代理服务目标和端口目标。 通过将 ProxyService 添加到代理请求目标或代理服务名称来创建代理服务目标名称。 然后,将以代理服务目标命名每个代理端口目标,后跟冒号 (:) ,后跟端口名称,后跟 Port。 如果带有任何这些名称的目标已存在,那么该命令失败。

指定节点和服务器,或者指定集群。 如果不存在为指定节点以及服务器或集群定义的消息传递引擎,那么该命令将失败。

该命令创建与代理服务同名的 OutboundService 对象。 该新的出站服务使用已创建的目标、已提供的位置以及网关实例的缺省代理 WSDL 位置或(如果指定的话)代理 WSDL 文件的位置。 新的出站服务与 ProxyService 对象关联。

代理 WSDL 必须只有一个服务元素。 如果在单个服务元素内存在多个端口,那么为每个端口创建出站端口对象。

代理 WSDL 从不应该来自 UDDI,所以,对于缺省代理 WSDL 位置和被覆盖的代理 WSDL 位置,仅支持 Web 地址。

该命令使用代理目标创建与代理服务同名的 InboundService 对象,并将缺省或指定的代理 WSDL 位置用作模板 WSDL 位置。

必需参数

-name
代理服务名称。

条件参数

-node
目标所在的节点。
-server
目标所在的服务器。
-cluster
目标所在的集群。

可选参数

-requestDestination
代理请求目标的名称。
-replyDestination
代理应答目标的名称。
-wsdlLocation
代理 WSDL 文件的位置。 这是 Web 地址。

示例

下列内容是一组命令序列的最小示例,该组命令通过入站和出站 SOAP over HTTP 协议连接创建全功能代理服务:
  1. 创建代理服务,其中,wsgw 是网关实例:
    • 使用 Jython:
      proxyService = AdminTask.createWSGWProxyService(wsgw, ["-name",
       "MyProxyService", "-node", "MyNode", "-server", "server1"])
    • 使用 Jacl:
      set proxyService [$AdminTask createWSGWProxyService $wsgw {-name
       "ProxyService" -node "MyNode" -server "server1"}]
  2. 获取网关服务的入站服务,其中,busName 是服务集成总线的名称:
    • 使用 Jython:
      inServiceName = AdminConfig.showAttribute(proxyService, 
       "inboundServiceName")
      inService = AdminConfig.getid("/
       SIBus:"+busName+"/SIBWSInboundService:"+inServiceName+"/")
    • 使用 Jacl:
      set inServiceName [$AdminConfig showAttribute $proxyService
       "inboundServiceName"]
      set inService [$AdminConfig getid 
      /SIBus:$busName/SIBWSInboundService:$inServiceName/]
  3. 添加 SOAP over HTTP 端口,其中,已配置 SOAP over HTTP 1 端点侦听器:
    • 使用 Jython:
      inPort = AdminTask.addSIBWSInboundPort(inPort, ["-name", "SOAPHTTPPort",
       "-endpointListener", "soaphttp1", "-node", "MyNode", "-server", "server1"])
    • 使用 Jacl:
      set inPort [$AdminTask addSIBWSInboundPort $inPort {-name "SOAPHTTPPort"
       -endpointListener "soaphttp1" -node "MyNode" -server "server1"}]
  4. 完成入站服务和出站服务以及端口的配置。 例如,应用 JAX-RPC 处理程序WS-Security
注:
确保所有服务请求者都将 operationMode 查询字符串参数追加到代理服务的地址中。 此参数的值是 onewayrequestResponse,缺省值是 requestResponse。 例如:
  • 对于 HTTP 操作,如果代理服务的 Web 地址为
    http://host_name:port_number/wsgwsoaphttp1/soaphttpengine
    /your_bus/ProxyService/ProxyServiceInboundPort
    则发出请求的客户机指示他们正在使用以下 URL 来发送单向请求:
    http://host_name:port_number/wsgwsoaphttp1/soaphttpengine
    /your_bus/ProxyService/ProxyServiceInboundPort?operationMode=oneway
  • 对于 JMS 操作,如果代理服务的 JMS 地址为
    jms:/queue?destination=jndi_queue&connectionFactory=
    jndi_factory&targetService=your_bus/ProxyService/ProxyServiceInboundPort
    则发出请求的客户机指示他们正在使用以下 URL 来发送单向请求:
    jms:/queue?destination=jndi_queue&connectionFactory=
    jndi_factory&targetService=
    your_bus/ProxyService/ProxyServiceInboundPort&operationMode=oneway