2016-10-31 6 views
0

私はNashornを試して、Javaコードからjs関数を呼び出しています。私が変更されたファイルをリロードし再評価WatchServiceたScriptEngine安全にサーバーサイドのJavaScript機能をオンザフライでリロードする方法はありますか?

engine.eval(Files.newBufferedReader(Paths.get(scriptFile), StandardCharsets.UTF_8)); 

を持っていることはかなりうまく動作しているようです、しかし、私は内部の疑いを持たないタイプミスと呼び出すために、その後の試行ではJavaScriptファイルを保存した数回がありました関数

invoker.invokeFunction("printServiceReport", tesla); 

によって、javax.script.ScriptExceptionがスローされ、実行中のコードが強制終了されます。アプリケーションに悪影響を与えることなく、ロジックをリアルタイムでリロードするための実行可能なソリューションを探しています。

答えて

1

各コードファイルの評価を試行キャッチと呼び出しにラップします。

必要に応じて、リロード時にすべての機能を実行してエラーが発生しているかどうかを確認し、エラーが検出された場合は古いバージョンを使用します(実行時のエラーを検出できない場合)。

サーバサイドスクリプトをリロードするときと同様の処理を行います。

関連する問題