BizTalk Adapter for FTP訪問小型機問題及處理

iDotNetSpace發表於2008-01-24

【轉】

作者:鄭佐
日期: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
< EDI_20071227140214.LOG;1
< EDI_20071227152250.LOG;1
<
< 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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章