2012-02-12 9 views
0

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プロキシクラス(適切なアノテーション付き)を作成する方が簡単でしょう。

質問:

  1. JAX-RS(私の場合は、具体的ジャージーは、)エンティティのスキーマ定義(XSD形式)を公開する仕組みを持っていますか? WADL文書には、この種の情報は含まれていません。
  2. 私は手動でEmployeeリソースクラスを模倣したPOJOクラスの表現を作成できましたが、私はおそらく 'ツール'を使用しているはずです。私の選択肢は何ですか?
  3. 時間の経過とともに、私はEmployeeエンティティに要素を追加する必要があるかもしれません。これは、新しいバージョンのRESTfulサービスを作成する必要があることを意味しますか?
  4. Jerseyを自動的に生成してスキーマ定義を公開するように設定し、Employeeエンティティが不正な変更を防ぐためのインタフェースを実装している場合、Employeeの変更によってスキーマ定義が変更されるとします。
+0

ポイント3と4について:REST API URLを管理する必要があります。例えば、初期のバージョンでは '/ myservice/1.0.0/getlist'というURLがあります。 –

答えて

0

質問1については、XSDがWebアプリケーションにデプロイされている場合は、ブラウザでそのページに移動できます。たとえば、私のwebappには私のXSDを含む/xsdフォルダがあります。アプリケーションが実行されているとき私はブラウザをhttp://localhost:8080/<app_name>/xsd/<xsd_name>.xsdにポイントし、XSDを参照することができます。

+0

XSDファイルを手動で生成する必要がありましたか? – craig

+1

はい。しかし、私は、XSDからJavaコードを生成するためにmavenプラグインを使用します。あなたはもう一方の道を行くことができると私は理解しています。あなたはあなたのJavaコードを書いて、そこからあなたのXSDを生成することができます。個人的に私は前にそのようにしたことはありません。 – mark

+0

私は実装(ジャージー、私の場合)は、より良いパフォーマンスのためにキャッシュするオプションで、XSDを動的に生成することができると期待していた。 – craig

関連する問題