0

我正在尝试使用 Jax-WS 生成的类(使用 wsimport 创建)通过 HTTPS 连接从应用程序服务器Sybase EAServer 5.3的 Java 组件中调用 Web 服务。我在 EAServer 日志中收到异常,其根本原因如下(我已删除 Web 服务的 URL)。

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将成功创建到 Web 服务端点的 HTTPS 连接?

4

1 回答 1

0

我与 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消息。

完成此操作后,我开始从日志中的 JAX-WS 类中获取 NullPointerExceptions(我确认这与配置 JAX-WS 以在 EAServer 中使用有关,与 SSL Web 服务无关)。

我必须将生成的 Web 服务存根 jar(我使用 wsimport 创建的)添加到 Jaguar.props 属性 com.sybase.jaguar.server.java.classes

我还将这个生成的存根 jar 和 JAX-WS 运行时库添加到 2 Jaguar.props 属性 com.sybase.jaguar.server.jvm.bootclasspath.jarscom.sybase.jaguar.server.jvm.classpath.jars

然后我将 JAX-WS 运行时库和我生成的 web 服务存根 jar 复制到C:\Sybase\EAServer\java\lib目录中,一切都开始像冠军一样工作。

于 2009-11-23T16:25:46.437 回答