2013-08-19 37 views
1

使用Jetty 7.0.2。服务在80和443端口上监听。在一个特殊的API中,我们需要连接到另一个服务器,该方案由来电决定:如果传入呼叫是HTTP,那么我们将通过HTTP到达另一个服务器;如果来电是HTTPS,那么我们将通过HTTPS访问其他服务器。如何知道Web服务调用中的连接是否通过HTTPS?

Web服务可以injecct在WebServiceContext对象,大家用用:

MessageContext ctx = (WebServiceContext)wsContext.getMessageContext(); 
String requestUrl = ctx.get("com.sun.xml.ws.transport.http.servlet.requestURL"); 

然后我们解析URL知道它的HTTPS/HTTP。

但是,当我们使用Jetty时,我们发现requestURL没有被注入。是否有另一种解决方法?

回答

1

我不太确定你正在运行的码头和Web服务。但如果它内部使用servlet,那么我相信HttpSerlvetRequest.isSecure()应该可以帮助你。

布尔的isSecure()

返回一个布尔值,指示该请求是否是使用 安全信道,诸如HTTPS制成。

+0

对不起,我没有把自己弄清楚......我使用嵌入式Jetty,并使用web应用程序上下文,没有可用的servlet上下文。 Jetty不会将Servlet注入MessageContext。有人知道如何? –