0

我有一个相当复杂的服务器端应用程序,它经常需要我查看它的内部发生了什么来调试和修复问题。

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

一些限制:

  • 没有 readline 支持,我可以通过在 telnet 上使用 'rlwrap' 来解决这个问题,但它并不理想
  • 变量和方法的制表符完成会非常好,但我还没有找到一种方法来做到这一点
  • 预定义变量(访问我需要经常访问的东西)似乎不起作用,我必须预定义函数

总而言之,它相当笨重,尽管 Beanshell 有一个很好的优势,即它是 Java 的超集,所以没有人需要学习另一种编程语言来使用它。

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

4

1 回答 1

1

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

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

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

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

于 2009-10-15T15:26:39.717 回答