java – 使用Jetty / Jersey / Guice提供静态内容
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用Jetty / Jersey / Guice提供静态内容,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2165字,纯文字阅读大概需要4分钟。
内容图文
![java – 使用Jetty / Jersey / Guice提供静态内容](/upload/InfoBanner/zyjiaocheng/792/3f54135096844f2e902c8ad1250c4c02.jpg)
与另一个问题(参见Filtering static content Jersey)类似,我想从Jetty提供静态内容.在浩瀚的互联网上散布着几个类似的问题,但大多数都不涉及Guice,而那些完全过时的问题.
我有一个使用Jersey(1.12)和Guice(3)的现有服务,其中包含以下web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>My Service</display-name>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<listener>
<listener-class>com.example.MyGuiceConfig</listener-class>
</listener>
<filter>
<filter-name>Guice Filter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Guice Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
MyGuiceConfig看起来像这样:
public class MyGuiceConfig extends GuiceServletContextListener
{
@Override
protected Injector getInjector()
{
return Guice.createInjector(new JerseyServletModule()
{
@Override
protected void configureServlets()
{
bind(SomeResource.class);
bind(SomeDao.class).to(ConcreteSomeDao.class);
serve("/*").with(GuiceContainer.class);
}
});
}
}
当我使用mvn jetty:run调用jetty-maven-plugin时,我的服务按预期工作.但是,对静态内容的任何请求都会产生404.
如何在不影响我的服务的情况下提供任意静态内容? (即必要的最小变化不需要我改变我的技术堆栈?)
解决方法:
你是如何配置Jersey将在JerseyServletModule中处理的url片段的?如果指定的前缀与静态内容不冲突,则应该有效.
public class Config extends GuiceServletContextListener {
protected Injector getInjector() {
return Guice.createInjector(
new JerseyServletModule() {
protected void configureServlets() {
bind(Service.class);
serve("/services/*").with(GuiceContainer.class);
}
});
}
}
和
@Singleton
@Path("/service")
@Produces({MediaType.TEXT_PLAIN})
public class Service {
@GET
public String run() {
return "Service running";
}
}
应该从主机服务Servlet.class:8080 / services / service和webapp中包含的静态资源…
编辑有关完成此操作的另一种方法,请参阅Jersey /* servlet mapping causes 404 error for static resources,而无需更改REST端点的路径.
内容总结
以上是互联网集市为您收集整理的java – 使用Jetty / Jersey / Guice提供静态内容全部内容,希望文章能够帮你解决java – 使用Jetty / Jersey / Guice提供静态内容所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。