我说的是Java EE应用程序和Wildfly应用程序服务器。假设我有一个jar作为定义以下类的库:
@Singleton
@Startup
class StartupService {
@PostConstruct
public void onConstruct() {
/* do something */
}
}
现在,我有我的实际战争项目(maven项目),它具有上面描述的jar作为依赖项。因此,当战争部署到Wildfly并开始时,类StartupService
被执行。
有没有办法在我的实际项目中覆盖行为或禁用StartupService
?
尝试定义以下ejb-jar.xml:
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" version="3.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd">
<enterprise-beans>
<session>
<ejb-name>StartupService</ejb-name>
<init-on-startup>false</init-on-startup>
</session>
</enterprise-beans>
</ejb-jar>
它必须位于WAR模块的WEB-INF目录中。我自己没有检查过,但它应该有效。