我是开发相当大的Swing Java Applet团队的成员。我们的大多数代码都是旧代码,并且有大量的单例引用。我们将所有这些都捆绑到一个“应用程序上下文”单例中。现在,我们需要创建一种方法来分离共享上下文(在当前显示的所有小程序之间共享)和非共享上下文(特定于当前显示的每个小程序)。
但是,我们在调用单例的每个位置都没有ID,也不想将ID传播到所有位置。识别我们在哪个applet上下文中运行的最简单方法是什么?(我已经尝试弄乱了类加载器,线程组,线程ID ...到目前为止,我什么都找不到使我能够标识调用源的信息)。
如果我对您的理解正确,那么想法是为每个调用者对象或“上下文”获得一个不同的“单例”对象。您可以做的一件事是创建一个线程局部全局变量,在其中写入当前上下文的ID。(可以使用AOP完成。)然后,在单例获取程序中,从线程本地获取上下文ID,以用作调用上下文的正确“单例”实例的键。
关于AOP,在applet中使用它应该没有问题,因为取决于切入点,建议是在编译时编织的,并且JAR已添加到运行时依赖项。因此,在运行时不应保留AOP的任何特殊证据。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。