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")
}
}
在部署应用程序:
16:38:56,060 ERROR [org.jboss.msc.service.fail](MSC服务主题1-4)MSC000001:无法启动服务jboss.deployment.unit . “pay.ear”.WeldStartService:org.jboss.msc服务jboss.deployment.unit中的.service.StartException . “bisys-pay-ear-worker.ear”.WeldStartService:无法在org.jboss.msc.service.ServiceControllerImpl启动服务$ StartTask.run(ServiceControllerImpl.java:1904 )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)引起:org.jboss.weld.exceptions.DefinitionException:WELD-000810:无法在最终字段上放置限定符:[EnhancedAnnotatedFieldImpl] @Inject private final ExeManagerBean.exeEvent
1 回答
由于
val
关键字已将变量events
定义为final,因此已将其设置为null
.val
更改为'var':@Inject打开var事件:事件? = null
events
将是非可空类型:@Inject open lateinit var events:Event