13.2.1 ディスカバリとディスパッチ
ここでは,Webリソースのディスカバリ,ディスパッチ,およびフォルトと例外クラスのマッピングについて説明します。
- 〈この項の構成〉
(1) ディスカバリ
ディスカバリでは,HTTPリクエストで要求されたURLから,リソースクラスをマッピングする処理が行われます。ここでは,次のURLが要求された場合のマッピングについて説明します。
http://example.org/sample/rootA
コンテキストルートを"sample"とした場合,コンテキストルートの後ろの"/rootA"(下線部)はパス情報を表します。このパス情報を基に,リソースクラスがマッピングされます。
パス情報とのマッピングの例を次に示します。なお,この例では,リソースクラスとして,サブリソースクラスを使用しないで,ルートリソースクラスだけを使用します。また,各ルートリソースクラスはリソースメソッドだけを持ちます。
JAX-RSエンジンは,デプロイされているルートリソースクラスのうち,Pathアノテーションの値がパス情報に等しいものを呼び出します。
パス情報と,呼び出されるルートリソースクラスの対応を示します。
-
パス情報がrootAの場合
ルートリソースクラスA(org.foo.Test1.java)が呼び出されます。
-
パス情報がrootBの場合
ルートリソースクラスB(org.foo.Test2.java)が呼び出されます。
-
パス情報がrootCの場合
ルートリソースクラスC(org.foo.Test3.java)が呼び出されます。
なお,サブリソースクラスがデプロイされていて,対応するサブリソースロケータのPathアノテーションの値がパス情報に等しい場合は,そのサブリソースクラスを呼び出します。
(2) HTTPメッセージのディスパッチ
JAX-RSエンジンは,受信したHTTPメッセージの内容(Content-Type HTTPヘッダ)と受け入れできるメディアタイプ(Accept HTTPヘッダ)に応じて,リソースメソッドを呼び出し,実行します。ディスパッチはConsumesアノテーションおよびProducesアノテーションで指定されたメディアタイプによって実行されます。
なお,リソースクラスにサブリソースメソッドが含まれている場合は,ディスカバリとディスパッチの判定が同時に行われます。