【问题标题】:Override/Disable @Startup class覆盖/禁用@Startup 类
【发布时间】:2018-09-08 12:59:45
【问题描述】:

我说的是 Java EE 应用程序和 Wildfly 应用程序服务器。 假设我有一个 jar 作为定义以下类的库:

@Singleton
@Startup
class StartupService {

    @PostConstruct
    public void onConstruct() {
        /* do something */
    }
}

现在,我的实际战争项目(maven 项目)具有上述 jar 作为依赖项。所以 StartupService 类是在战争部署到 Wildfly 并开始时执行的。

有没有办法在我的实际项目中覆盖行为或禁用StartupService

【问题讨论】:

    标签: java dependency-injection ejb startup java-ee-8


    【解决方案1】:

    尝试定义以下 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 目录中。我自己没有检查过,但它应该可以工作。

    【讨论】:

    • 当您的 EJB 使用 JAR 部署时,(在这种情况下是覆盖的)部署描述符必须位于 JAR META-INF 目录中。
    猜你喜欢
    • 2021-09-06
    • 2019-02-20
    • 1970-01-01
    • 2012-10-12
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多