以前にも同様の質問をしましたが、GroovyScriptEngine の仕組みとクラスのロードがどのように実行されるかを明確にする必要がありました。WEB-INF にグルーヴィーなクラスを含む Vaadin Web アプリケーションがあります。Web アプリケーションは、GroovyScriptEngine を介して UI ロジックをロードします。エラーにつながる一連のイベントを次に示します。
- war を tomcat にデプロイしてサーバーを起動すると、アプリケーションは期待どおりに実行されます
- 展開された WEB-INF フォルダーにある groovy ファイルに重要でない変更を加えます (たとえば、コメント)。
- ページを更新すると、GSE が明らかにクラスをリロードし、アプリケーションが GroovyCastException: Cannot cast object 'com.company.myclass@7cde31f8' with class 'com.company.myclass' to class 'com.company.myclass'.
これはクラス ローダーの問題である可能性があることを理解しています。提案?GroovyScriptEngine の要点は、コンテナを再起動せずにホット編集された Groovy クラスを処理できることだと思いました。