2016-03-19 35 views
8

我正在開發一個NetBeans和Glassfish 4.1.1的Web應用程序。我使用JSF和CDI來管理facelets的後臺bean。因爲在代碼中進行任何更改後不久,我總是得到一個內部服務器錯誤與「成功」的部署,並通過瀏覽器中運行的應用程序後,這IllegalStateException異常:org.jboss.weld.exceptions.IllegalStateException:代碼中每次更改後的WELD-000227

org.jboss.weld.exceptions.IllegalStateException: WELD-000227: Bean 

identifier index inconsistency detected - the distributed container 

probably does not work with identical applications 

我可以做一個乾淨的&構建擺脫它並重新部署。但NetBeans無論如何都會在每次保存後自動重新部署。因此,我仍然需要點擊清理和構建,然後重新部署自己總是在任何一點點改變後,它讓我發瘋!

那麼有什麼設置可以在glassfish服務器上更改以避免這種情況,或者我可以告訴NetBeans在自動部署之前清理&構建嗎?

它並不總是這樣,最近我更新了glassfish它可能只是在那之後纔出現,我不記得了。

在此先感謝!它花費了我這麼多時間..

解決

我再次小時一派,找到了解決辦法:我設置在GlassFish中

org.jboss.weld.serialization.beanIdentifierIndexOptimization新系統屬性=

避免出現不一致如WELD參考這裏解釋:

https://docs.jboss.org/weld/reference/latest/en-US/html/configure.html#_bean_identifier_index_optimization

+0

相關:http://stackoverflow.com/q/28713747 – BalusC

+0

感謝您的鏈接,你是對的,其同樣的問題.. – BenSkeleton

+0

你是如何設置這個屬性?我正在努力解決同樣的問題。 (http:// localhost:4848 /)轉到「服務器(管理服務器)」 - >「屬性」 - >「系統屬性」並添加一個新屬性「org.jboss.weld」中的 –

回答

8

禁用beanIdentifierIndexOptimization GlassFish中,如下所示:

  1. 訪問在http://localhost:4848(或https://127.0.0.1:4848/)管理控制檯。
  2. Click 配置
  3. 點擊server-config
  4. 點擊系統屬性
  5. 點擊添加屬性
  6. 設置的實例變量名到:org.jboss.weld.serialization.beanIdentifierIndexOptimization
  7. 設置默認值到:false
  8. 點擊保存

這應該有助於鈍化和解決以下WELD bug

WELD-000227:豆標識符索引不一致檢測。