web-dev-qa-db-ja.com

JAX-RS実装とは何ですか?

私はかなり前からJAX-RSの使い方を理解しようとしてきました。私は非常に基本的な概念から始めて、注釈スタイルのプログラミング、@ Path、@ Get、@ Postなどの意味を徐々に理解していきました。

私の理解では、多くの場所で言及されていることに関して、JAX-RSはJavaアノテーションをプレーンJavaオブジェクトに適用することに焦点を当てたフレームワークです(27ページ、Bill Burke、RESTful Java)。

それから私はこの点を超えて混乱しました。 JAX-RS自体がRESTfulWebサービスを実装するためにアノテーションを処理するAPIを定義するフレームワークである場合、「Jersey」や「JBoosResteasy」などの「JAX-RSの実装」の意味は何ですか。 JAX-RSの上に別のレイヤーがありますか?なぜそれらが必要なのですか?

誰かが私にそれについての洞察を提供できますか?どうもありがとう!!!

21
lixiang

JAX-RSは、Javaを使用したRESTfulWebサービスの仕様です。 Java EEに含まれているリファレンス実装がありますが、これは仕様であるため、Jersey、Resteasyなどを含む他のフレームワークを記述して仕様を実装できます。

25
Robby Pond

JAX-RSはJava Specification Request 311( JSR-311 )で定義されている標準であり、Jersey/RESTEasyはその実装です。

実装であるということは、仕様が「メソッドに@GET("/foo")を置くと(bar())、データXにアクセスできる」ということを意味します-今アプリサーバーでは、誰かが入ってデプロイされたコードを実際に読み取り、_@GET_アノテーションを使用してバイトコードを解析し、ユーザーが実際にたとえば http:// localhost/foo このWebリクエストを取得してbar()に到達し、bar()の戻り値をhttp回答に変換します(例:XMLまたはJSON)表現)。

したがって、「JAX-RS」という名前の仕様は、たとえば次の構文とセマンティクスのみを提供します。 @GETですが、リクエストの解析、適切なメソッドの呼び出し、結果値のマーシャリングなどの作業は、仕様を実装するパッケージで行う必要があります。

標準のバージョン2.0での作業は JRS-339 として開始されました。

参照 http://en.wikipedia.org/wiki/Jax-rs

29
Heiko Rupp