【问题标题】:How to use root context as wsdl end point in CXF Web service如何在 CXF Web 服务中使用根上下文作为 wsdl 端点
【发布时间】:2013-07-21 15:00:06
【问题描述】:

我已经使用 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 地址。

【问题讨论】:

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


    【解决方案1】:

    我有解决方法,因为我使用 tomcat6 插件来部署 war 文件。当我在 url 中给出目标服务器的 IP 地址(如果它的本地主机,然后是 127.0.0.1)。然后在endpoint中显示服务器的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 部署它时该怎么做

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-07-21
        • 1970-01-01
        • 2012-05-02
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-02
        • 1970-01-01
        相关资源
        最近更新 更多