我正在尝试从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;
}
}
答案 0 :(得分:1)
如果您自己实例化bean,那么您将无法从依赖注入等容器服务中受益。
如果你有一个servlet并希望将env-entry注入依赖的POJO,只需让容器将POJO注入你的servlet。 因此,不要自己调用新的PasswordSessionBean(),而是将其添加到servlet中:
@Inject
private PasswordSessionBean passwordSessionBean;
...
public void doGet(....) {
assertEquals(passwordSessionBean.getPassword(), "SteveJobbs");
}
定义PasswordSessionBean也是一种有效的替代方案,但似乎只是为了注入一个env条目而过度杀伤。