【问题标题】:Invoking external web methods with BPEL + Apache Ode (calling .Net asmx) problems使用 BPEL + Apache Ode(调用 .Net asmx)问题调用外部 Web 方法
【发布时间】:2012-03-10 19:28:23
【问题描述】:

预告: 我正在学习使用网络方法(WM)的编排。我已经成功地完成了关于评估、调用 Web 方法和一些 BPEL 中的并行处理的课程。我正在使用带有 BPEL 插件的 Eclipse Indigo 3.7.1、带有 Apache Ode 作为编排基础的 Tomcat7 服务器。另一方面,我需要学习调用在 Mono .Net 平台上编写的安全 WM。

现在有: 现在我在调用任何网络方法时遇到问题。我做了: 1) 由 Mono .Net 运行的 Web 方法 - 可以使用浏览器 (http://localhost:8081/hwws.asmx) 和 Eclipse 工具“Web Services Explorer”进行测试,它工作正常。 2) 我的 BPEL 仅通过 SOAP 端口调用此 .Net Web 方法。 3) 在其他工作台上,我使用 Visual Studio 制作了 .Net 服务。也有错误,如果需要我稍后会发布它的文字。

问题:我在调用时遇到错误。

屏幕: 1) .net WS HW(helloWorld) 浏览器测试 http://photo -hosting.winsoftmagic .com/ 1/ s4nbwdsqib.jpg 2).net WS HWhttp://photo-hosting.winsoftmagic.com/1/zywnl2wtgu.jpg的Eclipse测试 3) 错误我得到http://photo-hosting.winsoftmagic.com/1/ltbexoxcdl.jpg

错误列表:

18:15:25,294 WARN ExternalService 故障响应:faultType=(unkown) 肥皂:客户端无法反序列化肥皂消息 18:15:25,376 ERROR INVOKE 调用期间失败: 18:15:25,382 INFO BpelRuntimeContextImpl ActivityRecovery:注册活动 11,失败原因:在通道 21

它稍后会给出超时错误。我已经花了一周的时间来解决这个问题,搜索了我能想到的所有方法。

编辑 12.03.2012:

现在由于某种原因使用单声道 WS 进行测试。 我尝试从互联网上调用 WS,它给出了与我在工作地点相同的错误:
14:25:16,177 错误 [INVOKE] 调用失败:发送消息时出错 (mex={PartnerRoleMex#hqejbhcnphr747jefui9ic [PID {http://wsaspx.tns/}inetWS-24] 调用 org.apache.ode.bpel.epr。 WSAEndpoint@1e3a4c7.checkText(...) Status ASYNC}):传入消息的输入流为空。 14:25:16,178 INFO [BpelRuntimeContextImpl] ActivityRecovery:注册活动 11,失败原因:发送消息时出错 (mex={PartnerRoleMex#hqejbhcnphr747jefui9ic [PID {http://wsaspx.tns/}inetWS-24] 调用 org.apache.ode .bpel.epr.WSAEndpoint@1e3a4c7.checkText(...) Status ASYNC}):传入消息的输入流为空。在 21 频道

此服务同时适用于所有测试表格。

编辑:16.03.2012

我的单声道方法在我不理解的情况下停止了工作。 TcpMon-1.1.jar 再次显示这样的消息:
POST /hwws.asmx HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "http://hwws.tps/HelloWorld"
User-Agent: Axis2
Host: localhost:8092
Transfer-Encoding: chunked <--- EDITED: REASON OF NOT WORKING ----

31c
<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<addr:To xmlns:addr="http://www.w3.org/2005/08/addressing">http://localhost:8092/hwws.asmx</addr:To>
<addr:Action xmlns:addr="http://www.w3.org/2005/08/addressing">http://hwws.tps/HelloWorld</addr:Action>
<addr:ReplyTo xmlns:addr="http://www.w3.org/2005/08/addressing"><addr:Address>http://www.w3.org/2005/08/addressing/anonymous</addr:Address></addr:ReplyTo>
<addr:MessageID xmlns:addr="http://www.w3.org/2005/08/addressing">uuid:hqejbhcnphr74k7fapcntd</addr:MessageID>
</soapenv:Header>
<soapenv:Body><HelloWorld xmlns="http://hwws.tps/">
<s0:st xmlns:s0="http://hwws.tps/">My test message</s0:st>
</HelloWorld></soapenv:Body></soapenv:Envelope>
0

HTTP/1.0 500 Internal Server Error
Date: Fri, 16 Mar 2012 08:01:50 GMT
Server: Mono.WebServer2/0.4.0.0 Unix
Connection: close
X-AspNet-Version: 4.0.30319
Content-Length: 366
Cache-Control: private
Content-Type: text/xml; charset=utf-8

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body><soap:Fault><faultcode>soap:Client</faultcode>
<faultstring>Could not deserialize Soap message</faultstring>
</soap:Fault></soap:Body></soap:Envelope>

实际上我得到了 3 个错误之一:无法反序列化,传入消息的输入流是 null 甚至是昨天的错误 411 :) P.s.有第四个错误,也没有套接字连接,但它们都消失了

我的主要目标是 ssl+authorisation .net 服务 - 如果您有示例,将不胜感激。 非常感谢大家!很高兴看到您的帮助:)

【问题讨论】:

  • 您在服务端看到任何错误吗?能否截取(可以使用TCPMon)ODE发给Mono服务的消息,检查是否正确。您可以使用SoapUI 使用截获的消息来测试webservice。
  • 您能否附上在attached image 中部分可见的请求xml 以及它的架构?
  • 您要求deploy.xml?这是photo-hosting.winsoftmagic.com/1/7dibhqqdc2.jpg图形+文本视图
  • 感谢您的回答!)由于某种原因,它今天可以正常工作而没有明显的变化 photo-hosting.winsoftmagic.com/1/ex638egujb.jpg 。关于 TcpMon-1.1.jar - 我已经用清单重新编译了它(使用问题帖子中的命令),所以它可以工作,但它没有收到任何消息。我试过改变端口。关于目标 - 现在需要在主机上完成。
  • 问题似乎是来自 Mono 服务的预期肥皂消息不是从 ODE 发送的。为了找到 SOAP 消息的问题(从 ODE 到 Mono 服务),您需要使用 TCPMon 截取消息。然后,您可以使用 SOAPUI 针对 Mono 服务测试消息。建议对“Web Service Explorer”使用 SOAPUI,因为 SOAP UI 会显示原始的 soap 消息并且易于排除故障。

标签: eclipse bpel webmethods apache-ode


【解决方案1】:

感谢大家,测试soap-body显示它很好,问题出在标题部分有一些奇怪的“Chunked”和xml之前的数字(长度为xml 文本)和 0 后 xml 结束。我只是设置了 http.request.chunk=false,现在它在我所有的测试中都可以使用。为此,从 http://ode.apache.org/endpoint-configuration.html 下载 sample.endpoint,将其重命名为 bpel 名称 (MonoCaller.bpel => MonoCaller.endpoint)。它具有已注释的分块字符串。并且还添加了类似 http.default-headers.authorization=Basic 用于授权目的,它现在也可以使用! :-]

【讨论】:

    【解决方案2】:

    同样的错误发生在我身上,问题出在网络服务本身,我有一个空的构造函数加上导致问题的方法,解决方案是 删除构造函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 2012-04-17
      相关资源
      最近更新 更多