2016-10-31 3 views
0

Nashorn을 실험하고 Java 코드에서 js 함수를 호출하고 있습니다. 나는 ScriptEngine를 검색 변경된 파일을 다시로드 재평가 WatchService이안전하게 서버 측 자바 스크립트 기능을 즉시 다시로드하는 방법은 무엇입니까?

내가 내 의심 오타 및 호출 이후의 시도와 자바 스크립트 파일을 저장 한 곳이 꽤 잘 작동하는 것 같다

은, 그러나, 몇 번이 있었다

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

invoker.invokeFunction("printServiceReport", tesla); 

으로 인해 javax.script.ScriptException이 발생하여 실행중인 코드가 종료됩니다. 내 응용 프로그램에 부정적인 영향을주지 않고 실시간으로 논리를 다시로드 할 수있는 실행 가능한 솔루션을 찾고 있습니다.

답변

1

각 코드 파일의 평가를 try catch 및 사용자 호출로 감싸십시오.

필요한 경우 다시로드 할 때 모든 기능을 실행하여 오류가 발생했는지 확인한 다음 오류가 발견되면 이전 버전을 사용할 수 있습니다 (런타임에 오류를 감지하는 것이 용납되지 않는 경우).

서버 측 스크립트를 다시로드 할 때와 비슷한 작업을 수행합니다.