3

私は石鹸とjax-wsの初心者です。

多くの情報を読んだ後、日食が石鹸メッセージをキャッチできることを知っていましたが、問題があります。

私の出版社

public static void main(String[] args) {
        Endpoint.publish("http://localhost:8081/WS/Greeting",
                new GreetingImpl());
    }

私のサイエンティスト

public static void main(String[] args) {

        GreetingImplService service = new GreetingImplService();
        Greeting greeting = service.getGreetingImplPort();
        System.out.println("------->>  Call Started");
        System.out.println(greeting.sayHello("friend !!!"));
        System.out.println("------->>  Call Ended");
    }

コンソールでクライアントを呼び出すと、

------->>  Call Started
Hello, Welcom to jax-ws friend !!!
------->>  Call Ended

したがって、それはワーキングサービスです。

しかし、TCP|IP モニターでは、空のリストが表示されます。

TCP|IP モニターの構成 ここに画像の説明を入力

私は何を間違えますか?

助けてください)

4

1 に答える 1

5

問題は、クライアントがポート 8081 (ws のポート) を直接指しているため、tcp/ip モニターが機能しないことだと思います。モニターはポート 8080 でリッスンしているため、クライアントは次のエンドポイントを使用する必要があります。

http://localhost:8080/WS/Greeting

TCP/IP モニターは http 要求を受け取り、メッセージを

http://localhost:8081/WS/Greeting

クライアントが使用するエンドポイントを変更するには、次の 2 つの方法があります。

  • クライアントがローカル wsdl ドキュメントを使用する場合 (たとえば、wsdl のコピーをファイル システムに保存し、それを使用して wsimport を呼び出した場合)、そのエンドポイントを変更できます (wsdl の末尾にある要素サービスを確認します)。 )。service.getGreetingImplPort() によって返されるスタブは、wsdl からエンドポイントを読み取ります。

  • この命令は、クライアントのメイン メソッドで使用できます。

      ((BindingProvider) greeting).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,"http://localhost:8080/WS/Greeting");
    
于 2013-11-04T22:09:16.643 に答える