一
前言
最近幫用戶解決了一個奇怪的PO問題
同一個接口,配置WEBSERVICE 發(fā)出能通過, 配置成 REST 發(fā)出系統(tǒng)報錯
InterfaceDetermination did not yield any actual interface
本文主要介紹追蹤這個報錯并解決的過程
二
問題描述
同一個接口, 配置成WEBSERVICE 調(diào)用測試成功,配置成REST調(diào)用測試報錯
開啟詳細(xì)日志之前. SOAPUI直接返回500錯誤及報錯信息. 消息無法在消息監(jiān)控其中查看, 但是可以在通道監(jiān)控器中看到報錯信息
Error while sending message to module processor: Sender Channel 'CCO_PMS_QMIS_P10061' (ID: c54145a5d6ab37c88091ad6f693b557c): Catching exception calling messaging system: InterfaceDetermination did not yield any actual interface
開啟詳細(xì)日志后(圖一), SOAPUI返回202成功信息(圖二)
圖一
圖二
消息進(jìn)入消息監(jiān)控器,看到報錯信息
圖三
三
問題解決過程
解決PO問題的大致過程
重新激活相關(guān)對象: Integrated Configuration / message mapping 等
通過INSPECT跟蹤報錯,獲取詳細(xì)報錯信息
google/bing報錯信息
根據(jù)報錯信息查找NOTES
檢查接口的所有配置對象,看看是否存在因為粗心而導(dǎo)致命名不規(guī)范的對象.
上述過程排名不分先后
01
查找NOTES
2628224 - Throwing com.sap.aii.adapter.xi.routing.RoutingException: InterfaceDetermination did not yield any actual interface
來自
https://launchpad.support.sap.com/#/notes/0002628224
notes的描述和報錯信息很像,但并沒有什么實際的用處.
02
監(jiān)控端口
使用INSPECTOR的方式
詳見鏈接無峰,公眾號:ABAP 技巧與實戰(zhàn)PO系列之 使用XPI_INSPECTOR跟蹤PO報錯
判斷報錯的信息是通道處理時報錯,因此嘗試通過INSPECTOR監(jiān)控動態(tài)的處理
分析監(jiān)視的報錯信息, (無法獲取接口對象),也看不出什么頭緒.
03
重建對象
因為報錯信息涉及到消息確認(rèn),所以初步懷疑是IC(Integrated Configuration)對象的問題.
刪除IC,SOAP調(diào)用接口報錯信息改變, 重新創(chuàng)建IC后, 恢復(fù)原來的報錯信息.
重建或重新激活對象的目的是更新緩存. 之前碰到過很多因為緩存更新不及時或緩存失效而導(dǎo)致的報錯.因此需要嘗試一下該方式
04
問題解決
最后重新檢查所有對象時發(fā)現(xiàn):
發(fā)出的SERVICE INTERFACE 中的MESSAGE TYPE 用錯了.
導(dǎo)致REST中的 ELEMENT NAME 和 SI 中的消息MESSAGE TYEP 不一樣.
REST通道通過地址
/RESTAdapter/MTO_PMS_QMIS_P10061
查找 ENDPOINT (圖四)找到通道, 通過通道中的ELEMENT NAME(圖五)找到消息, 通過消息找到SEND SERVICE INTERFACE(SI).
Element name 中定義的消息名沒有被SERVICE INTERFACE 使用, 導(dǎo)致系統(tǒng)報錯
InterfaceDetermination did not yield any actual interface .
而WEBSERVICE中沒有報錯的原因很簡單: SOAP的調(diào)用地址中指定了 SEND SI(圖六) ,無需查找. (通過參數(shù)interface )指定了SI 對象
圖四
圖五
圖六
四
總結(jié)
PO配置時會涉及到很多對象, 因此對象命名必須規(guī)范(最好每種對象的名稱字符長度都能固定),不符合規(guī)范的命名對象可以很方便的被發(fā)現(xiàn).
推薦使用WEBSERVICE方式定義接口, 因為相比REST接口, WEBSERVICE 定義的內(nèi)容更少,減少了出錯的概率.并且生成WSDL定義文件, 便于其它系統(tǒng)引入使用.
THE
END