【问题标题】:Exception calling a web service from another web service从另一个 Web 服务调用 Web 服务的异常
【发布时间】:2015-08-03 11:18:26
【问题描述】:

我需要在另一个 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");

有人可以帮忙吗?

【问题讨论】:

    标签: java web-services axis2


    【解决方案1】:

    在研究了轴代码之后,我找到了解决方案。在使用 _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>
    

    再说一次,我不完全确定,我也不知道为什么使用独立线程可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多