开发者社区> 问答> 正文

如何确定在不传递ID的情况下在哪个Java Applet上下文中运行?

我是开发相当大的Swing Java Applet团队的成员。我们的大多数代码都是旧代码,并且有大量的单例引用。我们将所有这些都捆绑到一个“应用程序上下文”单例中。现在,我们需要创建一种方法来分离共享上下文(在当前显示的所有小程序之间共享)和非共享上下文(特定于当前显示的每个小程序)。

但是,我们在调用单例的每个位置都没有ID,也不想将ID传播到所有位置。识别我们在哪个applet上下文中运行的最简单方法是什么?(我已经尝试弄乱了类加载器,线程组,线程ID ...到目前为止,我什么都找不到使我能够标识调用源的信息)。

展开
收起
游客ufivfoddcd53c 2020-01-03 17:03:52 1030 0
1 条回答
写回答
取消 提交回答
  • 如果我对您的理解正确,那么想法是为每个调用者对象或“上下文”获得一个不同的“单例”对象。您可以做的一件事是创建一个线程局部全局变量,在其中写入当前上下文的ID。(可以使用AOP完成。)然后,在单例获取程序中,从线程本地获取上下文ID,以用作调用上下文的正确“单例”实例的键。

    关于AOP,在applet中使用它应该没有问题,因为取决于切入点,建议是在编译时编织的,并且JAR已添加到运行时依赖项。因此,在运行时不应保留AOP的任何特殊证据。

    2020-01-03 17:04:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载