在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?
我會嘗試附加JProfiler並在這裏發佈結果。另外Axis2是開源的,所以很容易發現有問題的行...... – 2011-06-16 02:40:06
鑽入軸源代碼中時,它看起來像性能命中出現在DeserializationContext.parse方法中,當SAXParser解析方法被調用時。 – sapatos 2011-06-29 04:21:34