问题(取值)的:
ExceptionMapper
,使其只响应某些路径子集的请求?war
,每个库都为Web应用程序的特定基本路径定义资源? 背景
我有一个Guice + Jersey v1 webapp,它从两个不同的依赖项(ServletModule
s)加载两个jar
。
其中一个定义了其余API端点的资源(例如@Path("/purchases")
,@Path("/payment-methods")
),另一个定义了Web UI的资源(例如@Path("/")
,@Path("/products")
)。
前者ServletModule
尝试将其泽西资源与"/api/"
基本路径(serve("/api/*").with(GuiceContainer.class, conf);
)联系起来,而后者则为"/"
基本路径({{1} }})
两个依赖项也定义了自己的Jersey serve("/*").with(GuiceContainer.class, conf);
; API的ExceptionMapper
以JSON错误对象进行响应,而Web UI的ExceptionMapper
在Freemarker的帮助下生成HTML响应。
然而,这种组合的结果 - 其中API和Web UI jar都在类路径上 - 是来自两个依赖项的Jersey资源响应具有以“/ api /”和<开头的路径的请求/ em>“/”
例如。 ExceptionMapper
的API资源会响应/purchases
和 http://example.com/api/purchases
的请求。同样,http://example.com/purchases
的网络用户界面资源会响应/products
和 http://example.com/products
的请求。
Jersey看到两个http://example.com/api/products
用于相同的异常类型(例如ExceptionMapper
)这一事实使得它只选择一个,无论请求的路径是从哪个开始。在我的情况下,NotFoundException
会响应ExceptionMapper<NotFoundException>
和/api/
下的未知资源请求,这对应用的任何一部分都不利。