获取 JAX-RS 资源中的 ServletContext
我正在玩 JAX-RS,部署在 Tomcat 上。基本上是:
@Path("/hello")
@Produces({"text/plain"})
public class Hellohandler {
@GET
public String hello() {
return "Hello World";
}
}
有什么方法可以获取 JAX-RS 资源中的 ServletContext 吗?
I'm playing around with JAX-RS, deploying on Tomcat. It's basically:
@Path("/hello")
@Produces({"text/plain"})
public class Hellohandler {
@GET
public String hello() {
return "Hello World";
}
}
Is there any way I can get hold of the ServletContext
within my JAX-RS resource?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
此外,
@Resource
注释可能不起作用。试试这个,直到你点击服务方法时,注入才会发生
Furthermore,
@Resource
annotation might not work. Try thisThe injection doesn't happen until you hit the service method
正如其他人所指出的,servletContext 可以在字段级别注入。它也可以在方法级别注入:
这将允许您使用可用的 servletContext 执行额外的初始化。
明显的注意事项 - 您不必使用方法名称 setServletContext。您可以使用任何您想要的方法名称,只要您遵循 setter 的标准 java bean 命名模式 void setXXX(Foo foo) 并使用 @Context 注释。
As others have noted, the servletContext can be injected at the field level. It can also be injected at the method level:
This will allow you to perform additional initialization with the servletContext available.
Obvious note - you don't have to use the method name setServletContext. You can use any method name you want so long as you follow the standard java bean naming pattern for setters, void setXXX(Foo foo) and use the @Context annotation.
当您实现 ServletContextListener 时,servlet 上下文也可用。这使得在启动时加载连接字符串等参数变得容易。您可以在 web.xml 中定义侦听器类,以便在 Web 应用程序启动时加载 ServletContextListener。
在 web.xml 文件中,添加
和
标记。
指定启动时调用的类。
标记定义 Web 应用程序中可用的上下文参数。首先,在 web.xml 文件中包含
和
标记:现在创建 servlet 上下文类,如下所示。
您现在可以选择哪个静态变量来分配您已读取的参数。这允许您在启动时读取一次参数,并通过分配给它的静态变量多次重复使用。
The servlet context is also available when you implement the ServletContextListener. This makes it easy to load parameters such as connection string at start-up. You can define the listener class in web.xml that loads you ServletContextListener at startup of your web application.
Inside the web.xml file, add the
<listener>
and<context-param>
tags. The<listener>
specifies the class that is called at startup. The<context-param>
tag defines context parameter that is available within your web application.First, include the
<listener>
and<context-param>
tags in the web.xml file:Now create the servlet context class as follows.
You can now choose which static variable to assign the parameter you have read. This allows you to read the parameter once at start-up, and reuse many time through the static variable that you assign it to.
只需像这样使用资源注入,
Just use resource injection like this,
查看:
http:// markmail.org/message/isy6mdpoh66vyi6k#query:jersey%20getservletcontext%20-spring+page:1+mid:sa7n465kfgdoskv5+state:结果
Check out:
http://markmail.org/message/isy6mdpoh66vyi6k#query:jersey%20getservletcontext%20-spring+page:1+mid:sa7n465kfgdoskv5+state:results