gpt4 book ai didi

web-services - 带有证书的 Spring-WS 客户端

转载 作者:太空宇宙 更新时间:2023-11-03 13:28:44 27 4
gpt4 key购买 nike

我是 Web 服务的新手,我需要编写简单的 spring-ws 客户端,通过 SSL 与服务器通信。情况是:

  • 我的客户端在我的 Glassfish 上的本地主机 ws 服务器上使用 http 运行良好(问题是远程服务器和 https)
  • 远程服务器工作正常。我将只处理它发送给我的数据
  • 我有服务器的 https 地址
  • 我有服务器提供商的客户端证书

我认为为此类任务找到一个简单的教程会很容易,但我很难找到类似的东西。真的很不寻常还是我有问题?你知道一些好的教程/书来创建这个吗?这可能是一些简单的快速步骤,我真的只需要连接到该服务器并从中获取数据。

我正在使用:

编辑:关于该主题的更多详细信息

我将客户端从我提到的教程中更改为使用我在本地主机上创建的网络服务(无 SSL)。它运作良好,请求和响应是正确的。然后我将其更改为与远程服务器一起使用。我生成了新类并在 ApplicationContext 中设置了服务器的新地址。第一个错误是缺少公共(public)日志库。我添加了它。然后出现新错误(该错误的简短版本):

org.springframework.ws.client.WebServiceIOException: I/O error: java.security.cert.CertificateException: No name matching certificatename found; nested exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching certificatename found

我使用 keytool 将我的证书添加到我的 jdk 中的 cacerts。它没有帮助。我发现了有关该错误的一些信息,并尝试在此处添加上一篇文章中的代码:

http://www.coderanch.com/t/557677/sockets/java/CertificateException-No-name-matching-hostname

它应该不是很安全,但我试过了。新错误是:

Exception in thread "main" org.springframework.ws.client.WebServiceTransportException: Internal Server Error [500]
at org.springframework.ws.client.core.WebServiceTemplate.handleError(WebServiceTemplate.java:663)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:587)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:384)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:378)
...

最佳答案

我解决了这个问题。我终于可以访问我们的 WS 服务器,所以我可以检查日志。它表明证书根本没有问题。消息正确到达服务器。当服务器试图解析我的消息时问题开始了,这失败了,然后服务器返回错误 500 并在日志中显示错误:

Unable to create envelope from given source

我和我的同事发现服务器在 Java 6 上运行,但我们的应用程序在 Java 7 上,我们尝试将我们的应用程序移动到 Java 7 私有(private)服务器上,一切正常。经过一些搜索,我们发现可能是解析器 xalan.jar 和 xerces.jar 有问题,更新它们也可以解决这个问题。无论如何,使用相同版本的 Java 应该是解决方案。

遗憾的是,我无法降级到 Java 6,服务器也无法升级到 Java 7(细节并不重要)。所以我使用 Axis 创建了全新的客户端,老实说,我很高兴我做出了这个决定。它从一开始就有效,而且更容易使用。如果有人感兴趣,这里是我的教程(最后还有如何使用生成的代码,我需要)

http://px.pats.no/px/Eclipse_tutorial.html

关于web-services - 带有证书的 Spring-WS 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475426/

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