lib jar中的Singleton和PostConstruct在启动时没有被调用?

时间:2017-04-11 13:44:14

标签: java java-ee jar singleton postconstruct

我需要创建一个可以添加到其他项目中的Jar(我们使用maven),这个Jar必须有一个在启动时调用的类,并且必须记录一些基本信息。我已经习惯使用Singleton Startup和Postconstruct注释来实现这一目的。

到目前为止,我已经用这个类创建了我的Jar,它应该记录JRE版本:

import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Singleton
@Startup
public class App
{
    private final static Logger LOGGER = LoggerFactory.getLogger(App.class);

    private AppInfo appInfo;

    @PostConstruct
    public void init()
    {   
        appInfo  = new AppInfo();
        String jreVersion = "java not ready";
        try {
            jreVersion = System.getProperty("java.version");
        } catch (final Exception e) {
            LOGGER.info("Can't get JRE version");
        }
        appInfo.setJreVersion(jreVersion);
        LOGGER.info("[DiagTest] - The app is running with : " + appInfo.getJreVersion());
    }

}

AppInfo()只是一个带有getter / setter的对象。

我的问题是当我在另一个项目中导入我的jar时,似乎没有调用init()方法,我没有收到任何错误或任何日志。

我想我错过了一些显而易见的事情,但在看了多篇文章之后,我没有让它发挥作用。

帮助将不胜感激,

感谢。

编辑:它只使用system.out.print,所以看起来slf4j在启动时无法使用

0 个答案:

没有答案