我正在评估 Riftsaw 的使用情况,并一直遵循入门指南:
http://docs.jboss.org/riftsaw/releases/2.3.0.Final/gettingstartedguide/html/examples.html#d0e240
我已经在服务器上安装了 JBossAS 6、JBoss ESB 4.10 和 Riftsaw 2.3.0(我们将其称为 server1,IP 为 10.0.0.1,FQDN 为 server1.domain.com),并且可以从 server1 和我的开发 PC 顺利访问管理控制台。我已经部署了“Hello World”快速入门示例,我可以在两台计算机上的 Web 浏览器中通过 server1:8080/Quickstart_hello_worldWS?wsdl 查看 WSDL。在 server1 上,我还可以使用 localhost:8080/Quickstart_hello_worldWS?wsdl(请假设 URL 有 http:// 前缀 – 作为新用户,我只能使用 2 个超链接)。
我正在尝试使用 soapUI 来测试服务的调用。我创建了一个新的 sopaUI 项目,在“Initial WSDL/WADL”中输入 server1:8080/Quickstart_hello_worldWS?wsdl,然后收到“Unexpected element: CDATA”错误。查看 http 日志,soapUI 收到包含以下数据的 HTML:
404 未找到
未找到请求的上下文
在我的开发电脑上都发生过这种情况以及 server1 本身。
如果我使用 localhost:8080/Quickstart_hello_worldWS?wsdl 在 server1 上创建一个 soapUI 项目,它会成功处理 WSDL 并创建一个示例请求。但是,此请求的端点(在 WSDL 中)是 SERVER1:8080/Quickstart_hello_worldWS,如果我尝试提交它,则会返回“404”数据。使用 soapUI,我手动将端点编辑为 localhost:8080/Quickstart_hello_worldWS,它可以正常工作,返回预期的响应。
当我执行以下操作时,我也收到了“404”页面:
- 使用我的开发电脑上的网络浏览器打开 server1.domain.com:8080/Quickstart_hello_worldWS?wsdl
- 从我的开发电脑或 Web 浏览器中的 server1 打开 10.0.0.1:8080/Quickstart_hello_worldWS?wsdl
所以我的问题是,为什么 soapUI 只能读取 WSDL 并使用“localhost”发送请求,以及我如何使用服务器 DNS 名称来做到这一点?
答案1
我检查了 IE、Firefox 和 soapUI 发送的 HTTP GET 请求,发现 soapUI 将请求发送到 server1 的 IPv4 地址,而 IE 和 Firefox 将其发送到 IPv6 地址。我在 Firefox 的“about:config”中将“network.dns.disableIPv6”设置为 TRUE,然后 Firefox 收到与 soapUI 相同的 404 错误。
到目前为止,我已经运行了绑定到所有网络接口的 JBoss:
.\run.bat -b 0.0.0.0
我设法通过将 JBoss 绑定到 server1 的 IPv4 地址来解决此问题:
.\run.bat -b 10.0.0.1