Connecting to WebService via HTTPS throws SCL Profile Allocation error
I'm trying to use Jax-WS generated classes (created using wsimport) to call a webservice over an HTTPS conn开发者_开发问答ection from within a Java component in the application server Sybase EAServer 5.3. I get an exception in the EAServer log with the following as its underlying cause (I have removed the URL of the webservice).
2009-11-15 18:39:58,338: ALL [Thread-19] - Caused by:
java.io.IOException: https://www.<my website url>.com:443: SCL profile
allocation
2009-11-15 18:39:58,338: ALL [Thread-19] - at
com.sybase.jaguar.net.HttpsURLConnection.getInputStream(HttpsURLConnection.java:521)
2009-11-15 18:39:58,338: ALL [Thread-19] - at
java.net.URL.openStream(Unknown Source)
2009-11-15 18:39:58,338: ALL [Thread-19] - at
com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.createReader(RuntimeWSDLParser.java:804)
2009-11-15 18:39:58,338: ALL [Thread-19] - at
com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.resolveWSDL(RuntimeWSDLParser.java:262)
2009-11-15 18:39:58,338: ALL [Thread-19] - at
com.sun.xml.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:129)
2009-11-15 18:39:58,338: ALL [Thread-19] - ... 18 more
I am pretty sure this is because I need to set up EAServer to accept the SSL certificate of this website. The connection code itself is all generated by Jax-WS so I am not actually creating the connection myself. It takes place in the generated classes.
Any ideas how to properly configure EAServer so that com.sybase.jaguar.net.HttpsURLConnection.getInputStream will successfully create an HTTPS connection to the endpoint of the webservice?
I worked with Sybase support to get this one resolved. It involved updating EAServer to use the Sun security provider instead of the Sybase one. Within the Jaguar.props we updated the JVM options to be:
com.sybase.jaguar.server.jvm.options=-Djava.protocol.handler.pkgs=sun.security.provider.Sun|com.sun.net.ssl.internal.ssl
This lets it use the Sun security provider and I stopped getting the
SCL profile allocation
message.
After doing this I started getting NullPointerExceptions from the JAX-WS classes in the log (which I confirmed was related to configuring JAX-WS for use within EAServer, nothing to do with the SSL Webservice).
I had to add my generated webservice stubs jar (that I created using
wsimport) to the Jaguar.props property
com.sybase.jaguar.server.java.classes
I also added this generated stubs jar and the JAX-WS runtime libraries
to the 2 Jaguar.props properties
com.sybase.jaguar.server.jvm.bootclasspath.jars
and
com.sybase.jaguar.server.jvm.classpath.jars
Then I copied the JAX-WS runtime libraries and my generated webservice
stubs jar to the C:\Sybase\EAServer\java\lib
directory and everything
started working like a champ.
精彩评论