我正在做一个基于云服务器PhoneME VM的嵌入式平台的应用管理器。虚拟机由C++应用启动,该应用配置云服务器,然后触发虚拟机本身。这个C++应用程序是从命令行调用的,传递java应用程序的主类名和类路径。有一个主要的java应用程序(让我们称之为Manager),它使用类加载器加载应用程序。我希望这个管理器是一个单实例应用程序,这样它就可以跟踪所有正在运行的应用程序。
换句话说:当我第一次启动一个应用程序(例如app1 )时,VM将启动,管理器将加载app1。在进一步调用加载其他应用程序(app2、app3等)时,管理器的同一实例将加载这些应用程序。
管理器工作得很好,除了这不是一个单独的实例。
可以做我想做的事吗?
我发现了这个:http://www.knowledgesutra.com/forums/topic/59760-how-to-implement-single-instance-application-on-java/
这几乎和我想要的一样,除了应用程序加载部分。但是,在云服务器实现中不提供所需的包。
发布于 2010-05-21 04:54:13
有多种方法可以强制应用程序的单个实例。例如,Firefox使用锁文件。
我见过的最常见的方式之一是启动“管理器”,但在启动时,尝试在某个端口上打开一个侦听连接的ServerSocket。
如果你不能打开套接字,你就知道你不是单例实例。因此,不是启动应用程序,而是连接到侦听套接字,并将程序参数发送给它。
如果成功打开套接字,请按照要求启动app1,同时在另一个线程上侦听来自作为重复实例启动的管理器的传入连接。
编辑:描述非ME环境中的流程。作为一个ME开发者,我不能在手机上评论它的可行性。
https://stackoverflow.com/questions/2877440
复制相似问题