java - Axis2 getSOAPEnvelope() 性能问题

标签 java performance apache-axis

在Solaris 上使用axis2 我注意到message.getSOAPEnvelope() 调用将服务器处理最大化到0.0 空闲。该调用大约需要 10 秒,然后处理负载恢复正常。这对于单一方法来说是疯狂的,尤其是 Axis 内置的方法。

任何人都可以提出解决方案吗,我在网上找不到类似的东西。

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

--附加信息---

好吧,问题出在 axis (不是 axis2 顺便说一句)调用的 SAXParser.parse() 方法上。所以我对其他消息做了一些进一步的测试。

我的应用程序构建 SoapEnvelope 并将消息正文添加到其中。我从另一个我知道正在运行的应用程序中获取了一条消息,并且在肥皂信封构建之后,我用这个旧的 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 吗?

最佳答案

这是 SAXParser 记录过多的问题。当我设置日志记录以警告相关包时,它会在几毫秒内运行。疯狂的东西!

关于java - Axis2 getSOAPEnvelope() 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366515/

相关文章:

java - 通过 https ://获取 XML 数据

mysql - 使用 ActiveRecord 解释 COUNT 查询

java - 使您的应用程序随服务器更新的最佳方式是什么?

JAVA char[] 到 Zip 到文件

java - 需要使用struts 1.3在jsp页面上显示数据

java - Java RMI 是 Axis2 SOAP 的良好替代品吗?

web-services - 如何使用网络服务创建树?

java - Java 中的 Web 服务和客户端(使用 Eclipse Apache Axis 2 Bottom Up Service) - 某些代码引发异常

java - 解析只是时间以获得差异

python - numba中的随机样本