0

次のように定義された単純な Web サービス クラスがあります。

package com.me.basiccalcws;

import javax.jws.WebService;

@WebService
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

wsgenツールを使用してwsdlを生成します。

wsgen -classpath ..\bin -wsdl -s src -r wsdl -d bin com.me.basiccalcws.Calculator

次に、wsimportを使用してクライアント スタブを生成します。

wsimport -s src ..\_wsgen\wsdl\CalculatorService.wsdl

wsimportの実行後に生成されるファイルは次のとおりです。

Add.java
AddResponse.java
Calculator.java
CalculatorService.java
ObjectFactory.java
package-info.java

これらのファイルはすべて、元の Web サービス クラス (com.me.basiccalcws) と同じ名前空間を持っています。

これらのファイルを Eclipse プロジェクトにインポートすると、名前の競合が発生します。私の元のクラス名は Calculator でしたが、wsimportツールは同じ名前空間に Calculator という別のクラスを作成しました。

この名前空間/名前の衝突を防ぐにはどうすればよいですか (または意図的なものですか)?

4

1 に答える 1

1

最も簡単にできることはtargetNamespacejavax.jws.WebServiceアノテーションなどで を提供することです。

package com.me.basiccalcws;

import javax.jws.WebService;

@WebService(targetNamespace = "http://client.basiccalcws.me.com/")
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

-pでオプションを指定しない場合wsimport、これtargetNamespaceが destiny パッケージです。

于 2013-01-18T22:27:56.890 に答える