createWSGWProxy服務指令

請使用 createWSGWProxyService 指令來設定閘道作為服務的 Proxy ,然後使用 JAX-RPC 處理程式來設定服務送入要求訊息的端點。

您可以依照這個主題中的說明,利用 wsadmin 工具,或依照 建立新的 Proxy 服務配置中的說明,利用管理主控台來建立新的 Proxy 服務配置。

如果要執行這個指令,請使用 wsadmin Scripting 用戶端的 AdminTask 物件。

[IBM i][IBM i]從 Qshell 執行 wsadmin Scripting 用戶端

服務整合匯流排指令有指令行說明:
  • 如需可用的閘道指令清單,以及每個指令的簡要說明,請在 wsadmin 提示下,輸入下列指令:

    print AdminTask.help('WSGateway')

  • 如需給定指令的概觀說明,請在 wsadmin 提示下,輸入下列指令:

    print AdminTask.help('command_name')

使用指令之後,請利用下列指令,儲存對主要配置所做的變更:

AdminConfig.save()

用途

此指令會建立具有關聯 InboundService 物件的新 ProxyService 物件,以及具有關聯 OutboundService 物件的 TargetService 物件。

然後,您可以使用 啟用服務整合匯流排的 Web 服務指令新增任何 InboundPortInboundService 物件相關聯的物件。 如需相關資訊,請參閱本主題結尾的工作範例。

目標物件

在其中建立 Proxy 服務的閘道實例的 ObjectName

這個指令會建立 Proxy 要求目的地和對應的回覆目的地。 Proxy 要求目的地已配置成更新回覆路徑,以新增 Proxy 回覆目的地。 如果具有指定或預設名稱的目的地已存在,則指令會失敗。

如果具有相同名稱的閘道服務或 Proxy 服務已存在,則指令會失敗。

如果您指定 Proxy 要求目的地的名稱,則會以衍生自 Proxy 要求目的地名稱的名稱來建立 Proxy 服務目的地及埠目的地。 否則,會以衍生自 Proxy 服務名稱的名稱來建立 Proxy 服務目的地和埠目的地。 Proxy 服務目的地名稱是透過將 ProxyService 新增至 Proxy 要求目的地或 Proxy 服務名稱來建立。 然後會以 Proxy 服務目的地命名每一個 Proxy 埠目的地,後面接著冒號 (:) ,後面接著埠名稱,後面接著 Port。 如果具有任何這些名稱的目的地已存在,則指令會失敗。

請指定節點和伺服器或指定叢集。 如果沒有為指定的節點和伺服器或叢集定義傳訊引擎,指令會失敗。

這個指令會建立與 Proxy 服務同名的 OutboundService 物件。 這項新的出埠服務會使用所建立的目的地、所提供的本地化,以及閘道實例的預設 Proxy WSDL 位置,或 (如果指定的話) Proxy WSDL 檔的位置。 新的出埠服務與 ProxyService 物件相關聯。

Proxy WSDL 只能有單一服務元素。 如果單一服務元素內有多個埠,則會為每一個埠建立一個出埠埠物件。

Proxy WSDL 應該絕不會來自 UDDI ,因此預設且被置換的 Proxy WSDL 位置只支援網址。

指令會使用 Proxy 目的地來建立與 Proxy 服務同名的 InboundService 物件,並使用預設或指定的 Proxy WSDL 位置作為範本 WSDL 位置。

必要參數

-name
Proxy 服務名稱。

條件式參數

-node
目的地本地化所在的節點。
-server
目的地本地化所在的伺服器。
-cluster
目的地本地化所在的叢集。

選用參數

-requestDestination
Proxy 要求目的地的名稱。
-replyDestination
Proxy 回覆目的地的名稱。
-wsdlLocation
Proxy WSDL 檔的位置。 這是網址。

範例

以下是建立具有入埠和出埠 SOAP over HTTP 通訊協定附件之完整功能 Proxy 服務的一系列指令的最小範例:
  1. 建立 Proxy 服務,其中 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
附註:
請確定所有服務要求者都在 Proxy 服務的位址中,附加了 operationMode 查詢字串參數。 這個參數值是 onewayrequestResponse,預設值是 requestResponse。 例如:
  • 對於 HTTP 作業,如果 Proxy 服務的網址是
    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 作業,如果 Proxy 服務的 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