2009-10-15 45 views
0

我有一个相当复杂的服务器端应用程序,它经常要求我看看它的内部是如何进行调试和修复问题的。为调试/远程管理嵌入Java脚本语言的建议

因此,我嵌入了一个Beanshell实例,我可以telnet进入(通常通过SSH隧道),但我想知道是否有更好的方法。

一些限制:

  • 没有readline的支持,我可以用“rlwrap”在telnet下得到解决,但它并不理想
  • 的变量和方法Tab键完成将是非常好的,但我还没有找到一个办法做到这一点
  • 预先定义的变量(访问的东西,我需要经常访问)似乎不工作,我必须预先定义的功能,而不是

所有-在所有它相当笨重,尽管Beanshell具有其超级Java集的优点,所以没有人需要学习另一种编程语言来使用它。

我想知道如果别人有任何促进通过脚本语言(Beanshell或其他)进行远程调试/管理的经验,也许有人找到了更好的方法。

回答

1

我们的一个应用程序有一个BeanShell接口,它通过JMX和RMI + SSL连接到我们的应用程序。

在实际调用解释器之前,通过调用Interpreter#set()确实可以预先定义变量。

除此之外,我同意你在“readline”类似的功能。有一个名为java-readline(BSH显然带有一个插件的项目),旨在提供功能,但我没有调查使用它。它还需要一个JNI库。

我听说人们使用Scala和Groovy来实现命令行客户端,但到目前为止,我不认为用于嵌入解释器的Scala API是标准化的。我也不相信他们支持你正在寻找的“readline”功能。