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 Class has two properties of the same name "planId"
ここで参照した私のクラスは次のようになります。
public class MemberDetails{
@XMLElement(required=true)
private String planId;
//public getters and setters for the planId;
}
なぜこの例外が発生しているのか、私にはわかりません。グーグル検索を介して私はそれを解決するためにいくつかの代替案を試しましたが、それらのどれも私のために機能しませんでした:(
注:
これは、ワークスペース全体で使用している唯一の注釈です。これが他の注釈に依存しているかどうかはわかりません。しかし、@ XMLElement(name = "Plan"、required = true)、@ XMLTypeなどをいくつか試しましたが、毎回この例外が発生します。
この例外はwsgen中に発生します。 (Java.lang.reflect.InvocationTargetException)
[〜#〜]編集[〜#〜]
基本的に、Javaサービスメソッドからwsdlを作成し、そのWSDLをSOAP UIで開くと、<!--Optional-->
すべての要素の上部。このオプションタグを削除したい<!--Optional-->
タグ、したがって、@ XMLElement(required = true)アプローチを試みているので、WSDLをSOAP UI <!--Optional-->
は強制要素には表示されません。
私の概念によれば、@ XMLElement(required = true)はminOccursを1に、つまりゼロより大きい値に設定するため、SOAP UIで開いたときにオプションのコメントがWSDLから削除されます。しかし、残念ながら機能していないため、私の概念は正しくありません。WSDLが生成された後、minOccursがまだ0であることがわかります。
SOAP UIでWSDLを開いたときにオプションのタグを削除する方法を教えてください。
よろしく、
デフォルトでは 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;
}
}
詳細情報
JAXB2.0の場合、ゲッターまたはセッターで@XmlTransient
を使用して注釈を付けると、競合を回避できます。
詳細はこちらをご覧ください: http://docs.Oracle.com/javase/8/docs/api/javax/xml/bind/annotation/XmlTransient.html