5

我正在使用 Coldfusion 10 构建 SOAP Web 服务,我在 IIS 7.5 上运行,Coldfusion 通过 AJP 1.3 连接器连接到独立的 Java Tomcat 服务器。

我的服务器将接受的 SOAP 请求的大小似乎达到了 4-8KB 的限制,如果超过该限制,则连接被重置 - 没有显示错误。

但在我的 CF 日志中,我得到:

The fault returned when invoking the web service operation is:<br> <pre>org.apache.axis2.AxisFault: Connection reset    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)     at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:197)      at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)      at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:402)      at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)   at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)     at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)      at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)   at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)    at reverserisk_ncm.Reverserisk_ncmStub.dumpHeader(Reverserisk_ncmStub... The specific sequence of files included or processed is: C:\rr1.5\Clarence\webservice\test_ncm.cfm, line: 36

我已经尝试了一些东西,首先我确保它是一个大小限制,添加 30 秒的睡眠会产生相同的结果,所以我尝试了:

  1. Coldfusion Max POST size 数据集设置为高值
  2. IIS 服务器配置 - system.web/httpRuntime.maxRequestLength -> maxInt 和 security.requestFilter.maxAllowedContentLength
  3. Apache Tomcat:conf/server.xml - AJP 1.3 连接器 maxPostSize/maxSavePostSize 值 -> 2MB
  4. 将 Axis2.xml 从 HTTP/1.1 更改为 HTTP/1.0 以强制禁用“分块”传输编码 - 我读到这可能是针对 DDOS 攻击的安全功能

如果有人遇到过类似的问题,那就太好了,我知道这也可能是一个 ServerFault 问题——但希望在 CF 上做 SOAP 的人也看到过类似的东西,谢谢!

4

2 回答 2

0

您可以尝试带附件的 SOAP (saaj) 吗?

如果您的 SOAP 信封可以将数据作为附件,您可以像这样拆分您的肥皂消息

1.元数据(在SOAP Envolope中)

2.数据(内容)作为SOAP附件

我不知道 CF 中的可能性,但是使用支持 SOAP 1.2 的工具应该可以做到这一点。

于 2013-01-15T06:44:35.870 回答
0

只是想知道,你需要轴 2 吗?你能试试 Axis 1 看看会发生什么吗?CF 10 将允许您在管理界面中更改该设置。

我推荐的另一件事是跟踪 CF 的日志并观察在发生这种情况时是否有任何消息报告给控制台。

这里还有一些其他需要测试的东西:

1) 如果您不拥有要连接的 Web 服务,请尝试下载 WSDL 并将其与您自己的 CFC 相关联。CFC 不必有任何实现,我们只是想看看在不调用其他服务时是否会出现不同的错误。

2)你能缩小问题的大小吗?例如,如果您调整 WSDL 的大小以使其足够小以使其工作,然后慢慢调整它的大小越来越大,您能否找到总是导致问题的 WSDL 大小?

3) 您是否尝试过删除 CF 创建的 Web 服务代理?我想它们在 {coldfusion10}/cfusion/wwwroot/WEB-INF/cfclasses 下。

基本上,我认为您需要找到一种方法,将无声的失败转变为提供更多信息的方法。

于 2013-01-14T18:46:19.167 回答