通过HTTPS连接到WebService的抛出SCL档案分配错误
题
我试图使用JAX-WS生成的类(使用的wsimport创建) 调用通过HTTPS连接一个Web服务从Java中 在应用服务器中的组成Sybase EAServer的5.3 即可。我得到的EAServer的日志,异常 以下是其根本原因(我已删除的网址 web服务)。
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
我敢肯定这是因为我需要设置的EAServer接受 本网站的SSL证书。连接代码本身 所有JAX-WS生成的,所以我没有实际创建连接 我。这需要在生成的类的地方。
任何想法如何正确配置EAServer中,使 的 com.sybase.jaguar.net.HttpsURLConnection.getInputStream 强>将 成功创建HTTPS连接的端点 web服务?
解决方案
我与Sybase支持合作,获得这一个解决。它涉及的EAServer更新使用Sun的安全提供者,而不是一个的Sybase的。内 Jaguar.props我们更新JVM选项是:
com.sybase.jaguar.server.jvm.options=-Djava.protocol.handler.pkgs=sun.security.provider.Sun|com.sun.net.ssl.internal.ssl
这让它使用Sun的安全提供者和我停下得到
SCL profile allocation
消息。
这样做后我开始从NullPointerException异常 JAX-WS类的日志(我证实是有关 配置JAX-WS的内EAServer的使用无关的SSL web服务)。
我不得不添加我生成web服务存根罐(即我使用创建的
的wsimport)到Jaguar.props财产
com.sybase.jaguar.server.java.classes
我还添加此生成的存根罐子和JAX-WS运行时库
到2个Jaguar.props属性
com.sybase.jaguar.server.jvm.bootclasspath.jars
和
com.sybase.jaguar.server.jvm.classpath.jars
然后我复制的JAX-WS运行时库和我的生成web服务
存根罐子到C:\Sybase\EAServer\java\lib
目录和一切
开始工作如飞。