1

私は Metro を使用しており、Web メソッド応答クラスに付けた JAXB アノテーションを wsgen が無視しているように見えるという問題に遭遇しました。

Web サービスを介して外部クライアントに公開したい一連のエンティティ クラスを返そうとしていますが、特定のクラス属性とメソッドを外部クライアントに表示したいだけなので、クラス アクセス タイプを PROPERTY に設定しました。 、および @XmlElement を使用してクラスの XML バージョンに含めたいすべての属性に注釈を付けました。

schemagen ant タスクを使用して、エンティティ クラスの XML スキーマを作成できます。これは、@XmlElement で注釈を付けていない属性またはメソッドを正しく無視しますが、wsgen を実行して、メソッドを持つ Web サービスの wsdl を作成すると、エンティティ クラスのセットを返すと、java.lang.NoClassDefFoundError が返されます。これは、wsgen がエンティティ クラスのパブリック メソッドを無視していないためと思われます。例外によって参照されるクラスは、このメソッドのパラメーターです。

メソッドに @XmlTransient の注釈を付けようとしたので、wsgen はそれを無視しましたが、役に立ちませんでした。wsgen が私の注釈に注意を払うようにするために何をすべきかを誰かが提案できれば、それは素晴らしいことです。

4

1 に答える 1

0

注釈付きのフィールド/プロパティは、アクセサーの種類に関係なく常に処理されます。@XmlAccessorType(XmlAccessType.NONE)注釈付きのフィールド/プロパティのみをマップとして扱うかどうかを指定する必要があります。

詳細については

于 2012-12-03T11:55:23.043 に答える