ITPub博客

首页 > Linux操作系统 > Linux操作系统 > BizTalk Adapter for FTP访问小型机问题及处理

BizTalk Adapter for FTP访问小型机问题及处理

原创 Linux操作系统 作者:iDotNetSpace 时间:2008-01-24 15:45:46 0 删除 编辑

【转】

作者:郑佐
日期:2008-1-13
 
摘要
前段时间,笔者在实施一个BizTalk Server 2006 解决方案的时候,部分功能模块需要访问IBM小型机,结果在使用BizTalk Adapter for FTP时碰到问题,查找原因发现是FTP 接收适配器存在一些问题,不得不局部调整数据传输方式。由于问题特殊,因此笔者记下相关信息并提供解决方案以供碰到类似情况的技术人员参考。
 
异常现象
FTP 接收适配器在读取了小型机上的报文后无法删除小型机FTP服务器上的报文,但是已读取未删除的报文在发送端口上有传输,而且那些未删除的报文会不停的通过发送端口传输。如果对FTP适配器设置了本地临时目录,查看临时目录,会看到目录中有报文不被处理,而且数量同无法删除的报文数量相同。
 
分析原因
查看BizTalk运行情况和异常现象,一开始想到的是IBM小型机上的FTP授权存在问题,经过确认,不是该原因,因为通过FTP命令能够删除BizTalk FTP接收适配器无法删除的报文。顺便提一下有一个奇怪的现象,通过3.5版本的FLASHFXP连接到IBM小型机上的FTP服务器无法看到报文文件。IBM小型机采用OpenVMS V6.2操作系统。
 
看来可以缩小查找问题的范围了,打开BizTalk中对应的接收位置,打开FTP适配器的传输属性对话框。设置“日志”属性,指定值来保存FTP接收适配器的FTP操作命令日志。不出所料,查看生成的FTP日志找到了问题所在。
以下是部分日志内容:

> PWD
< 257 "EDI_MESSAGE:[MSG.EDI.XML]" is current directory.
> TYPE A
< 200 TYPE set to ASCII.
> PORT 10,90,1,23,13,47
< 200 PORT command successful.
> LIST *.LOG;*
< 150 Opening data connection for EDI_MESSAGE:[MSG.EDI.XML]*.LOG;* (10.90.1.23,3375)
<
< Directory EDI_MESSAGE:[MSG.EDI.XML]
<
< EDI_20071227140214.LOG;2
<                        130/144        27-DEC-2007 15:41:57 [EDIMSG]              (RWED,RWED,RE,)
< EDI_20071227140214.LOG;1
<                        130/144        27-DEC-2007 15:33:34 [EDIMSG]              (RWED,RWED,RE,)
< EDI_20071227152250.LOG;1
<                        182/198        27-DEC-2007 15:22:50 [EDIMSG]              (RWED,RWED,RE,)
<
< Total of 3 files, 442/486 blocks
< 226 LIST Directory transfer complete.
> TYPE I
< 200 TYPE set to IMAGE.
> PORT 10,90,1,23,13,48
< 200 PORT command successful.
> RETR EDI_20071227140214.LOG
< 150 Opening data connection for EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227140214.LOG;2 (10.90.1.23,3376)
< 226 Transfer complete.
> DELE EDI_20071227140214.LOG
< 550-Failed to delete file EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227140214.LOG;
< 550 The file specification must contain a version number (even if wildcarded).
> TYPE I
< 200 TYPE set to IMAGE.
> PORT 10,90,1,23,13,58
< 200 PORT command successful.
> RETR EDI_20071227140214.LOG
< 150 Opening data connection for EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227140214.LOG;2 (10.90.1.23,3386)
< 226 Transfer complete.
> DELE EDI_20071227140214.LOG
< 550-Failed to delete file EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227140214.LOG;
< 550 The file specification must contain a version number (even if wildcarded).
> TYPE I
< 200 TYPE set to IMAGE.
> PORT 10,90,1,23,13,59
< 200 PORT command successful.
> RETR EDI_20071227152250.LOG
< 150 Opening data connection for EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227152250.LOG;1 (10.90.1.23,3387)
< 226 Transfer complete.
> DELE EDI_20071227152250.LOG
< 550-Failed to delete file EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227152250.LOG;
< 550 The file specification must contain a version number (even if wildcarded).
> QUIT
< 221 Goodbye.

 
根据执行的FTP命令:
> DELE EDI_20071227140214.LOG
< 550-Failed to delete file EDI_MESSAGE:[MSG.EDI.XML]EDI_20071227140214.LOG;
< 550 The file specification must contain a version number (even if wildcarded).
 
可以看出在执行删除操作的时候,没有添加文件的版本号,导致小型机上的文件删除操作失败。如果FTP Adapter本身没有提供好的解决途径的话,那这个算不算是FTP Adapter的Bug?目前笔者也没查到有资料说适配器本身就不支持这种方式。
 
解决方式
根据以上分析无论怎么样,解决方式有许多,这里只介绍几种。
1.一开始想到使用FTP适配器属性上提供的Get 后和Get前设置。对其设置要执行的FTP命名(使用分号“;”分割命名)。但是由于是正式环境,不敢在小型机上测试,没有深入研究。
2.想到最简单的实现就是把报文从小型机传输到微机服务器。在IBM小型机上运行应用程序,通过该应用程序访问基于Windows 的FTP服务器,从而把传输报文到Windows平台由BizTalk进一步处理。
2.比较理想的实现还是使用IBM WebSphere MQ,通过中间一台Window服务器安装IBM WebSphere MQ 和 BizTalk MQSeries Agent,由Windows平台的WebSphere MQ同小型机上的WebSphere MQ进行消息交换。BizTalk Server可以通过MQSeries适配器访问Windows上的MQSeries间接同小型机交互,全过程实现事务支持。
 
其他说明
在使用BizTalk FTP适配器访问IBM小型机的时候,需要设置FTP适配器传输属性的“表示”项为“ASCII”,如果设置为“二进制”,笔者发现OpenVMS系统和Windows系统之间的报文交换会出现一些问题,不过设置成“ASCII”后,FTP适配器的临时文件夹功能就不会被支持,如果设置了临时文件夹你会收到“仅在发送或接收二进制表示类型的文件时才可使用临时文件夹”的错误提示。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-159329/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5329296