gpt4 book ai didi

java - 在应用程序中获取 ServletContext

转载 作者:太空狗 更新时间:2023-10-29 22:39:55 25 4
gpt4 key购买 nike

您能否解释一下如何在我的Application 的子类中获取ServletContext 实例?可能吗?我试过像下面的代码片段那样做,但它似乎不起作用 - ctx 未设置:

import javax.ws.rs.core.Application;
import javax.ws.rs.core.Context;

//...

@ApplicationPath("/")
public class MainApplication extends Application {

@Context ServletContext ctx;

@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<Class<?>>();
//...
return classes;
}
}

web.xml:

<web-app ...>
<context-param>
<param-name>environment</param-name>
<param-value>development</param-value>
</context-param>
<filter>
<filter-name>jersey-filter</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>my.MainApplication</param-value>
</init-param>
</filter>
...
</web-app>

问题是我需要从中获取上下文参数。如果有其他方法,如果有人给出提示,我将不胜感激。


我知道 Context 注释可能不是为此目的。实际上,我不需要 ServletContext 本身。如果我能从 web.xml 中获取上下文参数,我会非常高兴。

这是我真正需要的例子:

import java.util.HashSet;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Context;

import org.glassfish.hk2.utilities.binding.AbstractBinder;

public class MainApplication extends Application {

@Context ServletContext ctx;

@Override
public Set<Object> getSingletons() {
Set<Object> set = new HashSet<Object>();
final String environment = ctx.getInitParameter("environment");
//final String environment = ... get context parameter from web xml
set.add(new AbstractBinder() {

@Override
protected void configure() {
bind(new BaseDataAccess(environment)).to(DataAccess.class);
}
});
//...
return set;
}
}

谢谢。

最佳答案

从 Jersey 2.5 开始,可以在构造函数中直接注入(inject) ServletContext: https://java.net/jira/browse/JERSEY-2184

public class MyApplication extends ResourceConfig {
public MyApplication(@Context ServletContext servletContext) {
// TODO
}
}

关于java - 在应用程序中获取 ServletContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19450202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com