2

(Win64) サーバーを 8.5.3FP2 から FP3 にアップグレードしたときに、Domino Web サービス プロバイダーが壊れました。それに関する情報をXPage フォーラムに書きました。

Axis ベースのレガシーと戦う代わりに、Java 1.6 に付属する JAX WS を使用したいと思います。この非常に単純な例を試してみることにしました。Designer Eclipse の Java プロジェクトにコードをコピーして貼り付けて実行すると、ローカル マシンで Web サービスが起動して実行されました。Web サービスは応答し、WSDL を返しました。

次に、コード/Java 要素としてサーバー上の NSF にコードをコピーして貼り付け、次のように変更しました。

public static void main(String[] args)

public HelloWorldPublisher()

XPage で SSJS からこのコンストラクターを呼び出しました。このエラーが発生しました:

スレッド「メイン」の例外 com.sun.xml.internal.ws.model.RuntimeModelerException : パッケージを持たないクラスで @WebService.targetNamespace を指定する必要があります。クラス: HelloWorldImpl

クラスはパッケージでした。Domino サーバー JVM のコマンドラインでも実行すると、同じエラーが発生しました。グーグルの後、私はこれを追加しました

@WebService(targetNamespace="http://mycompany.net/dev/ph")

HelloWorldと_

@WebService(endpointInterface="com.mkyong.ws.HelloWorld", targetNamespace="http://mycompany.net/dev/ph", portName="HelloWorldPort", name="HelloWorld", serviceName="HelloWorldService")

NSF の HelloWorldImpl に追加して実行しますその後、Web サービスは稼働しているように見えました。

次に、サーバーが遅かったので起動しましたが、その後 WSDL が表示されませんでした。コードを何度も実行し、HTTP を再起動して、@WebService属性を削除しようとしました。また、サーバーでコマンドラインを使用してコードを再度実行しようとしましたが、常に上記の@WebService.targetNamespaceエラーが発生します。理由はわかりません。

これで、常に Domino コンソールに次のように表示されます。

java.lang.NoClassDefFoundError: com.sun.xml.internal.ws.api.streaming.XMLStreamWriterFactory (初期化失敗) java.lang.J9VMInternals.initialize(J9VMInternals.java:140) com.sun.xml.internal.ws.server.SDDocumentImpl.writeTo(SDDocumentImpl.java:266) com.sun.xml.internal.ws.transport .http.HttpAdapter.publishWSDL(HttpAdapter.java:538) at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:230) at com.sun.xml.internal.ws.transport .http.server.WSHttpHandler.handleExchange(WSHttpHandler.java:107) com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(WSHttpHandler.java:92) com.sun.net.httpserver で.Filter$Chain.doFilter(Filter.java:77)、sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:77) com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80) ) com.sun.net.httpserver の sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:569) にあります。Filter$Chain.doFilter(Filter.java:77) で sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:541) で java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897) でjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) で java.lang.Thread.run(Thread.java:738) で

サーバー上のこの URL にアクセスする場合:

http://localhost:9999/ws/hello?wsdl

これはJVM httpサーバーを使用していると思うので、Dominoログに何かが記録されることに少し驚いています。最初に機能した理由がわかりませんが、今ではこのクラスが見つかりません。

JAX WS エンドポイントをドミノ サーバーに公開するにはどうすればよいですか?

編集

ここから JAX WS jar をダウンロードしました。

http://jax-ws.java.net/

それらを\jvm\lib\extフォルダーに配置しました。WSDL URL が再び機能し始めました! また、エンドポイント URL にはいくつかの情報が含まれています。この機能は JVM 1.6 に含まれているはずなので、なぜこれをしなければならなかったのかわかりません。次に、エンドポイント コードで Domino オブジェクトを使用してみます。

JAX WS で Domino http サーバーを使用することは可能ですか?

ありがとう、

  • パヌ
4

1 に答える 1

1

JAX-WSはすでにNotes/Dominoに含まれています。開発中にラウンドトリップを行っているときに、サーバー内に不安定さが生じた可能性があります。

XPagesアプリケーションc/wSSJSおよびカスタムJavaアクセス内に8.5.3および9.0以降問題なくカスタムプロバイダーおよびコンシューマーを作成しました。

あなたは今あなたの問題を過ぎていますか?(もしそうなら、それに応じてこの質問を閉じてもらえますか:-)

于 2013-03-21T20:38:59.387 に答える