gpt4 book ai didi

java - 无法使用 Java 和 CXF 连接到服务器上 war 文件中的 Web 服务

转载 作者:行者123 更新时间:2023-11-28 23:47:19 25 4
gpt4 key购买 nike

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

WARNING: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message.

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

Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

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

Loading KeyStore jssecacerts... Opening connection to :443... Starting SSL handshake...

No errors, certificate is already trusted

我使用 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" />

我发现一些文章展示了如何将证书加载到您的 keystore ,但这似乎不是问题所在,尽管这是此错误的常见解决方案。是不是我遗漏了什么或者是否有其他原因导致我收到此错误?

最佳答案

原来 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 复制到该目录并重新启动了所有内容并且它起作用了!

关于java - 无法使用 Java 和 CXF 连接到服务器上 war 文件中的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12713804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com