是否可以使用https协议(protocol)在tomcat上部署apache cxf-rs? 我看到很多使用嵌入式码头的例子,但我不想要它。
我应该在这里添加更多细节,我不知 Prop 体怎么做。我有以下配置:在 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: Protocol mismatch for port 8443: 引擎的协议(protocol)是http,url协议(protocol)是https
最佳答案
jaxrs:server 元素包含一个名为 publishedEndpointURL
的属性,而不是在地址属性中设置 https url,您可以在其中配置服务的 URL。在指定您可以将 Tomcat 配置为使用 HTTPS 或将您的 Tomcat 置于 Apache 服务器之后。
您可以找到更多信息here和 here ,注意这个链接是指WS技术,但是过程中使用了CXF,jaxrs:server和jaxws:endpoint的属性几乎一样。
关于tomcat - 可以使用带有 tomcat 的 cxf 来提供 https 服务(没有码头),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979079/