7

次のように、JavaWebサービスクラスにメソッドのオーバーロードを実装したいと思います。

public String myMethod(User user)
{
    // My code
} 

public String myMethod(User[] user)
{
    for(int i=0; i<user.length; i++)
    {
        myMethod(user[i]);
    }
}

単一のUserオブジェクトをに転送する場合myMethod()は、最初のメソッドをトリガーする必要があり、sの配列を送信する場合はUser、2番目のメソッドをトリガーする必要があります。

WSDLファイルでは、単一のメソッドのみが表示されます。ただし、両方の呼び出しを呼び出そうとすると@WebMethod(operationName="")、WSDLファイルを生成できません。

4

2 に答える 2

16

Webサービスでは、操作のオーバーロードは許可されていません。WS-BP
では明示的に禁止されており、WSDL1.2でも禁止されています。 これをある程度サポートしているスタックを見つけたとしても、このアプローチに従わないことをお勧めします。 オーバーロードは概念です。それらをパラダイムに適用しようとしないでください

OOService Oriented

于 2012-04-25T16:48:04.260 に答える
5

Webサービスメソッドのオーバーロードは難しくありません。少なくともAxis1.4では、かなり簡単です。以下のようにサービスに2つのオーバーロードされたメソッドがある場合:

public String myMethod(String firstName, String lastName) throws RemoteException
public String myMethod(String name) throws RemoteException

次に、次のようなリクエスト:

http://localhost:8080/services/testService?method=myMethod&name=<name> 

2番目のメソッドを呼び出します。

そして、このようなリクエスト:

http://localhost:8080//services/testService?method=myMethod&firstName=<first_name>&lastName=<last_name>

最初のメソッドを呼び出します。

解決はAxisによって行われます。

于 2012-04-25T16:48:07.303 に答える