java - 如何在 CXF Web 服务中使用根上下文作为 wsdl 端点

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

我使用 CXF 框架创建了 Web 服务,其中使用 CXF 框架从 WSDL 生成的 Java 类,该框架使用 spring - Tomcat 上的 Web 应用程序托管。我的端口绑定(bind)如下所示。

<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 应用程序的根上下文来处理端口绑定(bind)本身。如果没有,有没有解决办法。这样当我将 Web 服务移植到不同的机器时,它会自动更新 IP 地址。

最佳答案

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

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管理器url部署它时该怎么做

关于java - 如何在 CXF Web 服务中使用根上下文作为 wsdl 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794980/

相关文章:

java - MockClassLoader无法访问jdk/internal/reflect父类(super class)jdk.internal.reflect.MagicAccessorImpl

java - UTF 到 ASCII 的转换

java - 如何在 Maven 中对所有模块使用单个 checkstyle 抑制文件

java - 是否可以用 int[] 替换 Integer[]?

java - 根据 Activity 配置文件限制 spring 资源

java - Android 上的 Ksoap——从 Java Web 服务获取列表响应

java - 如何在 IntelliJ 中调试 Web 服务?

java - 从 jar 或类路径中的任何位置读取文件?

java - Maven : Multi Module order

java - 使 GUI 更具响应性