7

Endpoint.publish でできることとできないことの調査にしばらく時間を費やしましたが、文書化されていない領域にすぐに足を踏み入れたようです。

Endpoint.publish で 1 つ以上の @WebService アノテーション付きクラスを公開する単純なスタンドアロン アプリケーションを構築し、Endpoint.publish を使用できなくなった場合 (何らかの理由で)、最も単純な移行パスは何ですか? ?

sun-jaxws.xml とオプションで Metro jar を使用して WAR を作成し、組み込み Web サーバー (Jetty や Winstone など) にデプロイできることは知っていますが、単純な「このクラスを取得して、この URL で公開する」のが好きです。 XML または完全なコンテナーを使用しない Endpoint.publish() の API。

これを行う良い方法はありますか?

4

1 に答える 1

0

com.sun.net.httpserver.HttpServerのインスタンスを使用して、エンドポイントの HTTP 動作をカスタマイズできると言われています。APIに注意することは常に良い考えですcom.sunが、状況によっては適切な場合もあります。たとえば、SSL を提供するために使用できるHttpsServerサブクラスがあります。

プロセスは次のようです。

  1. HttpServer.create(new InetSocketAddress(listenPortNumber), waitQueueDepth)サーバー インスタンスの作成に使用します。
  2. server.createContext("/path")エンドポイントをホストするコンテキストを作成するために使用します。
  3. でエンドポイントを作成しますEndpoint.create(new RpcLitEndpoint())RpcLitEndpointがどこで定義されているのか、それが厳密に必要なのかどうかは明らかではありません。Metro JAX-WS の一部である可能性があります。
  4. を呼び出しendpoint.publish(context)て、エンドポイントをHttpServer(またはHttpsServer) インスタンスに関連付けます。

完了したら、 と を使用endpoint.stopserver.stopてシャットダウンします。

blogs.oracle.comには、カスタム ネットワーク トランスポートの作成について説明しているブログ エントリもあります。クイックスキャンで十分な理解を得るには十分な詳細がありませんでしたが、おそらくそれ以上のものを得ることができます.

于 2012-09-06T17:20:23.563 に答える