如何在Apache CXF中使用HTTPS端点创建Web服务

时间:2012-04-21 14:22:28

标签: apache service web cxf

我将Apache作为我的Tomcat服务器的前端,我已经部署了一个CXF Web服务。所有对我的Web服务的访问都通过SSL进行,由Apache Web服务器处理。这意味着我的Tomcat服务器完全不知道SSL。因此,我的CXF生成的Web服务具有 http 端点URL。如何在向Apache Web服务器提供SSL处理的同时使其成为 HTTPS 。任何覆盖端点 URL方案的线索?

3 个答案:

答案 0 :(得分:2)

如果这样做,您还应该在publishedEndpointURL中设置正确的地址(使用HTTPS)。 就像这里:How to start cxf service on localhost but return external address in wsdl?

这将使生成的WSDL中的导入指向正确的URL。

答案 1 :(得分:0)

在这种情况下,您需要启用SSL connector for Tomcat(如果您在Apache中使用mod_proxy),或者您需要启用安全的AJP连接器(如果您使用mod_jk):

<Connector protocol="AJP/1.3" redirectPort="443" scheme="https" secure="true" address="127.0.0.1" port="8009" />

CXF在这里没有了。

答案 2 :(得分:0)

我遇到了同样的问题,并通过对基本URL使用JNDI查找,然后为publishEndpointUrl构建URL来解决它。在XML配置中,它看起来像这样:

  <jee:jndi-lookup id="ProxyURL" jndi-name="myProxyURL" resource-ref="true" cache="true" />     
 <bean id="EndpointURL"  class="java.lang.String">
    <constructor-arg value="#{ProxyURL+'/myServiceAddress'}"/>
     </bean>
 <jaxws:endpoint
    id="myServiceEndpoint"
    ...[other parameters]...
    publishedEndpointUrl="#EndpointURL">