我正在使用自动生成的(wsdl2Java)org.apache.axis.client
连接到外部Web服务并获取一些数据。通过SSL进行连接,但其证书已过期。他们确实获得了新证书,尽管以某种方式,因为我获得了PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed
,他们的旧证书已缓存在我的服务器上。而且我只会在服务器上收到此错误,当我在本地计算机上运行Web应用程序时,它运行正常,它们的当前证书也被获取。杀死所有Java进程并在服务器上重新启动Tomcat无效,因此我试图将其设置为始终信任证书,但这也不起作用。
AxisProperties.setProperty("org.apache.axis.components.net.SecureSocketFactory", "org.apache.axis.components.net.SunFakeTrustSocketFactory");
或AxisProperties.setProperty("axis.socketSecureFactory", "org.apache.axis.components.net.SunFakeTrustSocketFactory");
应该可以根据我在互联网上看到的内容工作。我仍然遇到相同的错误。
我可以为每次通话设置它吗?我有org.apache.axis.client.Call
并在其上调用invoke。
org.apache.axis.client.Call _call = createCall();
_call.setOperation(_operations[1]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("");
_call.setEncodingStyle(null);
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("", "CreateOperation"));
setRequestHeaders(_call);
setAttachments(_call);
try {
java.lang.Object _resp = _call.invoke(new java.lang.Object[] {requestArg});
if (_resp instanceof java.rmi.RemoteException) {
throw (java.rmi.RemoteException)_resp;
}
...