1

私はJavaやEclipseなどを使用したWebサービスプログラミングについて読んでいますが、その人が次のようにしてWebサービスとクライアントを作成した特定の例を見つけました。

  1. WebサービスのJavaクラスを定義します(インターフェース+ impl)
  2. Endpoint.publishを使用してWebサービスをデプロイします
  3. WebサービスのURLからwsdlを取得します(例:localhost://greeting?wsdl)
  4. wsimportを使用してスタブを生成します
  5. 生成されたスタブを使用してクライアントクラスを作成する

Webサービスを公開してダウンロードせずにwsdlを生成する別の方法はありますか?おそらく、wsdlとクライアントスタブを自動生成するためのMavenプラグインですか?

更新:新しい質問を作成するのではなく、これに便乗します。

インターフェイスを定義してWebサービスを作成しました。

@WebService
public interface HelloWorldWs {
    @WebMethod
    public String sayHello(String name);
}

およびimplクラス:

@WebService(endpointInterface = "com.me.helloworldws.HelloWorldWs")
public class HelloWorldWsImpl implements HelloWorldWs {
    @Override
    @WebMethod
    public String sayHello(String name) {
        return "Hello World Ws, " + name;
    }
}

wsgenを実行すると、次のエラーが発生します。

The @javax.jws.WebMethod annotation cannot be used in with @javax.jws.WebService.endpointInterface element.

Eclipseはそれで大丈夫のようです。

なぜですか?

もともとアノテーションがなかったのですが、Webサービスを呼び出そうとすると、次のエラーが発生しました。

com.me.helloworldws.HelloWorldWsImpl is not an interface
4

2 に答える 2

1

JSR 224は、3.1セクションで次のように述べています。

SEIは、次のすべての基準を満たすJavaインターフェイスです。

  • そのメソッドのいずれにもjavax.jws.WebMethod注釈を付けることができます(7.11.2を参照)。
  • javax.jws.WebMethodexclude使用する場合は、要素をに設定してはなりません(MUSTNOT)true

実装クラスにが含まれている場合、仕様によれば、それをjavax.jws.WebMethod置くことはできず、それは不可能です。@WebMethod(exclude=true)

Eclipseのカスタムバージョンに依存し、これに対する警告を表示します。たとえば、Rational Application DeveloperforWebsphereは次のことを示しています。

JSR-181, 3.1: WebMethod cannot be used with the endpointInterface 
              property of WebService
于 2013-01-18T17:41:25.827 に答える
0

プロジェクトをプログラミング/構築している間(いくつかの高度なIDEを使用)、通常、自動生成されたものの間にプロジェクトを見つけることができるはずです-IDEがそれを生成する必要があります。よく確認してください。

于 2013-01-18T17:35:45.720 に答える