我已经使用 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>
- 我给网址
http://localhost:8080/XXXXX/services
。 - 该服务器上托管的所有 wsdl 都显示在 CXF 服务列表中
- 当我单击单个操作时。它打开给我 wsdl, services/ServiceManagementSOAP?wsdl
至于现在一切都很好,因为我在本地机器上使用托管它。现在问题来了。当 Web 服务托管在不同的机器上并单击 CXF 服务列表中的单个 wsdl 时,它会给我找不到连接。当我验证时,我可以发现端点地址仍然是http://localhost:8080/XXXXX/services/ServiceManagementSOAP
. 假设不是单击 WSDL url。提供 WSDL url 并将 localhost 替换为托管机器的 IP 地址,它可以正常工作。
所以现在的问题是。CXF 不会通过将 localhost 替换为 Web 应用程序的根上下文来处理端口绑定本身。如果没有,是否有解决方案来解决它。这样当我将 Web 服务移植到不同的机器时,它会自动更新 IP 地址。