【问题标题】:Can't connect to web service in war file on server using Java and CXF无法使用 Java 和 CXF 连接到服务器上的 war 文件中的 Web 服务
【发布时间】:2012-09-24 16:40:08
【问题描述】:

我在 myEclipse 10.0 中使用 tomcat 6(嵌入式服务器)和 Apache CXF 来开发 Web 服务应用程序。我的问题是我正在尝试连接到一个服务器,该服务器有一个带有一些服务代码的 war 文件。但是,当我尝试通过代码点击它时,我从 CXF 收到此错误:

警告:拦截器已抛出异常,正在展开 org.apache.cxf.interceptor.Fault:无法发送消息。

然后这个错误似乎是根本问题:

引起:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径

我使用 InstallCert.java 访问服务器,它给了我这个:

正在加载 KeyStore jssecacerts... 正在打开与 :443 的连接... 开始 SSL 握手...

没有错误,证书已被信任

我使用 Porticle 查看了 cacerts 文件,果然服务器 sha1 和 md5 信息与服务器上的信息完全匹配。 cacerts 文件位于 java/jre6/lib/security 文件夹下,我认为它是在加载时由 tomcat 自动拾取的。

我还创建了一个 .bin 文件夹作为另一个想法,并将其放在 webapps 目录下用于 tomcat 并像这样修改服务器 xml:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="<path on my machine>/webapps/tomcat.bin" keystorePass="changeit" />

我发现一些文章展示了如何将证书加载到您的密钥库,但这似乎不是问题,即使这是此错误的常见解决方案。是我遗漏了什么,还是有其他原因导致我收到此错误?

【问题讨论】:

  • cxf 用户邮件列表可能是一个更有成果的地方。

标签: java web-services tomcat cxf myeclipse


【解决方案1】:

原来 myEclipse 有它自己的 jre 运行它自己的默认 cacerts 文件。在我的机器上它位于:C:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\jre\lib\security。

我使用 ProcessExplorer 查看 javaw.exe 进程,然后执行 Find(控制键 + F 键),它显示了已加载的附加 jre。我将正确的 cacerts 复制到该目录并重新启动了所有内容,并且成功了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2014-04-02
    • 1970-01-01
    相关资源
    最近更新 更多