簡體   English   中英

Java SE和Java EE中的熱交換代理

[英]Hotswap agent in Java SE and Java EE

我發現Hotswapagent在SE和EE應用程序中的工作方式不同。 在SE應用程序中,我可以毫無問題地向類中添加新屬性(例如,私有Long x;),Hotswap可以更新代碼。 但是我無法在JSF ManagedBean的EE應用程序中執行此操作 ,得到了“虛擬機不支持此操作:未實現架構更改”

我的EE應用程序是帶有Wildfly 10的Netbeans 8.2中的Maven企業應用程序(ejb,web,ear項目)。我使用DCEVM(jdk1.8.0_112)和Hotswapagent 1.1.0。

簡單的代碼更改(例如,編輯方法主體)在SE和EE應用程序中均可使用,但無論是在ejb還是在Web項目中,它都無法處理新的屬性創建。 我想知道是否在設置上犯了一些錯誤,或者是因為SE和EE環境之間存在差異。 感謝您的任何想法。

沒問題。 僅當我以調試模式啟動應用程序時。

我希望添加字段會被視為架構更改(在這種情況下,Java SE和Java EE都會出現異常)。 但是Java EE是通過在運行時修改類(字節碼)來實現的。 我猜想,當您插入一個字段時,不僅添加了該字段,而且還引入了一些綜合的getter和/或setter,這肯定是架構更改。

HotswapAgent在JVM級別上工作,Java SE和Java EE之間應該沒有區別。 您的Wildfly服務器很可能不使用DCEVM,請檢查設置。

在這里,您需要配置所有EE應用程序服務器Payara + DCEVM的所有配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM