我正在尝试在我的JAX-RS资源中使用@Resource注释(使用RESTEasy 3.0.5.Final实现)。 InitialContext.doLookup("java:comp/env/testString")
正确地从web.xml文件中检索Hello World
。但是此资源的返回值会返回Value of hello:null
。 @Resource似乎根本没有实例化hello
字段。我使用Maven Jetty Plugin 6.1.15运行它。
我的资源:
@Path("config")
public class ConfigurationResource {
private String hello;
@Resource(name="testString")
public void setHello(String hello) {
this.hello = hello;
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String getResouces() throws NamingException{
System.out.println((String)InitialContext.doLookup("java:comp/env/testString"));
return String.format("Value of hello:%s", hello);
}
}
我的web.xml
<web-app>
<servlet>
<servlet-name>REST</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.yatin.rest.boot.ShoppingApplication</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>REST</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<env-entry>
<env-entry-name>testString</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>Hello World</env-entry-value>
</env-entry>
</web-app>
有谁知道为什么返回空值,即@Resource工作不正确以及如何解决这个问题?
我确实看过这个"env-entry is not injected with @Resource annotation into CDI beans and JAX-RS resources"但是票证似乎被标记为已解决。