嵌入Java脚本语言以进行调试/远程管理的建议

时间:2009-10-15 15:07:05

标签: java debugging scripting beanshell

我有一个相当复杂的服务器端应用程序,经常要求我查看其内部的调试和修复问题。

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

一些限制:

  • 没有readline支持,我可以通过在telnet上使用'rlwrap'来解决它,但它不理想
  • 变量和方法的Tab-completion非常好,但我还没有找到办法
  • 预定义变量(访问我需要经常访问的内容)似乎不起作用,我必须预先定义函数
尽管Beanshell具有超级Java的优点,但是没有人需要学习另一种编程语言来使用它。总是它很笨重,但是没有人需要学习另一种编程语言来使用它。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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