帆子
作者帆子2021-11-27 10:12
售前技术支持, 国内某服务器生产商

使用Enterprise Extender实现IBM i服务器之间运行SNA应用(下)

字数 3053阅读 1024评论 0赞 0

承接上篇,本篇主要 讨论如何利用 EE ( Enterprise Extender )来实现分布式数据管理( Distributed Data Management )。

涉及分布式数据管理,我们主要为大家展示如何在两台机器之间实现:

  • 发送信息
  • 传送假脱机文件
  • 传送数据文件
  • 启动远程命令

先决条件

在实现上述功能之前,需要先进行相关配置。

第一步,启动子系统

键入如下命令:用以子系统 QSNADS 。
STRSBS SBSD(QSNADS)

键入命令:
WRKSBSJOB SBS(QSNADS)
用以查看并确认子系统 QSNADS 及其相关作业是否已经被启动。

第二步,添加用户目录条目

键入命令
ADDDIRE USRID(CHENBING AS4001) USRD('Chen Bing on AS4001') USER(CHENBING) SYSNAME(*LCL)
用以在 AS4001 上增加针对本地特定用户的一个目录条目。

键入命令
ADDDIRE USRID(ANY AS4002) USRD('Any User on AS4002') USER(NONE) SYSNAME(AS4002)
用以在 AS4001 及其增加针对远地服务器 AS4002 的任何用户的一个目录条目。

键入命令
WRKDIRE
用以查看并确认相关的用户目录条目是否已被添加。

在相关条目旁边键入选项 5 ,可以看到该条目的详细信息。

同样的用户目录条目添加操作需要在 AS4002 再做一遍。相关命令和上述一致,只是 AS4001 和 AS4002 的角色发生了对换。相关截屏如下:


第三步,配置分布式服务

键入如下命令,用以配置分布式服务。
CFGDSTSRV

可以看到主要需要配置涉及三方面的内容:

  • 分布式队列
  • 路由表
  • 对端系统名称表

通过依次键入如下命令,可以快速地在 AS4001 上完成相关设置:
ADDDSTQ DSTQ(AS4002) RMTLOCNAME(AS4002) DSTQTYPE(*SNADS) RMTNETID(APPN) LCLLOCNAME(AS4001)
ADDDSTRTE SYSNAME(AS4002) FAST(AS4002) STATUS(AS4002) DATAHIGH(AS4002) DATALOW(AS4002) TEXT(AS4002)
ADDDSTSYSN SYSNAME(AS4002)

设置后的相关信息显示如下:


同样地,可以在 AS4002 上按照上述命令再做一遍,唯一的区别是需要将 AS4002 改为 AS4001 。这里我就不截图了。

至此,相关配置已完成,接下来我就来为大家逐一展示分布式数据管理的各项功能。

传送假脱机文件

在 AS4001 上依次键入如下命令:
DSPLIB LIB(QMPGDATA) OUTPUT(*PRINT)
WRKSPLF

可以看到在 AS4001 的相关队列里,有一个名为 QPDSPLIB 的假脱机文件( Spool File )。

在其选项上键入 1 ,进行传送操作。这其实就会进入 SNDNETSPLF 的操作界面:

键入传送的目标用户,并回车确认。这就完成了将相关假脱机文件的传送工作。

*NOTE: 这里顺便做个补充,IBM i 也可以通过 SNDTCPSPLF 这个命令来进行基于 TCP/IP 的假脱机文件传输。那么在 WRKSPLF 操作界面里,选项 1=Send 到底是调用 SNDNETSPLF 命令,还是 SNDTCPSPLF 命令?答案是该选项的调用对象是可以进行设定的。在缺省状态下,该选项为调用 SNDNETSPLF 命令。我们可以通过增设环境变量 QIBM_SNDSPLF_OPT ,并令其值为 ‘TCP’ 来使该选项的调用指向 SNDTCPSPLF 命令。具体可参考下面的网页:
Sending a Spooled File via TCP When Working With Spooled Files - Dawn May Consulting (dawnmayi.com)

然后,切换至 AS4002 ,我们可以在相关用户队列里,看到由 AS4001 传过来的那个假脱机文件。

发送信息

在 AS4001 上键入如下命令:
SNDNETMSG MSG('Hello, This is Chen Bing on AS4001')
TOUSRID((CHENBING AS4002))

相关用户可以在 AS4002 上,通过键入如下命令,看到从 AS4001 发送过来的那条信息:
DSPMSG MSGQ(QUSRSYS/CHENBING)

传送数据文件

假设我们在 AS4002 上的已经有了相关文件,我们可以键入如下命令,来显示这些文件:
WRKF FILE(CHENBING/REPORT*)

接着我们键入如下命令,以试图将相关数据文件传送给 AS4001 上的特定用户。
SNDNETF FILE(CHENBING/REPORT2) TOUSRID((CHENBING AS4001))

然后,切换至 AS4001 ,特定用户可以通过键入如下命令,来显示相关信息:
DSPMSG MSGQ(QUSRSYS/CHENBING)

可以发现,在 AS4001 上,已收到一个由 AS4002 上的用户 CHENBING 发来的数据文件。

接着,特定用户可以通过依次键入如下命令,来正式接收这个数据文件。
CRTLIB LIB(CHENBING)
CRTPF FILE(CHENBING/REPORT1) RCDLEN(132) IGCDTA(*YES)
WRKNETF USER(CHENBING)

RCVNETF FROMFILE(REPORT1) TOFILE(CHENBING/*FROMFILE) USER(CHENBING)

接收以后,可以通过键入如下命令,来进行确认:
RUNQRY QRYFILE((CHENBING/REPORT1))

启动远程命令

在 AS4002 上,键入命令:
RUNRMTCMD CMD('WRKACTJOB OUTPUT(*PRINT)') RMTLOCNAME(AS4001) RMTUSER(CHENBING) RMTPWD(xxxxxxxx)

然后,切换至 AS4001 ,可以通过键入 WRKSPLF 来显示前述命令的执行结果:

特别地,如果远程命令里有单引号,为了区分最外围的单引号,可以通过两个单引号来进行转义,比如:
RUNRMTCMD CMD('CHGSYSVAL SYSVAL(QPFRADJ)
VALUE(''1'')') RMTLOCNAME(AS4001) RMTUSER(CHENBING) RMTPWD(xxxxxxxx)

然后,切换至 AS4001 ,键入 DSPSYSVAL 来显示前述命令的执行效果:

结语

至此,我们初步介绍了如何在 IBM i 上通过使用 EE ( Enterprise Extender )实现在服务器之间运行 SNA 应用。诚然, SNA 协议在业界属于 Legacy 的范畴,但在某些环境中可能仍旧在使用。希望本文能为此类的设置留一些记录和参考。谢谢!

参考网页:

1 , SNADS - SNA Distribution Services Overview (ibm.com)
2 , Configuring SNADS and Setting Up SNA Distribution Services (ibm.com)

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

X社区推广