2011-06-16 80 views
1

在solaris上使用axis2我注意到message.getSOAPEnvelope()調用正在將服務器處理最大化爲0.0空閒。通話約需10秒鐘,然後處理負荷恢復正常。這對於單一方法尤其瘋狂,特別是內置於Axis的東西。Axis2 getSOAPEnvelope()性能問題

任何人都可以提出一個解決方案,我一直沒有能夠找到任何類似的在線。

// get message for sending 
Message message = getSOAPMessage(); 
... 
message=signSOAPEnvelope(message.getSOAPEnvelope()); //problem 
... 
SOAPEnvelope retMsg = (SOAPEnvelope) call.invoke(message.getSOAPEnvelope()); //problem 

--ADDITIONAL信息---

好了,所以問題就在於通過所謂的軸(未BTW Axis2的)TEH SAXParser.parse()方法。所以我用其他消息做了一些進一步的測試。

我的應用程序構建SoapEnvelope並將消息主體添加到它。我從另一個應用程序中接收了一條消息,我知道它正在工作,並且遵循soap信封構建,我用這個較老的xml覆蓋了消息字符串。所以SoapEnvelope在兩種情況下都是相同的,但是我從另一個項目中獲得的xml效果很好,而我的新xml則沒有。瘋狂的事情是舊的XML更大,所以應該花更長的時間。下面是相關的XML的例子,因爲我無法弄清楚爲什麼一個人應該工作,而另一個不工作。

工程確定:大舊的XML

<ns2:applicationDetailSearchQuery 
    xmlns:ns2="http://www.company.com.au/wib/ID/schema/query" 
xmlns:ns3="http://www.company.com.au/wib/Counterparty/schema/query" 
xmlns:tns="http://www.company.com.au/wib/icc/schema/query"> 

<tns:queryID scheme="http://www.company.com.au/treasury/idbb/queryid">44051</tns:queryID> 
<tns:queryType>ApplicationDetailSearch</tns:queryType> 
<tns:pageSize>10000</tns:pageSize> 
<ns2:parameters> 
    <ns2:tradeIdList> 
     <ns2:tradeId>111111</ns2:tradeId> 
    </ns2:tradeIdList> 
    <ns2:queryByHeadDealId>N</ns2:queryByHeadDealId> 
    <ns2:retrieveSchedule>N</ns2:retrieveSchedule> 
    <ns2:retrieveCashFlowDeals>Y</ns2:retrieveCashFlowDeals> 
    <ns2:dealType>BOND</ns2:dealType> 
</ns2:parameters> 
</ns2:applicationDetailSearchQuery> 

很慢:小XML ???

<ns5:querySetRequest setId="1" xmlns:ns2="http://schemas.company.com.au/ttt/icc/common/header-V2-0" xmlns:ns4="http://schemas.company.com.au/ttt/icc/Services/FXC/TradeEnquiryServiceEnvelope" xmlns:ns3="http://schemas.company.com.au/ttt/icc/common/envelopemsg-V2-0" xmlns:ns5="http://webservice.common.ttt/queryservice/types"> 
<ns5:query queryName="RemainingBalanceQuery" queryID="1"> 
    <ns5:parameter value="FWD:169805" type="String" name="KondorId"/> 
    <ns5:parameter value="0.9592" type="Decimal" name="ExchgRate"/> 
    <ns5:parameter value="USD" type="String" name="CurrencyCode"/> 
    <ns5:parameter value="09/08/2011" type="String" name="MatDate"/> 
</ns5:query> 
</ns5:querySetRequest> 

任何想法可能會導致這個第二套XML的過度CPU?

+0

我會嘗試附加JProfiler並在這裏發佈結果。另外Axis2是開源的,所以很容易發現有問題的行...... – 2011-06-16 02:40:06

+0

鑽入軸源代碼中時,它看起來像性能命中出現在DeserializationContext.parse方法中,當SAXParser解析方法被調用時。 – sapatos 2011-06-29 04:21:34

回答

0

這是一個SAXParser日誌過多的問題。當我設置日誌記錄來警告相關的軟件包時,它會以毫秒爲單位運行。瘋狂的事情!