如何将服务器端 Jax-rs 调用与不带前缀的本机文件混合?

2022-01-21 00:00:00 java tomcat jersey

我们目前正在使用 Jersey JAX-RS 实现来处理我们的 REST 请求(服务器端 Jersey).我们的 web.xml 文件已配置,因此所有/rest/* 请求都由 Jersey 处理.没关系.我们的服务器目前是 Tomcat6,并且使用 Java6(在 Ubuntu 11.04 上)

We are currently using a Jersey JAX-RS implementation to handle our REST requests (server-side Jersey). Our web.xml file is configured so all /rest/* requests are handled by Jersey. That's fine. Our server is currently Tomcat6, and using Java6 ( on Ubuntu 11.04 )

所以,://myserver/rest/customer/没问题,Jersey 调用带有 @Path("/customer") 前缀的类.

So, ://myserver/rest/customer/ is ok and Jersey calls the class with @Path("/customer") prefix.

现在我们还有静态内容,例如 ://myserver/images/... 加载正常.

Now we also have static content, for example ://myserver/images/... wich loads fine.

有没有办法让我们摆脱/rest/* 前缀并将它们混合在一起?

Is there a way to do so that we can get rid of the /rest/* prefix and mix it all together?

我们想要达到的目标:://myserver/rest/customer/→ 泽西岛://myserver/rest/images/→ 战争的原生镜像目录

What we want to achieve : ://myserver/rest/customer/ → Jersey ://myserver/rest/images/ → the native image Directory of the war

感谢您的帮助

推荐答案

这很容易实现.只需在 web.xml 中注册 Jersey ServletContainer 作为过滤器(而不是 servlet) - 参见 this page - 或者使用 ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX 或 ServletContainer.FEATURE_FILTER_FORWARD_ON_404 初始化参数以使静态内容可访问.

This is pretty easy to achieve. Just register Jersey ServletContainer in web.xml as a filter (instead of servlet) - see the bottom of this page for an example - and either use ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX or ServletContainer.FEATURE_FILTER_FORWARD_ON_404 init param to make the static content accessible.

相关文章