2017-04-20 34 views
0
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:56060 ERROR [org.jboss.msc.service.fail](MSC服務線程1-4)MSC000001:未能啓動服務jboss.deployment.unit。「pay.ear」.WeldStartService:服務jboss.deployment.unit中的org.jboss.msc.service.StartException。「bisys-pay-ear-worker.ear」.WeldStartService:啓動服務失敗 在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) 引起:org.jboss.weld.exceptions.DefinitionException:WELD-000810:無法在最終字段上放置限定符:[EnhancedAnnotatedFieldImpl] @Inject private final ExeManagerBean.exeEvent

回答

0

由於val關鍵字並已設置爲null,您將變量events定義爲final。

  • 變化val爲 '無功':

    @Inject 開放VAR事件:事件? = NULL

  • 使用後期的初始化和events將非可空類型:

    @Inject 開放lateinit VAR事件:

+0

變量是開放的。對於EJB定義的變量,val工作成功 – Ant20