1

質問: _ _ _

  • ExceptionMapperパスの特定のサブセットに対するリクエストにのみ応答するように、Jersey リソースと を定義するにはどうすればよいですか?
  • 後でホストするベースパスを事前に決定することなく、これを行うにはどうすればよいですか?
  • warそれぞれが Web アプリの特定のベース パスのリソースを定義するライブラリを作成して単一のライブラリを作成できるようにするにはどうすればよいですか?

背景: 2 つの異なる依存関係 ( ) から 2
つの をロードする Guice + Jersey v1 webapp があります。 1 つは残りの API エンドポイントのリソースを定義し (例: ) 、もう 1 つは Web UI のリソースを定義します (例: ) 。 前者の場合、Jersey リソースをベース パス ( ) に関連付けようとしますが、後者の場合は、ベース パス ( ) に対して同等のことを行います。 どちらの依存関係も独自の Jersey を定義します。APIは JSON エラー オブジェクトで応答しますが、Web UIは Freemarker を使用して HTML 応答を生成します。ServletModulejar
@Path("/purchases")@Path("/payment-methods")@Path("/")@Path("/products")
ServletModule"/api/"serve("/api/*").with(GuiceContainer.class, conf);"/"serve("/*").with(GuiceContainer.class, conf);
ExceptionMapperExceptionMapperExceptionMapper

ただし、API と Web UI jar の両方がクラスパス上にあるこの組み合わせの結果は、両方の依存関係からの Jersey リソースが「/api/」と「/」で始まるパスを持つリクエストに応答することです。
たとえば、 の API リソースは/purchasesのリクエストに応答します。同様に、 の Web UI リソースはのリクエストに応答します。http://example.com/api/purchases http://example.com/purchases/productshttp://example.com/products http://example.com/api/products

Jersey がExceptionMapper同じ例外タイプ (例: NotFoundException) に対して 2 つの を認識するという事実により、要求されたパスの開始に関係なく、Jersey は 1 つだけを選択します。私の場合、 はとExceptionMapper<NotFoundException>の両方で未知のリソース リクエストに応答します。これは、アプリのどちらの部分にとっても悪いことです。/api//

4

0 に答える 0