我已将模板定义为
<bean id="template" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="messageSender">
<bean class="org.springframework.ws.transport.http.HttpsUrlConnectionMessageSender">
<property name="trustManagers">
<bean class="org.springframework.ws.soap.security.support.TrustManagersFactoryBean">
<property name="keyStore" ref="myTrustStore" />
</bean>
</property>
<property name="keyManagers">
<bean class="org.springframework.ws.soap.security.support.KeyManagersFactoryBean">
<property name="keyStore" ref="myKeyStore" />
<property name="password" value="${cdds.webservice.keystore_password}" />
</bean>
</property>
</bean>
</property>
它可以正常使用X证书,但只要我使用Y证书就会抛出以下错误
引起:org.springframework.ws.client.WebServiceIOException:I / O错误:来自服务器的文件意外结束;嵌套异常是java.net.SocketException:来自服务器的文件意外结束 在org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:561) 在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:390) 在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:383) 在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:373)
根本原因异常
引起:java.net.SocketException:来自服务器的文件意外结束
在sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:772)
在sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
在sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)
在sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
在sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
在java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
在sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:338)
在org.springframework.ws.transport.http.HttpUrlConnection.getResponseCode(HttpUrlConnection.java:143)
在org.springframework.ws.transport.http.AbstractHttpSenderConnection.hasError(AbstractHttpSenderConnection.java:46)
在org.springframework.ws.client.core.WebServiceTempl
ate.hasError(WebServiceTempl
ate.java:673)
在org.springframework.ws.client.core.WebServiceTempl
ate.doSendAndReceive(WebServiceTempl
ate.java:607)
在org.springframework.ws.client.core.WebServiceTempl
ate.sendAndReceive(WebServiceTempl
ate.java:555)>
然而,当我通过设置密钥库(Y证书)和密码通过SOAP UI调用相同的Web服务时,它工作正常。
无法理解,为什么代码会为Y证书抛出“来自服务器的意外结束”,因为它通过SOAP UI工作