【发布时间】:2013-03-13 13:40:57
【问题描述】:
我们公开了一个部署在负载均衡器后面的 Tomcat 实例上的 Web 服务。 Load-Balancer 只允许 HTTPS 流量,但 Jax-ws 端点指向 HTTP WSDL url 而不是 HTTPS。当客户端访问负载均衡器 HTTPS URL 时,它会被重定向到 HTTP,并且由于流量是 HTTP 在 LB 上被阻止,客户端会收到错误,因为 WSDL 无法访问。
sun-jaxws.xml 或 webservice 注释中是否有任何配置指定告诉 JAX-WS 公开 HTTPS url 而不是 HTTP。
下面是我的配置:
sun-jaxws.xml:
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'
version='2.0'>
<endpoint
name='/TestService'
implementation='com.test.service.TestServiceImpl'
url-pattern='/TestService' />
Annotation Config On WebService Impl class:
@WebService(serviceName="TestServiceImpl",
portName="TestService",
endpointInterface = "com.test.service.TestService",
targetNamespace="http://test.com"
)
@HandlerChain(file = "handlers.xml")
@MTOM
@XmlAccessorType(XmlAccessType.PROPERTY)
public class TestServiceImpl implements TestService{
//Implementation
}
如果有人能指出我正确的方向,那就太好了。
不同场景下的解决方案也请阅读评论
【问题讨论】:
-
您是否尝试过指向 WSDL 的 SSL 版本,例如使用 server:ssl_port/web_service?WSDL 而不是基于 server:port/web_service?WSDL 创建客户端?部署 WS 时应自动创建 WSDL 的 SSL 版本(如果配置了服务器 SSL)。
-
我指向的是 LoadBalancer 的 HTTPS url,但正如您在上图中看到的那样,WSDL url 指向的是 HTTP
标签: web-services jakarta-ee tomcat jax-ws load-balancing