在本地,我正在Jetty内部运行一个maven应用程序(首先,我们将其部署为对tomcat的战争),该应用程序使用Java的ScriptEngine来运行来自FileSystem的Ruby脚本(该外部逻辑文件由非Java开发人员)。 我希望能够通过放置断点或类似内容来监听JRuby的执行情况。
我可以更改ruby的调用方式,但不能更改“打包”方式,因为我们将Maven(和Spring)应用程序发布为软件,并且JRuby文件只是我们客户的专用配置(因此,不需要只为conf重新编译整个项目。
//Java Class running the script
@Service
public class ScriptExecutor
{
private ScriptEngine engine;
public ScriptExecutor() throws NassurCoreException
{
System.setProperty("org.jruby.embed.localcontext.scope", "threadsafe");
engine = new ScriptEngineManager().getEngineByName("jruby");
engine.getContext().setWriter(/*...*/);
engine.getContext().setErrorWriter(/*...*/);
}
@Transactional
public Object executeScript(/*...*/) throws ScriptException
{
Reader r = new FileReader("somePath");
//...
engine.eval(r);
Invocable invocable = (Invocable) engine;
//...
retour = invocable.invokeFunction("someFunction",someArgs);
//...
return retour;
}
}
//Example script
#encoding: utf-8
def simpleReturn(someArgs)
variable = #Some value based on someArgs
return variable
end
我希望能够在运行Jetty时“设置断点”(如果有意义),以便(例如)检查变量的值