我正在开发基于CVM PhoneME VM的嵌入式平台的应用程序管理器。 VM由配置CVM的C++应用程序启动,然后触发VM本身。这个C++应用程序是通过传递java应用程序的主类名和类路径的命令行来调用的。有一个主要的Java应用程序(让我们称之为管理器),它使用类加载器加载应用程序。我希望这个管理器是一个单一实例应用程序,因此它可以跟踪所有正在运行的应用换句话说:我第一次启动一个应用程序(例如app1)时,虚拟机将启动并且管理器将加载app1。在进一步调用加载其他应用程序(app2,app3等)时,Manager的同一实例将加载这些应用程序。如何在java中实现单个实例应用程序管理器(CVM PhoneME)?
经理工作正常,但事实并非如此。
是否有可能做我想要的东西?
这几乎是一样的我想,除了应用程序加载的一部分。但是,必需的软件包在CVM实施中不可用。
感谢您的回答。 该解决方案看起来不错。我会设法尝试它。 您认为可以从JVM执行从C++到应用程序运行实例的JNI调用吗?我相信它可以很好地解决问题,但是我不习惯JNI。 谢谢。 – Marcus 2010-05-21 13:22:30
@Marcus:其他人可以对此发表评论;我从来没有机会使用JNI。但是我对它的一般理解是,JNI调用是另一个方向:所以Java可以调用本地代码;通常不是相反的方式。 – 2010-05-21 13:57:34
可以从C++到Java进行JNI调用。我在过去的几天研究了这一点。主要的问题是不可能将一个不同的进程附加到以前创建的虚拟机上(至少我找不到方法,你知道它是否有可能吗?)。 我现在的解决方案是让VM守护进程守护进程。我打算使用IPC(InterProccess Comunication)调用来通知守护程序的新应用程序。这个人将会设法在正在运行的虚拟机中进行JNI调用。我只是要确定我要使用哪个IPC的选项。我的选择是DBUS,但它可能会改变。 – Marcus 2010-05-23 14:53:58