最近,我觉得需要在我的应用程序中打开一个可以远程登录的端口,并探测一些东西,比如特定结构的内存消耗,打印List的内容等等。有助于在运行时探测已部署的解决方案。
但突然之间,我有这种奇怪的感觉,这种远程探测的通用框架应该已经存在。所以,这里有一个问题:是否有任何库已经为Scala / Java提供了这些功能?我不是在寻找一个“完整的远程调试”解决方案,而是一种简约的方法,可以轻松扩展和探测。
答案 0 :(得分:3)
您是否尝试过jvisualvm?
它附带了jdk。尝试运行它,看看它是否符合您的要求......
从该页面开始:
Java VisualVM对Java应用程序开发人员进行故障排除很有用 应用程序以及监视和改进应用程序的性能。 Java VisualVM可以允许开发人员生成和分析堆转储, 追踪内存泄漏,执行和监控垃圾收集,以及 执行轻量级内存和CPU分析。插件也存在 扩展Java VisualVM的功能。例如,大部分 JConsole工具的功能可通过MBeans选项卡和 JConsole Plug-in Wrapper插件。您可以从目录中选择 选择“工具”|标准Java VisualVM插件'插件' Java VisualVM菜单。
如果您真的希望在生产中的运行时探测值,那么您可以在调试模式下启动jvm,并附加一个Eclipse进程,它允许您设置断点并检查变量。但是,您可能会遇到性能问题。请参阅Remote debugging with Eclipse。
答案 1 :(得分:2)
您可以将ostrich嵌入到您的应用中。与标准监控工具不同,它具有轻量级和可读的数据表示。您不仅可以看到系统指标,还可以看到任何可能的计算指标。
答案 2 :(得分:1)
JMX是目前最好的选择。它允许监视一堆标准内容,并允许您通过创建和发布它称为“MBean”的内容来扩展您可以监视的数据。最重要的是,如果你正在运行JDK 6或更高版本,那么你已经准备好运行它了(至少在本地模式下)。在JDK安装中,您将找到名为“jconsole”的应用程序。运行它,您将看到对您计算机上运行的任何Java进程的监视。
答案 3 :(得分:0)
也许你可以在该控制台上使用一些JavaScript?它是可扩展且易于实现的。
我使用了Apache Mina
和javax.script
:How to add remote JS console to your Scala server
基本上,它与您在问题中描述的相同 - 您将telnet指向端口,并键入命令(几乎所有命令)。