RESTEasy资源上的@Resource注入值为null

时间:2013-12-09 21:02:14

标签: java jax-rs code-injection resteasy

我正在尝试在我的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"但是票证似乎被标记为已解决。

0 个答案:

没有答案