Ant20
Ant20

Reputation: 2273

Observes Inject private final error

data class ExeEvent(val id: Long)


@Stateless
open class ExeManagerBean : IExeManagerBean {

 @Inject
    open val events: Event<ExeEvent>? = null


override fun listenTo(@Observes(during = TransactionPhase.AFTER_SUCCESS) exeEvent: ExeEvent) {

    try {
        //doWork
    } catch (ex: Exception) {
        logger.error("Fail. ex:$ex")
    }
}

On deploy app:

16:38:56,060 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC000001: Failed to start service jboss.deployment.unit."pay.ear".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."bisys-pay-ear-worker.ear".WeldStartService: Failed to start service at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000810: Cannot place qualifiers on final fields: [EnhancedAnnotatedFieldImpl] @Inject private final ExeManagerBean.exeEvent

Upvotes: 0

Views: 378

Answers (1)

Alexander Molkov
Alexander Molkov

Reputation: 61

You defined variable events as final because of val keyword and already set to null.

  • change val to 'var':

    @Inject open var events: Event? = null

  • use late initialization and events will be non-nullable type:

    @Inject open lateinit var events: Event

Upvotes: 0

Related Questions