Reputation: 2273
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
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