1

我已经使用 CXF 框架从 WSDL 生成的 java 类创建了 Web 服务,该框架使用 spring-tomcat 上的 web 应用程序托管。我的端口绑定如下图所示。

<wsdl:service name="ServiceManagement">
        <wsdl:port binding="tns:ServiceManagementSOAP" name="ServiceManagementSOAP">
            <soap:address
                location="http://localhost:8080/XXXXX/services/ServiceManagementSOAP" />
        </wsdl:port>
    </wsdl:service>
  1. 我给网址http://localhost:8080/XXXXX/services
  2. 该服务器上托管的所有 wsdl 都显示在 CXF 服务列表中
  3. 当我单击单个操作时。它打开给我 wsdl, services/ServiceManagementSOAP?wsdl

至于现在一切都很好,因为我在本地机器上使用托管它。现在问题来了。当 Web 服务托管在不同的机器上并单击 CXF 服务列表中的单个 wsdl 时,它会给我找不到连接。当我验证时,我可以发现端点地址仍然是http://localhost:8080/XXXXX/services/ServiceManagementSOAP. 假设不是单击 WSDL url。提供 WSDL url 并将 localhost 替换为托管机器的 IP 地址,它可以正常工作。

所以现在的问题是。CXF 不会通过将 localhost 替换为 Web 应用程序的根上下文来处理端口绑定本身。如果没有,是否有解决方案来解决它。这样当我将 Web 服务移植到不同的机器时,它会自动更新 IP 地址。

4

2 回答 2

0

我有解决方法,因为我使用 tomcat6 插件来部署战争文件。当我在 url 中给出目标服务器的 IP 地址(如果它的本地主机,然后是 127.0.0.1)。然后服务器的 IPAddress 显示在端点中。

Endpoint address: http://127.0.0.1:8080/xxxxx/services/YYYYY
WSDL : {http://kp.com/aaaa/webservices/YYYY/}bbbb
Target namespace: http://kp.com/aaaa/webservices/YYYY/

因此,当您单击指向相应服务器的 WSDL 时。

但是我找不到,当我们从 tomcat manager url 部署它时该怎么做

于 2014-01-25T15:18:55.877 回答
-1

您可以将您的服务绑定到http://0.0.0.0:8080/XXXXX/services/ServiceManagementSOAP. 这是您无需分配特定 IP 并节省时间的最佳方式。

于 2015-08-19T07:00:37.817 回答