19

RSA 7.5 および Websphere 7 サーバーを使用して IBM JAX_WS Web サービスを開発しようとしています。私は初心者なので、Java クラス ファースト アプローチに従っています。つまり、最初に Java クラスを作成してから WSDL ファイルを生成しています。

wsdl ファイルを作成しようとすると、例外が発生します。

java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationsException クラスに同じ名前「planId」の 2 つのプロパティがあります

ここで参照されている私のクラスは次のようになります。

public class MemberDetails{
    @XMLElement(required=true)
    private String planId;
    //public getters and setters for the planId;
}

なぜこの例外が発生するのか、私にはわかりません。Google検索を介して、解決するためにいくつかの代替手段を試しましたが、どれもうまくいきませんでした:(

ノート:

これは、ワークスペース全体で使用している唯一の注釈です。これが他の注釈に依存しているかどうかはわかりません。しかし、@XMLElement(name="Plan",required=true)、@XMLType などのいくつかを試してみましたが、毎回この例外が発生します。

この例外は、wsgen 中に発生しています。( java.lang.reflect.InvocationTargetException )

編集

基本的に、Java サービス メソッドから wsdl を作成し、その WSDL を SOAP UI で開くと<!--Optional-->、すべての要素の先頭に到達します。このオプション タグ タグを削除したい<!--Optional-->ので、@XMLElement(required=true) アプローチを試して、SOAP UI で WSDL を開いたときに<!--Optional-->必須要素が表示されないようにしています。

私の概念によれば、@XMLElement(required=true) は minOccurs を 1、つまりゼロより大きい値に設定するため、SOAP UI で開いたときにオプションのコメントが WSDL から削除されます。しかし、残念ながら機能していないため、私の概念は正しくありません。WSDL が生成された後、minOccurs がまだ 0 であることを確認できます。

SOAP UI で WSDL を開くときにオプションのタグを削除する方法を説明してください。

よろしく、

4

2 に答える 2

44

デフォルトでは、JAXB(JSR-222)実装は、パブリックアクセサーメソッドと注釈付きフィールドを処理します。get / setメソッドもあるフィールドに注釈を付けると、次の例外が発生します。

フィールドに注釈を付ける場合は、次のように指定する必要があります@XmlAccessorType(XmlAccessType.FIELD)

@XmlAccessorType(XmlAccessType.FIELD)
public class MemberDetails{
    @XMLElement(required=true)
    private String planId;
    //public getters and setters for the planId;
}

または、プロパティに注釈を付けることができます

public class MemberDetails{

    private String planId;

    @XMLElement(required=true)
    public String getPlanId() {
        return planId;
    }
}

詳細については

于 2012-09-12T17:06:01.680 に答える
0

JAXB2.0の場合@XmlTransient、getter または setter でアノテーションを付けると、競合が回避されます。

詳細はこちら: http://docs.oracle.com/javase/8/docs/api/javax/xml/bind/annotation/XmlTransient.html

于 2014-10-13T20:48:41.430 に答える