2009-08-22 14 views
4

私はJava Web Servicesにはまだまだ慣れていませんが、どこでも良い説明を見つけることはできません。複雑なオブジェクトを返すJAX-WS?

NetBeansに2つのJava Webプロジェクトがあります。
1つはWebサービスとして、もう1つはそのWebサービスのクライアントとして。
私は自分のクラス「Person」を作成しました。これは名前、dobなどの期待通りのものです。

返されるWebサービスメソッド「ListPeople()」を持っています「Person」オブジェクトの配列。

両方のプロジェクトでそのクラスを持つ必要がありますか?
オブジェクトをまずシリアル化する必要がありますか?
JAXBを使用する必要がありますか?その場合、どこから始めますか?

申し訳ありませんが、n00bの質問が、私は混乱しています。
これを達成する通常の方法は何ですか?事前

答えて

2
  1. おかげで、私は両方のプロジェクトでそのクラスを持っている必要がありますか?はい。

  2. まずオブジェクトをシリアル化する必要がありますか?いいえ。
  3. JAXBを使用すべきですか?もしそうなら、どこから始めますか?わたしは・・・しないだろう。私はJAXBを気にしないので、私はjavax.oxmインターフェースを好みますが、それは個人的な意見です。

個人的にはSpring web serviceを使用します。 Springユーザーになった場合は、これが最善の方法だと思います。もしそうでなければ、おそらくドキュメントは明らかにするのに役立つでしょう。

あなたのアプローチが嫌いなのは、サービスとクライアントの両方で、クラスとOXMコードに依存しているという理由があります。あなたは完全な同期で、両方の場所でそれを持っている必要があります。 1つを変更し、両方を変更する必要があります。

できれば私は依存関係を最小限に抑えようとしています。

この場合、XMLを前後に送信することができます。 XSDスキーマから始めます。クライアントとサービスがJavaオブジェクトの代わりにそれを処理するようにします。あなたのサービスは、Javaのような方法ではないクライアントにも使えるようになります。

この方法をとると、サーバ側のOXMだけを心配する必要があります。 XMLリクエストを受け取り、選択したJavaオブジェクトにマーシャリングし、処理のためにサービスレイヤ(注:Webサービスレイヤではありません)に渡します。レスポンスオブジェクトをXMLレスポンスストリームに変換し、Bobがあなたの叔父さんのものになるようにします。クライアントがそれに対処しましょう。

+0

私はクラスを両方のプロジェクトに追加しましたが、互換性のない型エラーが発生します。 サービス(WSポートから)をクライアントに割り当てようとしています。人 私は、webservice、webclient、およびクラスを持っていて、オブジェクトを転送したいと考えている段階を概説してください。サーバーとクライアントの間に 申し訳ありませんが、私はまだ理解できません。 – occhiso

+0

上記を参照してください。 JAXBは、オブジェクトをXMLにマーシャリングし、アンマーシャリングして戻す方法の1つに過ぎません。 – duffymo

+0

ええと、あなたが言っていることは理にかなっています。 Javaクラスを2つの場所に保持することは、あまり良いことではありません。私はこのSpringのものを読んでいますが、JAX-WSを使用する必要があると思います。情報をありがとう。 – occhiso

関連する問題