我刚被分配到修复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 方法。但经过调试后,我意识到无论是构造函数还是方法都没有被调用。我错过了什么?我没有考虑这个任务的另一个配置文件吗?谢谢。
答案 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 缺少“:”。