Siebel EAI- Web Service 常見錯誤彙總

由於項目原因部分代碼被模糊處理,有些問題待補充,歡迎指出錯誤,很多試探着理解的,研究的不夠深入。

問題1

Error invoking service 'XXX Service', method 'XXXXX' at step 'Invoke WebService'.(SBL-BPR-00162)
--
Fatal Error in XML Parser at line 1, column 1: Invalid document structure(SBL-EAI-00247)

答:XXXX 就是導入WSDL後生成的BS,編碼格式的原因導致報錯,所有發送和返回的Encoding應該是UTF-8

問題2

Siebel XSD does not support the use of <import> and <include> elements and the <any>
attribute. To implement the <import> or <include> functionality, place the schema definition into a
single file.

問題3

XML element names must be unique
in the document in which they are defined. This can cause a parsing problem if two integration
components have fields with the same name.

問題4

Unhandled Exception: The XML document cannot be converted to an XML hierarchy.(SBL-EAI-04110)
XML Hierarchy Converter error - empty input message, expecting an XML document in <Value> of input arguments(SBL-EAI-00246)
答:在用XML Converter轉換之前,數據類型應該是Binary的<但不是必須的,有時候是需要String類型的。

問題5

Invoke Webservice throw error:Cannot convert Integration Object Hierarchy to XML Hierarchy.  (SBL-EAI-04108)

Integration component type 'QueryXXXRequest' is not a valid child type for component type 'QueryTestHotBillRequest'(SBL-EAI-04008)
答:
Each integration component should have only valid children components, consistent with the integration object definition. There was a component type found that is not expected to be a child of another component. 

Corrective Action,Check whether the data contains a valid integration component structure. 

問題6

Invoke Webservice throw error:Fatal Error in XML Parser at line 5, column 5: Invalid document structure(SBL-EAI-00247)
Error invoking service 'HW Outbound Interface Service', method 'GenericWSInvoke' at step 'Invoke WebService'.(SBL-BPR-00162)
--
Fatal Error in XML Parser at line 5, column 5: Invalid document structure(SBL-EAI-00247)
************************End of Error Message:*****
答:可能的情況是返回的報文爲空,檢查是否ClearCache,是否使用新的wsdl

問題7

Invoke Webservice throw error:Unknown Part ':TestResponse'  for operation 'QueryBlackList' exists in SOAP message.(SBL-EAI-04304)
Error invoking service 'Outbound Interface Service', method 'GenericWSInvoke' at step 'Invoke WebService'.(SBL-BPR-00162)
--
Unknown Part ':TestResponse'  for operation 'WWWWWW' exists in SOAP message.(SBL-EAI-04304)
答:返回報文的頭結點“TestResult”錯誤,與IO的第一層IC->XML Tag不匹配
例如:
 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sub="http://www.Test.com/wsdl/esb/submitorder" xmlns:sub1="http://www.Test.com/schema/esb/submitorderresponse">
   <soapenv:Header/>
   <soapenv:Body>
      <TestResult>
         <PhoneNumber>555</PhoneNumber>
         <Status>1</Status>
         <Reason>555</Reason>
         <StartTime>1</StartTime>
         <EndTime>1</EndTime>   
     </TestResult>
   </soapenv:Body>
</soapenv:Envelope> 

問題8

Invoke Webservice throw error:HTTP Internet Exception during 'Data Send': 'The connection with the server was reset
', code: '12031'(SBL-EAI-04116)
Error invoking service 'Outbound Interface Service', method 'InvokeWS' at step 'WFInvokeWS'.(SBL-BPR-00162)
--
HTTP Internet Exception during 'Data Send': 'The connection with the server was reset
', code: '12031'(SBL-EAI-04116)

這個問題:HTTP Internet Exception during 'Data Send': 'The connection with the server was reset。原因是接口發起請求時,使用了一箇舊的鏈接或者是一個已經被外部系統釋放的鏈接。因爲我們siebel的connection的HTTPMaxIdleSeconds默認參數值1200秒,TimedOut超時時間是120秒。
所以每次使用的鏈接有可能是沿用舊的,或者是重新初始化一個新連接。如果一個釋放,一個繼續使用舊的就會引發上述問題。
修改方法很多:
1.在BS:EAI HTTP Transport有個入參ConnectionSubsystem,設置爲關閉即可。如果用webs,需要加入代碼了。
2.就是把EAI HTTP Transport的入參HTTPMaxIdleSeconds與下游系統設置一致。
3.與對端系統保持一致建立連接池

方法2的代碼:

function Service_PreInvokeMethod(MethodName, Inputs, Outputs) 
{
///////////////////////////////////////////////////////////////////////
// ------------ -------------- ------- ------------------
// Reason:An HTTP header "Connection" can be set to "Close" to instruct the web server at the other end to close the connection as soon as a reply is sent.
// this also helps EAI HTTP Transport to use a fresh new connection on every communication and helps avoid the connection reset error.
///////////////////////////////////////////////////////////////////////
if (MethodName == "SendReceive") 
{
//The default value for HTTPMaxIdleSeconds is 1200 seconds. 
//Inputs.SetProperty("HTTPMaxIdleSeconds", "0");
Inputs.SetProperty("HDR.Connection", "Close");
}
return (ContinueOperation);
}

問題9

WFInvokeWS throw error:Unknown Part 'http://www.Test.com/schema/esb/rms:RMSResponse'  for operation 'QueryMSISDN' exists in SOAP message.(SBL-EAI-04304)
Error invoking service 'Outbound Interface Service', method 'InvokeWS' at step 'WFInvokeWS'.(SBL-BPR-00162)
--
Unknown Part 'http://www.Test.com/schema/esb/rms:RMSResponse'  for operation 'QueryMSISDN' exists in SOAP message.(SBL-EAI-04304)
返回的第一層元素名字與實際IO的RootIC名字不一致。

問題10

Error running sub-process 'Outbound Interface Process' at step '123'.(SBL-BPR-00183)
--
Error instantiating process definition 'Outbound Interface Process' 
with a search specification:

Process is not associated with a business object.(SBL-BPR-00110)
 定義了一個入參“SearchSpec”,這個參數會導致Workflow必須對應一個BO,估計是觸發了隱藏參數,把這個入參名字修改後問題解決。

問題11

WFInvokeWS throw error:Fatal Error in XML Parser at line 8, column 63: Expected whitespace(SBL-EAI-00247)
Error invoking service 'Outbound Interface Service', method 'InvokeWS' at step 'WFInvokeWS'.(SBL-BPR-00162)
訪問服地址錯誤,導致返回的完全是空。

問題12

---------------------------
Siebel
---------------------------
WFInvokeWS throw error:Operation 'QueryYYYSub' of Web Service 'http://www.Test.com/schema/wsdl/esb/webservice/server/queryyyysub.QuerySYSSubInterfaceService' 
at port 'QuerySYSSubInterfacePort' failed with the following explanation: "Missing operation for soapAction [Query] and 
body element [Query] with SOAP Version [SOAP 1.1]".(SBL-EAI-04308)(SBL-EXL-00151)(SBL-EXL-00151)
遇到一次:典型的Web Service再通過代理BS調用接口時,請求報文結構類似(Property Set):
<?xml version="1.0" encoding="UTF-8"?>
<?Siebel-Property-Set EscapeNames="true"?>
<PropertySet>
<MessageType_clnRequestIOName MessageId="" IntObjectName="RequestIOName" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical">
<ListOfRequestIOName>
<RequestIOName>
......
</ListOfRequestIOName>
</MessageType_clnRequestIOName>
</PropertySet>
如果這個PropertySet的Root元素不是一個空的,而是MessageType_clnRequestIOName代替,也就是少了第一層結構,就會出現這樣的錯誤。

這僅僅是該問題出現的可能性之一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章