簡體   English   中英

從另一個Web服務調用Web服務的異常

[英]Exception calling a web service from another web service

我需要在另一個Web服務中調用axis2 Web服務。 到現在為止,我一直在使用線程執行此操作。 我創建了一個線程並調用了Web服務,並且運行良好。

但是,實際上並不需要線程,因為無論如何我都需要放棄響應。 所以我更改了它並直接調用它,但是它返回以下錯誤

The server did not recognise the action which it received: 
    at es.cecabank.ealiapagos.servicios.wsimpl.operaciones.ws_operaciones_pagoconcargo.WS_operaciones_pagoConCargoSkeleton.realizarConciliacion(WS_operaciones_pagoConCargoSkeleton.java:471)
    at es.cecabank.ealiapagos.servicios.wsimpl.operaciones.ws_operaciones_pagoconcargo.WS_operaciones_pagoConCargoSkeleton.operacionesPagoConCargo(WS_operaciones_pagoConCargoSkeleton.java:174)
    at es.cecabank.ealiapagos.servicios.wsimpl.operaciones.ws_operaciones_pagoconcargo.WS_operaciones_pagoConCargoMessageReceiverInOut.invokeBusinessLogic(WS_operaciones_pagoConCargoMessageReceiverInOut.java:64)
    at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
    at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:488)
    at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:420)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
    at java.lang.Thread.run(Thread.java:745)

我正在努力尋找原因。 我看到操作像往常一樣在存根中設置。

_operationClient.getOptions().setAction("op3215");

有人能幫忙嗎?

研究軸代碼后,​​我找到了解決方案。 在使用_operationClient.execute(true)實際執行操作之前; ,我更改了消息上下文中的屬性。

_messageContext.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, true);

通過這種方式,目前。 我不知道它是否還會帶來其他影響。

至於錯誤的原因,我認為這與我正在調用的服務的定義有關。 對於輸入和輸出操作,它沒有特定的名稱:

<wsdl:operation name="op3215">
  <soap:operation soapAction="op3215"/>
  <wsdl:input>
    <soap:body use="literal"/>
  </wsdl:input>
  <wsdl:output>
    <soap:body use="literal"/>
  </wsdl:output>
</wsdl:operation>

代替

  <wsdl:operation name="op3215">
     <wsdlsoap:operation soapAction=""/>
     <wsdl:input name="op3215">
        <wsdlsoap:body use="literal"/>
     </wsdl:input>
     <wsdl:output name="op3215">
        <wsdlsoap:body use="literal"/>
     </wsdl:output>
  </wsdl:operation>

再說一次,我不確定,也不知道為什么使用獨立線程可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM