在应用程序服务器初始化期间未调用@PostConstruct方法

时间:2014-01-28 21:10:37

标签: java java-ee ejb

我刚被分配到修复Java EE应用程序,我对此有点新鲜。我有以下bean:

@Named
@ApplicationScoped
public class Configuration implements Serializable {

   public Configuration() {
   }

   @PostConstruct
   public void loadParams() {

       // inserted break point in next line
       SAXBuilder builder = new SAXBuilder();
       URL resourceUrl = ResourceLocator.getResource(ARCHIVO_CONFIGURACION);
       // More code...
   }
}

我理解这个bean将在容器启动时初始化(在本例中为jboss 7),并且一旦注入了所有依赖项,就会调用 loadParams 方法。但经过调试后,我意识到无论是构造函数还是方法都没有被调用。我错过了什么?我没有考虑这个任务的另一个配置文件吗?谢谢。

2 个答案:

答案 0 :(得分:1)

@ApplicationScoped 注释告诉容器该bean对整个应用程序来说是单一的。

我认为如果你想在启动创建这个Bean,你也应该使用 @Eager 注释。

答案 1 :(得分:0)

我发现 beans.xml 文件存在问题。它格式不正确,现在调用了bean构造函数和 loadParams 方法:

这就是问题:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:s="urn:java:ee"
       xmlns:security="urn:java:org.jboss.seam.security"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
....

请注意,地址之间的 xsi:schemaLocation 缺少“:”