我有这样的依赖:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.10</version>
</dependency>
托管bean:
@ManagedBean(eager = true)
@ApplicationScoped
public class AppBean implements Serializable{
private List<SelectItem> someEntitySI = null;
@PostConstruct
public void init(){
try {
someEntitySI = new ArrayList<SelectItem>();
List<SomeEntity> types = Factory.getInstance().getSomeEntityDAO().getAllSomeEntities();
for(SomeEntity type : types) {
someEntitySI .add(new SelectItem(someEntity.getId(), someEntity.getName()));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
当我在Tomcat @PostConstruct上调用它时,但是当我在Glassfish(v4.1)上部署相同的代码时,@ PostConstruct不起作用。为什么这样?
答案 0 :(得分:-1)
如果你像我一样笨拙,你的web.xml就像:
<web-app>
....
</web-app>
然后你需要编辑它:
<web-app 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"
version="3.1">
....
</web-app>
并且@PostConstrcut注释将在Glassfish上运行。 附:我仍然不完全确定为什么两个wariants都在使用Tomcat。