【发布时间】:2014-06-12 15:08:24
【问题描述】:
我尝试使用 https 协议实现一个 JAXRS 端点。我在这里按照http://cxf.apache.org/docs/secure-jax-rs-services.html#SecureJAX-RSServices-Configuringendpoints 的说明进行操作。
我在我的 XML 文件中声明了一个 jaxrs:server 端点,它依赖于 httpj:engine-factory。
一个日志文件告诉我我的服务已启动并且它正在运行,但如果我尝试连接到它,Firefox 网络浏览器会告诉我“错误:数据传输中断”(德语:“Fehler: Datenübertragung unterbrochen” )。 Web 服务(或 JAXRS 或 CXF)不会抛出错误消息。 Opera 只是说它无法连接到服务器。 Wireshark 告诉我客户端尝试重新连接服务器几次,然后客户端(网络浏览器)似乎放弃了。
我的配置如下:
<httpj:engine-factory id="httpsSettings" bus="cxf">
<httpj:engine port="8545">
<httpj:tlsServerParameters>
<sec:keyManagers keyPassword="...">
<sec:keyStore type="PKCS12" password="..." file="..."/>
</sec:keyManagers>
<sec:trustManagers>
<sec:keyStore type="JKS" password="..." file="..."/>
</sec:trustManagers>
<sec:cipherSuitesFilter>
<sec:include>.*_EXPORT_.*</sec:include>
<sec:include>.*_EXPORT1024_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:include>.*_WITH_NULL_.*</sec:include>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
<sec:clientAuthentication want="true" required="false"/>
</httpj:tlsServerParameters>
</httpj:engine>
</httpj:engine-factory>
<jaxrs:server id="cdmiSSLService" address="https://localhost:8545/"
depends-on="httpsSettings" beanNames="...">
<jaxrs:inInterceptors>
<ref bean="..."/>
</jaxrs:inInterceptors>
<jaxrs:providers>
<ref bean="..."/>
...
</jaxrs:providers>
<jaxrs:serviceBeans>
<ref bean="..."/>
...
</jaxrs:serviceBeans>
</jaxrs:server>
我应该补充一点,我此时只配置了一个 JAXRS 端点,如果我将 JAXRS 端点配置更改为 http 协议,一切正常,我可以毫无问题地连接到 Web 服务。
有人可以帮我在这里做什么吗?我知道这不是很多信息,但目前它并没有给我更多信息。请耐心等待,这是我第一次以这种方式实现它。我是这里的初学者。这是一个使用 Spring 框架的 Maven 多模块项目。配置需要通过jaxrs:server。
提前非常感谢!
【问题讨论】:
-
我发现 Apache CXF 的例子应该可以工作。也许它会帮助我解决我的问题。 svn.apache.org/repos/asf/cxf/trunk/distribution/src/main/…
-
Apache CXF 示例有效,它将帮助我找到解决问题的方法。我认为这是一个证书问题。我认为这与这个事实有关:svn.apache.org/repos/asf/cxf/trunk/distribution/src/main/…