EJB モジュールを RESTful Web サービスとして使用できますか?
以下のような過去の質問がありますが、1年から3年前のものです。「ejb モジュールで RESTful Web サービスを作成できないのはなぜですか?」
それ以来、アップグレードはありましたか。
はい、これは可能です。Restful Web サービスは、最初は HTTP のコンテキストで説明されましたが、そのプロトコルだけに限定されているわけではないと思います。ただし、主要な HTTP 操作がどのように使用されるかについて十分な基礎知識があるとよいでしょう。
したがって、サービスを提供する Bean メソッドが基本的なルールに従う必要があります。
実装 EJB モジュールのコンテキストで注意すべき重要事項は次のとおりです。
資力
(1) リソースとは、ID を持つものすべてです。
(2) すべてのリソースには URI があります。
(3) URI は「不透明」であり、その実装の詳細を公開しません。
リソースとは、サービスの「通貨」として使用できるものです。クライアントが特定のメソッドから犬を表す特定の表現でオブジェクトを返す場合、クライアントはそのオブジェクトを使用して、犬を表す何かを必要とする可能性のある他のメソッドと対話できる必要があります。犬を表すそのオブジェクトが複数の場所で使用される場合は、識別子とそれを取得するためのメソッドがあります。メソッド名 + 識別子 = URI (一意のリソース識別子)。
プロトコル
(4) GET 操作は「冪等」であり、副作用がありません。
(5) 副作用のないリクエストでは、GET を使用する必要があります。
(6) すべての対話はステートレスです。
Bean メソッドを getDog(Long dogID) の形式で実装したい場合があります。dogID 識別子の犬の URI はどれですか。getXXXX() を使用するすべてのメソッドは、サービスの残りの部分に影響を与えません。サービスで getXXX() のみが実行された場合、バックエンドは 1 ビットも変更しません。
すべての対話はステートレスです。したがって、ステートレス Bean 以外は使用しないでください。
表現
(7) データとメタデータのフォーマットが文書化されている。
(8) データは複数のフレーバーで利用できます。
(9) 表現には、他のリソースへのリンクが含まれています。
したがって、クライアントが「通貨」として使用している犬オブジェクトに所有者が参照されている場合 (できれば、この参照は識別子、つまり ownerID の形式である必要があります)、識別子を使用して getOwner( ownerID)、その URI。
スタイル
(10) サービス API を文書化し、宣伝します。
(11) 利用可能な標準と技術を使用する。
(12) アーキテクチャ、標準、ツールの改良と拡張
メソッド名は自己記述的であり、全体で共通であることを確認してください。つまり、 updateDog(Dog dog) 、 create(Dog dog) 、 deleteDog(Long dogID) です。したがって、クライアントが所有者を作成したい場合、リソースの「所有者」の名前と、前の例で Dog 表現の参照によって取得された識別子によって、メソッド名が何であるかが即座にわかります。
長い回答で申し訳ありません。
さて、それが可能になりました(CDIを活用)。
こちらの JavaEE チュートリアルを参照してください。