如何在CXF Web服务中将根上下文用作wsdl端点

时间:2013-07-22 18:40:20

标签: java web-services maven-2 jax-ws cxf

我使用在tomcat上使用spring-web app托管的CXF框架创建了使用WSDL生成的java类的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
  4. 至于现在一切都很好,因为我在我的本地机器上使用托管它。现在的问题是。当Web服务托管在不同的计算机上并单击CXF服务列表中的单个wsdl时,它会让我找不到连接。当我验证时,我发现端点地址仍为http://localhost:8080/XXXXX/services/ServiceManagementSOAP。假设不是点击WSDL网址。提供WSDL URL并将localhost替换为托管计算机的IP地址,它可以正常工作。

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

2 个答案:

答案 0 :(得分:0)

我有解决方法,因为我使用tomcat6插件来部署war文件。当我在url中提供目标服务器的ipaddress(如果它的localhost,然后是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

部署它时,我找不到,如何做到这一点

答案 1 :(得分:-1)

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