【问题标题】:Is is possible to have https service using cxf with tomcat(without jetty)是否可以使用带有 tomcat 的 cxf 提供 https 服务(没有码头)
【发布时间】:2014-06-01 10:49:00
【问题描述】:

是否可以使用https协议在tomcat上部署apache cxf-rs? 我看到很多使用嵌入式码头的例子,但我不想要它。

我应该在这里添加更多细节,我不知道该怎么做。我有下面的配置:在 web.xml

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <display-name>CXF Servlet</display-name>
    <servlet-class>
        org.apache.cxf.transport.servlet.CXFServlet
    </servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

在 cxf-config.xml 中:

<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

<bean id="smsserviceclass" class="com.isc.sg.services.rest.SmsGatewayService"/>
<jaxrs:server id="smsservice" address="https://localhost:8443/sg/smsservice">
    <jaxrs:serviceBeans>
        <ref bean="smsserviceclass"/>
    </jaxrs:serviceBeans>
</jaxrs:server> 

在 server.xml 中,SSL 在端口 8443 上启用,但我得到了这个异常: java.io.IOException: 8443端口协议不匹配:引擎的协议是http,url协议是https

【问题讨论】:

  • CXF-RS 与能否使用 HTTPS 有什么关系?只需在 Tomcat 上设置 HTTPS 并在其上部署 CXF-RS。
  • Thsnks Christopher Schultz,我为我的问题添加了更多细节,我尝试这样做,但我有例外
  • 对不起......我的联盟,在这里。这里的“Engine”是指CXF的引擎?这是 CXF 的“问题”,而不是 Tomcat。也许您必须专门配置“引擎”才能使用 HTTPS?
  • @ChristopherSchultz 我相信“引擎”指的是 Tomcat。
  • 另外,我看不到 Jetty 在这里发挥的作用——我所做的正是 OP 经常做的事情。 @MahtaMoradzadeh - 看看tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html(或您正在使用的 Tomcat 版本的等价物)。

标签: tomcat https cxf embedded-jetty


【解决方案1】:

jaxrs:server 元素包含一个名为 publishedEndpointURL 的属性,而不是在地址属性中设置 https url,您可以在其中配置服务的 URL。在指定您可以将 Tomcat 配置为使用 HTTPS 或将您的 Tomcat 置于 Apache 服务器之后。

你可以找到更多信息herehere,注意这个链接指的是WS技术,但是过程中使用了CXF,jaxrs:serverjaxws:端点具有几乎相同的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 2016-10-26
    • 2013-10-21
    • 2011-06-15
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多