1

Enunciate を使用して、現在取り組んでいる Wicket Web アプリケーションの SOAP エンドポイントを生成していますが、まだ解決策がわからないいくつかの質問があります。

1 xsd ファイルの名前を変更するにはどうすればよいですか? FAQ を調べたところ、次のようなことを行うように指示されています。

<xml>
    <schema namespace="http://api.example.com/data" file="data.xsd"/>
</xml>

ただし、データ オブジェクトの targetNamespace を設定する方法がよくわかりません。@WebService ( targetNamespace="blah" ) を介してサービスに対してこれを実行しましたが、データ オブジェクトに注釈を付けて、どの名前空間に属すべきかを Enunciate に知らせるにはどうすればよいですか?

2 Enunciate は私の XSD を問題なく生成しますが、それが使用する要素名が特に好きではありません。ServiceRequest および ServiceResponse オブジェクトがあります。ServiceRequest オブジェクトには、User オブジェクトのリストがあります。ServiceResponse には Group オブジェクトのリストがあります。Enunciate は、ServiceRequest 内のすべての「User」オブジェクトがタグ「<users>」を使用する必要があることを示唆しています。タグには実際には単一のユーザーしか含まれていないため、単数形の「<user>」を使用する方が理にかなっていると思います。この動作を変更することは可能ですか?もしそうなら、どのように?

前もって感謝します。

4

1 に答える 1

2

明確にするために、スキーマファイルの命名に関する質問を除いて、質問は実際には Enunciate に関するものよりも JAXB に関するものです。JAXB は、Java オブジェクトが XML との間で (逆) シリアル化される方法を定義する仕様であり、Enunciate はその仕様に準拠しています。

とにかく、名前空間を Java オブジェクトに適用する最も簡単な方法は、Java クラスのパッケージに package-info.java ファイルを使用することです。パッケージに @XmlSchema の注釈を付け、名前空間を必要な値に設定します。

アクセサーが XML との間でシリアル化される方法をカスタマイズするには、@XmlElement アノテーションを使用します。例:

public class MyClass {
  ...
  @XmlElement (name="user")
  List<User> users;
  ...
}

ここに JAXB javadocs があります

https://jaxb.dev.java.net/nonav/2.1.9/docs/api/

または、Google で適切な JAXB チュートリアルを検索してください。

于 2010-10-11T15:36:24.837 に答える