【发布时间】:2019-08-03 03:35:33
【问题描述】:
尝试在 TomEE Web Edition 8.0.0-M3(CentOS7、JDK12)上部署 Web 应用程序 - 一切正常,但由于某种原因 @Startup @Singleton 注释不起作用 - start() 和 destroy() 方法不起作用调用。
package test;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Startup
@Singleton
public class SessionManager {
@PostConstruct
public void start() {
System.out.println("PostConstruct");
}
@PreDestroy
public void destroy() {
System.out.println("PreDestroy");
}
}
在 Win10 上它可以工作。启动 TomEE 时,我可以看到它加载了 openejb:
(...)
24-Jul-2019 04:48:49.020 INFO [main] org.apache.openejb.util.OptionsLog.info Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc.TomEEDataSourceCreator'
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> ********************************************************************************
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> OpenEJB http://tomee.apache.org/
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> Startup: Wed Jul 24 04:48:49 EEST 2019
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> Copyright 1999-2018 (C) Apache OpenEJB Project, All Rights Reserved.
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> Version: 8.0.0-M3
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> Build date: 20190523
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> Build time: 12:13
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> ********************************************************************************
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> openejb.home = C:\opt\apache-tomee-webprofile-8.0.0-M3
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.OpenEJB$Instance.<init> openejb.base = C:\opt\apache-tomee-webprofile-8.0.0-M3
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.cdi.CdiBuilder.initializeOWB Created new singletonService org.apache.openejb.cdi.ThreadSingletonServiceImpl@10993713
24-Jul-2019 04:48:49.104 INFO [main] org.apache.openejb.cdi.CdiBuilder.initializeOWB Succeeded in installing singleton service
24-Jul-2019 04:48:49.135 INFO [main] org.apache.openejb.config.ConfigurationFactory.init TomEE configuration file is 'C:\opt\apache-tomee-webprofile-8.0.0-M3\conf\tomee.xml'
24-Jul-2019 04:48:49.173 INFO [main] org.apache.openejb.config.ConfigurationFactory.configureService Configuring Service(id=Tomcat Security Service, type=SecurityService, provider-id=Tomcat Security Service)
24-Jul-2019 04:48:49.173 INFO [main] org.apache.openejb.config.ConfigurationFactory.configureService Configuring Service(id=Default Transaction Manager, type=TransactionManager, provider-id=Default Transaction Manager)
24-Jul-2019 04:48:49.189 INFO [main] org.apache.openejb.util.OptionsLog.info Using 'openejb.deployments.classpath=false'
24-Jul-2019 04:48:49.189 INFO [main] org.apache.openejb.assembler.classic.Assembler.createRecipe Creating TransactionManager(id=Default Transaction Manager)
24-Jul-2019 04:48:49.220 INFO [main] org.apache.openejb.assembler.classic.Assembler.createRecipe Creating SecurityService(id=Tomcat Security Service)
24-Jul-2019 04:48:49.320 INFO [main] org.apache.openejb.server.ServiceManager.initServer Creating ServerService(id=cxf-rs)
24-Jul-2019 04:48:49.452 INFO [main] org.apache.openejb.server.SimpleServiceManager.start ** Bound Services **
24-Jul-2019 04:48:49.452 INFO [main] org.apache.openejb.server.SimpleServiceManager.printRow NAME IP PORT
24-Jul-2019 04:48:49.452 INFO [main] org.apache.openejb.server.SimpleServiceManager.start -------
24-Jul-2019 04:48:49.452 INFO [main] org.apache.openejb.server.SimpleServiceManager.start Ready!
24-Jul-2019 04:48:49.452 INFO [main] jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke Server initialization in [1,552] milliseconds
24-Jul-2019 04:48:49.490 INFO [main] org.apache.tomee.catalina.OpenEJBNamingContextListener.bindResource Importing a Tomcat Resource with id 'UserDatabase' of type 'org.apache.catalina.UserDatabase'.
24-Jul-2019 04:48:49.490 INFO [main] org.apache.openejb.assembler.classic.Assembler.createRecipe Creating Resource(id=UserDatabase)
24-Jul-2019 04:48:49.505 INFO [main] jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke Starting service [Catalina]
24-Jul-2019 04:48:49.505 INFO [main] jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke Starting Servlet engine: [Apache Tomcat/9.0.20]
(...)
但不是在 CentOS 上.. TomEE 版本和配置相同,奇怪..
已下载 TomEE plus - 现在可以正常工作了。所以看来 TomEE webprofile 版本不支持 EJB??
【问题讨论】:
标签: java centos singleton ejb startup