定义 z/OS Connect 消息有效内容变换

IBM® z/OS® Connect 能够选择对用于调用 z/OS 操作系统上的业务资产的请求和响应有效内容进行变换。您可以通过实现 com.ibm.wsspi.zos.connect.DataXform 服务提供者接口 (SPI)(z/OS Connect 随附了该 SPI)来创建消息有效内容变换器,以满足特定需要。

关于此任务

z/OS Connect 提供了一个实现,它要求请求和响应消息格式为 JSON。此功能支持将请求转换为字节阵列,本地语言 COBOL、PL/I 或 C 结构可以映射字节阵列。通过使用 z/OS Connect 所提供的实用程序将目标程序或者副本的语言结构(包括 inout 参数的描述)用来生成绑定文件以及 JSON 请求和响应模式文件。当请求到达和返回响应时,z/OS Connect 使用此实用程序所生成的绑定文件来完成将数据从 JSON 格式转换为本机数据格式以及从本机数据格式转换为 JSON 格式。您可以使用 z/OS Connect 提供的 REST API 调用来检索请求和响应消息的 JSON 模式。

z/OS Connect 提供了 zosConnectService 配置元素,使管理员能够配置一组适用于特定服务的属性。dataXformRef 是这些属性中的一个属性,它指向要用于特定服务的数据变换配置。此任务描述如何请求使用 z/OS Connect 提供的数据变换器。

过程

  1. server.xml 文件中定义 zosConnectDataXform 元素。
    <!-- z/OS Connect data transformation provider --> 
    <zosConnectDataXform id="zosConnectXform"
    	bindFileLoc="/zosConnect/banking/bind/" 
            bindFileSuffix=".bnd"   
            requestSchemaLoc="/zosConnect/banking/reqSchema" 
            requestSchemaSuffix=".json"
    	responseSchemaLoc="/zosConnect/banking/respSchema" 
            responseSchemaSuffix=".json"/>  

    使用此示例,为完整起见,指定了所有文件位置相关属性定义(例如,bindFileLocrequestSchemaLocresponseSchemaLoc)。仅 bindFileLocrequestSchemaLoc 属性定义是必需的。如果未配置 responseSchemaLoc 属性,那么会使用 requestSchemaLoc 属性的值。

    使用相同示例,为完整起见,指定了所有后缀相关属性定义(例如,<bindFileSuffix><requestSchemaSuffix><responseSchemaSuffix>)。这些参数都是可选的。 如果未指定这些参数,那么预期 z/OS Connect 将装入的绑定和模式文件不会具有后缀。

    z/OS Connect 预期根据配置数据变换相关文件具有特定格式。
    • 绑定文件:<serviceName><bindFileSuffix>
    • 请求模式文件:<serviceName>_request<requestSchemaSuffix>
    • 响应模式文件:<serviceName>_response<requestSchemaSuffix>
    使用以下 zosConnectService 样本配置和先前 zosConnectDataXform 样本配置。
    <!-- z/OS Connect service definition --> 
    <zosConnectService id="zosConnectCustomer" 
    	serviceName="customer" 
    	serviceRef="wolaCustomerCreate" 
    	dataXformRef="zosConnectXform"/> 
    数据变换文件的名称为:
    • 绑定文件:customer.bnd
    • 请求模式文件:customer_request.json
    • 响应模式文件:customer_response.json

    有关与 zosConnectDataXform 元素相关联的可配置属性定义的更多信息,请参阅 z/OS Connect 功能部件的文档。

  2. 更新 server.xml 配置中您想要对其启用 z/OS Connect 提供的数据变换的每项服务的 zosConnectService 元素。
    <!-- z/OS Connect service definition --> 
    <zosConnectService id="zosConnectCustomer" 
    	serviceName="customer" 
    	serviceRef="wolaCustomerCreate" 
    	dataXformRef="zosConnectXform"/> 
  3. 可选:配置适用于所有服务的数据变换器。zosConnectManager 元素的 globaDataXformRef 设置为所配置的数据变换器的标识,以供全局使用。如果定义了全局数据变换器和服务数据变换器,并且请求使用所配置的数据变换器来接受服务,那么 z/OS Connect 将使用特地为该服务配置的数据变换器。
    <zosConnectManager id="zosConnectGlobalDefinitions
            globalDataXformRef="zosConnectGlobalDataXform"/>   
    
    <!-- z/OS Connect data transformation provider --> 
    <zosConnectDataXform id="globalDataXform" 
    	bindFileLoc="/zosConnect/banking/bind/"
            bindFileSuffix=".bnd"   
            requestSchemaLoc="/zosConnect/banking/reqSchema"
            requestSchemaSuffix=".json"
            responseSchemaLoc="/zosConnect/banking/respSchema"
            responseSchemaSuffix=".json"/>      
  4. 可选:配置 pollingRateupdateTrigger 之类的设置以对监视操作进行微调。 缺省情况下,将监视与数据转换定义相关联的目录以查找新文件和文件更新。有关这些配置属性的更多信息,请参阅 z/OS Connect 1.0z/OS Connect 1.2 下的 zosConnectDataXform 元素部分。
    <zosConnectDataXform id="globalDataXform" 
            bindFileLoc="/zosConnect/banking/bind/"
            bindFileSuffix=".bnd"   
            requestSchemaLoc="/zosConnect/banking/reqSchema"
            requestSchemaSuffix=".json"
            responseSchemaLoc="/zosConnect/banking/respSchema"
            responseSchemaSuffix=".json"
            pollingRate="500ms"> 
    </zosConnectDataForm>      

    在此示例中,将按每 500 毫秒一次的频率轮询 /zosConnect/banking/bind,/zosConnect/banking/reqSchema/zosConnect/banking/respSchema 目录以查找文件更新。如果未配置 pollingRateupdateTrigger 配置属性,那么将分别使用缺省值 polled2 seconds。如果不需要监视文件,那么可通过将 updateTrigger 属性设置为 disabled 来禁用文件监视。如果想要触发某些文件的手动刷新,请将 updateTrigger 属性设置为 mbean 并使用文件通知 MBean(即 com.ibm.ws.kernel.filemonitor.FileNotificationMBean)来触发更新;例如:

    String[] MBEAN_METHOD_SIGNATURE = new String[] {Collection.class.getName(),Collection.class.getName(),Collection.class.getName() };        
    JMXConnector jmxConnector = ...;        
    MBeanServerConnection mbsc = jmxConnector.getMBeanServerConnection();        
    ObjectName fileMonitorMBeanName = new ObjectName("WebSphere:service=com.ibm.ws.kernel.filemonitor.FileNotificationMBean");        
    
    List<String> paths = new ArrayList<String>();        
    paths.add("/zosConnect/banking/bind/customer.bnd");        
    paths.add("/zosConnect/banking/reqSchema/customer_request.json");       
    paths.add("/zosConnect/banking/respSchema/customer_response.json");        
    
    Object[] params = new Object[] { null, paths, null };        
    mbsc.invoke(fileMonitorMBeanName, "notifyFileChanges", params, MBEAN_METHOD_SIGNATURE);

    此示例使用 restConnector-1.0 功能部件触发 customer.bndcustomer_request.jsoncustomer_response.json 文件的更新。有关如何创建安全 JMX 连接的更多信息,请参阅配置与 Liberty 的安全 JMX 连接上的文档。


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

文件名:twlp_zconnect_msg_payload_conv.html