在运行时替换SOAP端点的问题

时间:2016-07-14 20:03:17

标签: java web-services soap endpoint

我们正在尝试使用SOAP服务(在Java应用程序中),它在prod和pre-prod环境中具有不同的端点。我们使用wsimport生成客户端代码,并尝试使用绑定提供程序覆盖端点。

绑定提供程序在pre prod环境中工作正常(自动生成的代码来自pre prod环境wsdl)但是当我们尝试在生产环境中进行测试时,绑定提供程序无法覆盖端点。 在生产环境中,它会抛出“连接尝试连接到pre prod时连接失败”。 我们了解到绑定提供程序需要访问pre prod wsdl和prod wsdl才能覆盖端点。由于安全组限制,我们无法从prod访问proprod wsdl。

我们还试图通过在运行时从prod wsdl调用服务来读取终点,但是wsdl中的端口信息被硬编码到某个IP地址并且无法更改,修复prod wsdl是我们无法控制的。

还有其他方法可以在运行时覆盖端点吗?

2 个答案:

答案 0 :(得分:0)

您既可以使用类似UDDI的解决方案,也可以为SOAP端点保留版本,也可以使用网关服务。此单个服务将在运行时将内部调用内部指向不同的服务。

我更喜欢UDDI,因为它具有很大的灵活性。 参考:https://docs.oracle.com/cd/E17904_01/admin.1111/e15867/uddi.htm#OSBAG392

答案 1 :(得分:0)

问题的主要原因是存根有硬编码的QA端点。我修改了客户端存根代码,从代理生成的代码中删除了硬编码的端点,并且绑定提供程序开始正常工作。所有其他解决方案都很耗时,并且使用网关服务需要更改环境级别。