【问题标题】:How to call a web service from within a webservice如何从 Web 服务中调用 Web 服务
【发布时间】:2009-04-28 03:47:34
【问题描述】:

我正在尝试创建一个 Web 服务,它是另一个 Web 服务的消费者。这是布局。

我开发了一个 Java 类并用它创建了一个 Web 服务。

然后我使用 Eclipse 工具生成客户端存根和其他文件。

我将这些文件打包到一个 jar 中并在另一个项目中使用它。我测试了 jar 中的文件,我能够访问第一个 web 服务。

现在我从测试第一个项目的项目中创建了另一个 Web 服务。

现在,当我将客户端写入第二个 Web 服务时,它似乎无法找到第一个的存根。给我以下错误

org.apache.axis2.AxisFault: com/cats/patient/PatientDataStub
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
    at com.esps.patient.PatientDataESPSStub.getPatientByID(PatientDataESPSStub.java:186)
    at com.esps.patient.ESPSTestClient.main(ESPSTestClient.java:22)

我已经在所有项目中合并了所有的 jars。

【问题讨论】:

  • 这两个 Web 服务是否都存在于同一个应用程序服务器实例上?即在同一个tomcat战争中。
  • 对我来说不是很清楚-您的意思是说客户端与 WebService1 对话,而 WebService1 与 WebService2 对话。谁找不到 WebService2 的存根?是 WebService1 还是你在 Client 中得到这个?
  • Nathan,是的,这两个 web 服务都在同一个 tomcat 服务器实例上,但在不同的上下文中。 Bhushan,客户端无法找到 WS2 而不是 WS1 的存根。你做对了。
  • client ----> web service 1 ----> web service 2 有 ws1 stub jars
  • client ------------> web service 1 -----------> web service 2 cient 和 ws1 项目都有 ws2 存根类 jars

标签: java web-services axis2


【解决方案1】:

查看异常客户端发现了WS1的stub。读取响应时发生异常错误。

尝试tcpmon 看看请求和响应是什么。在 tcpmon 之前,您可以通过放置一些调试信息来检查 WS1 是否收到来自客户端的任何请求。

【讨论】:

  • 客户端与 WS1 对话,WS1 与 WS2 对话。我已经在客户端中打包了 WS2 的存根罐子,但仍然没有成功。我在 WS1 中使用 WS2 的存根而不是客户端,仅供参考。谢谢,但情况仍然存在
  • 伙计,你真的需要正确地提出你的问题,所以造成了很多混乱。再次阅读您的评论,您说客户与 WS1 交谈,但您放置了 WS2 的存根。如果您不将 WS1 的存根放入客户端,它将如何获取存根?
  • 对不起,我将再次尝试解释消耗客户端 ---------->WS1 ------ --------------------->WS2 有 ws2 并且有 ws2 存根罐 ws1 存根罐
  • 再次抱歉,这个东西不保留格式...再次客户端使用 WS1 和 WS1 使用 WS2.. WS1 包含 WS1 存根的 jars 并且客户端有 WS2 和 WS1 存根的 jars.. 这个是情景。希望更清楚
【解决方案2】:

如果您使用的是 Spring frawe 工作,那么我建议您使用 RestTemplate 从另一个 Web 服务调用另一个 Web 服务。

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    相关资源
    最近更新 更多