【发布时间】: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