我有一个Java EE项目,该项目在Eclipse Mars中通过EJB注入在Glassfish 4.1容器中执行。我有一个Singleton EJB,可以在应用程序启动时初始化或更新数据库
@Startup
@Singleton
public class DatabaseUpdater {
private static final Logger LOG = Logger.getLogger(DatabaseUpdater.class.getName());
/**
* Initializes database process
*/
@PostConstruct
public void initialize(UserVO userVO) {
// ... initialize code
}
}
Run Code Online (Sandbox Code Playgroud)
该项目在Eclipse Mars中使用“ 在服务器上调试”选项执行,并且运行良好。但是昨天我只是尝试执行此操作以启动项目,并且部署过程在Eclipse中失败了。出现此异常堆栈:
2016-02-21T11:03:52.001-0500|Grave: Exception during lifecycle processing
javax.ejb.EJBException: javax.ejb.CreateException: Initialization failed for Singleton DatabaseUpdater
at com.sun.ejb.containers.AbstractSingletonContainer$SingletonContextFactory.create(AbstractSingletonContainer.java:649)
at com.sun.ejb.containers.AbstractSingletonContainer.instantiateSingletonInstance(AbstractSingletonContainer.java:389)
at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:219)
at org.glassfish.ejb.startup.SingletonLifeCycleManager.initializeSingleton(SingletonLifeCycleManager.java:180)
at org.glassfish.ejb.startup.SingletonLifeCycleManager.doStartup(SingletonLifeCycleManager.java:158)
at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:166)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) …Run Code Online (Sandbox Code Playgroud)