12-06-2017 05:01 PM
I have a call to proc soap that only periodically works despite nothing being changed. By this I mean the code does not change, the SOAP packet I'm sending does not change, I can run the soap call and it will work fine a dozen times in a row, then fail a bunch of times in a row.
Below is the error I get when it fails:
ERROR: org.springframework.ws.client.WebServiceIOException: I/O error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is 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
Initially I thought I may have been running out of disk space (causing an I/O error) but there is ample disk space.
I have no idea how to go about debugging or fixing this kind of intermittent message. My google-fu has failed me. Does anyone have any ideas of what could be happening?
12-06-2017 05:51 PM
Since it works sometimes, you must already have the certificate store configured as described here.
Still might be worth a review of your PROC OPTIONS results, especially the JRE options. Are you making a series of calls (like in a macro program) and they work...until they don't? Or are the failures happening across different SAS sessions? I'd be interested to know if the PROC SOAP calls work in a fresh session, but then begin to fail after many calls.
PROC SOAP uses the Java runtime under the covers, and that has a bit of overhead. Not that you want to go making changes to an established process, but if there is a REST method to accomplish what you want, PROC HTTP is leaner and meaner, especially in the recent versions of SAS 9.4.
12-06-2017 06:39 PM
Actually I haven't made any changes to the certificate store from the default installation. I was surprised that it worked seeing as that page says that SOAP over HTTPS requires the cert store to be updated. Once I got it working I had mentally ruled out those cert store configurations as a requirement.
The process I'm working on is a new process (in the development stage) so making changes is not a big deal but I did choose WSDL because the API documentation was better than the docs for the REST methods. If I can't resolve this then I guess I'll have to switch to using the REST methods.
The code doesn't run in a macro - I've just been resubmitting the same piece of code in order to test my dev code. Literally highlighting the block of code and pressing F3 multiple times to submit it. It seems to either run perfectly for many submits in a row, until a point where it will fail, and continue to fail multiple times in a row, and then starts to work again. ie. the success/fail results seem to all be clustered together.
12-06-2017 06:45 PM
If there is a REST method available and it's supported (skimpy doc notwithstanding), I'd go for that. We have lots of examples of PROC HTTP and REST APIs -- here are a few.