2つのWebサービス(RESTとSOAP)と対話するJersey-clientアプリケーションを作成しました。私は、RESTサービスが提供する従業員データを使用して、SOAPサービスを使用して新しいユーザーを作成します。RESTful Webサービスプロキシクラス
@Entity
@Table(name = "EMPLOYEE_TABLE")
@XmlRootElement
public class Employee implements Serializable {
...
}
私は明示的にエンティティクラスのスキーマ定義を作成していない:
RESTサービスは、Employeeエンティティを返すJAX-RS(ジャージー)アプリケーションです。
GETリクエストは、Employeeエンティティの表現を返します。
GET /employees/100
<Employee id='100' providerId='3345'>
<Link type="application/xml" href="/employees/100" rel="self"/>
<Name>Doe, Dr. John</Name>
<Departments>
<Department id='10'><Name>Emergency Medicine</Name></Department>
<Department id='56'><Name>Behavioral Medicine</Name></Department>
</Departments>
</Employee>
SOAPサービス(BusinessObjects Enterpriseのウェブ・サービスSDK)がその使用を簡素化するためにJavaクライアントを提供します。
私はEmployeeエンティティのXML表現を解析し、それをUserクラスの適切なセッターに割り当てることができますが、JerseyクライアントアプリケーションでEmployeeプロキシクラス(適切なアノテーション付き)を作成する方が簡単でしょう。
質問:
- JAX-RS(私の場合は、具体的ジャージーは、)エンティティのスキーマ定義(XSD形式)を公開する仕組みを持っていますか? WADL文書には、この種の情報は含まれていません。
- 私は手動でEmployeeリソースクラスを模倣したPOJOクラスの表現を作成できましたが、私はおそらく 'ツール'を使用しているはずです。私の選択肢は何ですか?
- 時間の経過とともに、私はEmployeeエンティティに要素を追加する必要があるかもしれません。これは、新しいバージョンのRESTfulサービスを作成する必要があることを意味しますか?
- Jerseyを自動的に生成してスキーマ定義を公開するように設定し、Employeeエンティティが不正な変更を防ぐためのインタフェースを実装している場合、Employeeの変更によってスキーマ定義が変更されるとします。
ポイント3と4について:REST API URLを管理する必要があります。例えば、初期のバージョンでは '/ myservice/1.0.0/getlist'というURLがあります。 –