Tomcat @在Glassfish中未调用后期构造
我有这样的依赖性:Tomcat @在Glassfish中未调用后期构造,tomcat,jsf-2,glassfish-4,java-ee-7,Tomcat,Jsf 2,Glassfish 4,Java Ee 7,我有这样的依赖性: <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <dependency> <groupId>com.su
<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>
爪哇
JavaEEAPI
7
com.sun.faces
jsf impl
2.2.10
com.sun.faces
JSFAPI
2.2.10
和托管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();
}
}
@ManagedBean(eager=true)
@适用范围
公共类AppBean实现了可序列化{
私有列表sometentitysi=null;
@施工后
公共void init(){
试一试{
someEntitySI=新的ArrayList();
列表类型=Factory.getInstance().getSomeEntityDAO().getAllSomeEntities();
for(SomeEntity类型:类型){
添加(新的SelectItem(someEntity.getId(),someEntity.getName());
}
}捕获(SQLE异常){
e、 printStackTrace();
}
}
当我在Tomcat@PostConstruct上部署这个时调用了,但当我在Glassfish(v4.1)上部署相同的代码时,@PostConstruct不起作用。为什么呢?如果你和我一样笨,你的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。
另外,我仍然不能完全确定为什么两个Wariant都在Tomcat上工作。人们不是读心术的人。你需要详细说明“它工作”的含义,并描述导致你得出“不工作”结论的结果。