2011-03-15 31 views
1

我打算通过使用Oracle提供的JVMTI API来开发分析器。对于可视化,我想在代理程序代码上实现GUI(Qt框架)。我的第一个jvmti代理正在编译和运行,我开始将代理整合到我的Qt项目中。JVMTI代理上的GUI

现在我正面临着如何将代理与GUI耦合的问题。 GUI是否应该在代理内部启动?例如在Agent_OnLoad函数中?

一个长期的目标是开始分析GUI,尽管我无法想象如何实现这一点。

回答

0

那么..你有很多选择最明显的将基于套接字的通信。您将不得不假设大多数概要分析用例都涉及服务器上的远程无头JVM。在我的分析器中,您可以使用与代理程序相同的机器上的小型启动/停止/控制实用程序进行无人操作,数据在服务器上收集并传输到客户端进行可视化。您还可以使用代理启动远程(或本地)jvm,并通过完整GUI的套接字连接到监听代理,然后通过该套接字收集客户端。

还有一个新的“JVM Attach API”允许您将代理“插入”已经运行的JVM,因此如果目标机器是UNI *,那么您可以在GUI中使用ssh/scp并脚本sCP将代理传输到服务器,并通过SSH启动附加。

所以...套接字(IP和/或域名)和再利用从GUI代码为一具无头控制/收集客户

+0

插座将覆盖有用的使用情况,但恐怕这是一个比较先进。我可以想象提供一个套接字服务器开始与AgentOnLoad。我想我的第一步是将GUI直接附加到代理上更容易 - 这甚至有可能吗?我的意思是代理被编译为一个库。 – 2011-03-15 09:24:07

+0

嗯...那么你正在寻找开始启动JVM作为JNI JVM的GUI过程,这将实际上限制你将能够配置....没有应用程序服务器等....如果它是一个JNI JVM那么你将有直接的通话能力,因为GUI和JVM实际上运行在相同的地址空间中......插座并不那么困难QT对于讨厌的东西是相当有用的 – 2011-03-15 09:27:29

+0

我认为这改变了我的想法。所以一个实际的方法是在代理内实现客户端套接字并将事件发送到GUI或其他方式?代理不会与JVM一起死掉吗?我只想去尝试一下自己,我只是想有一个小素描! :-) – 2011-03-15 09:33:06