环境条目 - Java EE - Web.XML - 返回空值

时间:2014-07-23 20:00:49

标签: java-ee web.xml java-ee-7

我正在尝试从Java EE Web应用程序中的web.xml文件中的Environment Entry中检索值。我正在使用带有Glassfish服务器的Netbeans ......

这是我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"         
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

<env-entry>
    <description>This example uses @Resource()</description>
    <env-entry-name>com.stuff.PasswordSessionBean/password</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>SteveJobbs</env-entry-value>
</env-entry>

<servlet>
    <servlet-name>PasswordServlet</servlet-name>
    <servlet-class>com.stuff.PasswordServlet</servlet-class> 
</servlet>

<servlet-mapping>
    <servlet-name>PasswordServlet</servlet-name>
    <url-pattern>/PasswordServlet</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>


</web-app>

这是相应的bean,它接收由注入的值。

package com.stuff;

import javax.annotation.Resource;


/**
*
* @author me
*/

public class PasswordSessionBean {

@Resource() private String password;


    public String getPassword(){
        return password;
    }

}

1 个答案:

答案 0 :(得分:1)

如果您自己实例化bean,那么您将无法从依赖注入等容器服务中受益。

如果你有一个servlet并希望将env-entry注入依赖的POJO,只需让容器将POJO注入你的servlet。 因此,不要自己调用新的PasswordSessionBean(),而是将其添加到servlet中:

@Inject
private PasswordSessionBean passwordSessionBean;
...
public void doGet(....) {
    assertEquals(passwordSessionBean.getPassword(), "SteveJobbs");
}

定义PasswordSessionBean也是一种有效的替代方案,但似乎只是为了注入一个env条目而过度杀伤。