0

Jax-WS 生成クラス (wsimport を使用して作成) を使用して、アプリケーション サーバーSybase EAServer 5.3の Java コンポーネント内から HTTPS 接続を介して 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

これは、この Web サイトの SSL 証明書を受け入れるように EAServer をセットアップする必要があるためだと確信しています。接続コード自体はすべて Jax-WS によって生成されるため、実際に自分で接続を作成しているわけではありません。生成されたクラスで行われます。

com.sybase.jaguar.net.HttpsURLConnection.getInputStreamが Web サービスのエンドポイントへの HTTPS 接続を正常に作成するように EAServer を適切に構成する方法について何かアイデア はありますか?

4

1 に答える 1

0

これを解決するために、Sybase サポートと協力しました。これには、Sybase の代わりに Sun のセキュリティ プロバイダを使用するように EAServer を更新することが含まれていました。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 を取得し始めました (これは、EAServer 内で使用するための JAX-WS の構成に関連しており、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.jarsに追加し、 com.sybase.jaguar.server.jvm.classpath.jars

次に、JAX-WS ランタイム ライブラリと生成した Web サービス スタブ jar をC:\Sybase\EAServer\java\libディレクトリにコピーすると、すべてがチャンピオンのように機能し始めました。

于 2009-11-23T16:25:46.437 に答える