Problem with Notification Plugin

Hello

I´m facing some issues deploying .war because of the notification plugin.

If I deploy the project with this code on the Main.class:

@Push
@Theme(value = "Athia")
@PWA(name = "Athia", shortName = "Athia")
@SpringBootApplication
public class AthiaApplication extends SpringBootServletInitializer implements AppShellConfigurator {

    public AthiaApplication(NotificationTypesRepository notificationTypesRepository) {
        this.notificationTypesRepository = notificationTypesRepository;
    }

    private final NotificationTypesRepository notificationTypesRepository;

    @Autowired
    private Environment environment;

    public static void main(String[] args) {
        SpringApplication.run(AthiaApplication.class, args);
    }

    @Bean
    @Primary
    @ConfigurationProperties("main.datasource")
    DataSourceProperties dataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean
    @Primary
    @ConfigurationProperties("main.datasource.hikari")
    DataSource dataSource(final DataSourceProperties dataSourceProperties) {
        return dataSourceProperties.initializeDataSourceBuilder().build();
    }

    @EventListener
    public void onApplicationContextRefreshed(final ContextRefreshedEvent event) {
        notificationTypesRepository.registerTypes(
                new NotificationType("info","INFO_CIRCLE"),
                new NotificationType("warn","WARNING")
        );
    }

    @EventListener
    public void printApplicationUrl(final ApplicationStartedEvent event) {
        LoggerFactory.getLogger(AthiaApplication.class).info("Application started at "
                + "http://localhost:"
                + environment.getProperty("local.server.port")
                + Strings.nullToEmpty(environment.getProperty("server.servlet.context-path")));
    }
}

IT fails the deploy with this log:

19-Sep-2025 09:53:30.093 GRAVE [main] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing
        jakarta.servlet.ServletException: Failed to instantiate WebApplicationInitializer class
                at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:157)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4467)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:599)
                at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:571)
                at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:654)
                at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:969)
                at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1911)
                at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
                at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:771)
                at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:423)
                at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1629)
                at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
                at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:109)
                at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:389)
                at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:336)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:776)
                at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1203)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1193)
                at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
                at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
                at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
                at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:749)
                at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.StandardService.startInternal(StandardService.java:415)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:870)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
                at org.apache.catalina.startup.Catalina.start(Catalina.java:761)
                at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
                at java.base/java.lang.reflect.Method.invoke(Method.java:580)
                at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
        Caused by: java.lang.NoSuchMethodException: es.hiperusera.athia.AthiaApplication.<init>()
                at java.base/java.lang.Class.getConstructor0(Class.java:3761)
                at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2930)
                at org.springframework.util.ReflectionUtils.accessibleConstructor(ReflectionUtils.java:185)
                at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:154)
                ... 38 more

I want to mention that in the gradle file, installing the Notification plugin, appears like another variables for the premium account, and I´m not sure if this is OK.
image

Well… temporally, the “Solution” is to get rid of the notification code from the main class.
PD. If I run the project from IntelliJ, with the connection to the prod database, it works. So I discard some kind of inconsistency between database and the project.

JMIX VER : 2.6.0
JAVA VER: 21.0…
INTELLIJ VER : 2024.3

Thank you in advance

Hello,

The stacktrace says that Spring cannot get default constructor for your application class:

java.lang.NoSuchMethodException: es.hiperusera.athia.AthiaApplication.<init>()

Since AthiaApplication extends SpringBootServletInitializer it must have constructor without parameters.

You can try to inject beans using field injection, for instance:

@Autowired
private NotificationTypesRepository notificationTypesRepository;

Hello

Yes, that works.
So in the main class instead of using Inject framework functionallity, it must be inserted/written manually.

Thank you.