繁体   English   中英

在应用程序之间共享Java对象

[英]sharing java objects between applications

我想编写一个应用程序,当该应用程序部署在服务器上时,它会发现该服务器上的某些类及其方法,并将其列表公开给客户端(通过Web服务,Servlet或RMI)。

然后,客户可以选择一种方法并激活它(使用反射)。

问题是我的应用程序与服务器上其他应用程序不在同一个上下文中,因此我无法激活它们的方法(我无法访问其类加载器)。

我有一些想法,但不确定它们是否可行:

  1. 创建一个jar并使服务器上的所有应用程序都知道(通过Manifes文件或通过将其放入服务器库中)-问题是,这样我就无法向客户端公开接口(也许可以通过RMI吗?)

  2. 据我所知,创建一个WAR并将所有应用程序链接到该WAR,以便它们在启动时加载它(例如链接到jar)。

  3. 是否有一个知道所有类的类加载器? 有办法吗?

  4. 分析器是如何做到的?

任何想法都将受到欢迎。

3)AFAIK应用服务器通常具有类加载器层次结构,因此没有单个类加载器可以访问所有类。 实际上,您经常需要加载同一类的多个实例,例如,在部署使用静态类变量或类或库的不同版本的独立应用程序时。 这是JBoss如何做到简短描述。

4)最有可能的探查器使用JVMTI

但是,请记住,由于安全性,稳定性和性能原因,建议不要公开每个类和每个对象。 用户是否应该能够在内部类或基本类(如String上调用方法? 用户应该可以调用System.exit()吗? 我会说不,因此您需要定义一些确定要公开内容的方法。 最简单的解决方案(专用服务)很可能会满足您的用例需求(您没有声明它们,所以只是一个猜测)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM