无法使用 Java 和 CXF 连接到服务器上战争文件中的 Web 服务



我在myEclipse 10.0中使用tomcat 6(嵌入式服务器)和Apache CXF作为web服务应用程序。我的问题是,我正试图连接到一个服务器,该服务器中有一个包含一些服务代码的war文件。然而,当我试图通过代码访问它时,我从CXF:收到了这个错误

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

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

由以下原因引起:javax.net.ssl.ssl握手异常: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文件夹作为另一个想法,并将其放在tomcat的webapps目录下,并修改了服务器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" />

我发现一些文章展示了如何将证书加载到密钥库中,但这似乎不是问题所在,尽管这是解决此错误的常见方法。是我遗漏了什么,还是我出现这个错误的另一个原因?

事实证明,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复制到了那个目录中,重新启动了一切,一切都正常了!

相关内容

  • 没有找到相关文章

最新更新