当前位置:  开发笔记 > 编程语言 > 正文

Java App Server中的Singleton ..这个想法有多糟糕?

如何解决《JavaAppServer中的Singleton..这个想法有多糟糕?》经验,为你挑选了1个好方法。

我目前正在研究一些在没有App Server的情况下开发的旧Java代码.它基本上是一堆带有输入接口和输出接口的"黑匣子代码"."黑匣子"类中的所有内容都是包含状态的静态数据结构,它们以定时间隔(每10秒)通过算法.黑盒子从主方法启动.

为了让自己保持这种状态,我想把"黑匣子"变成一个单身人士.基本上,任何想要访问黑盒内部逻辑的人都将获得相同的实例.这将允许我使用Message Driven bean作为黑盒子的输入,并使用某种JMS Publisher作为黑盒子的输出.

这个想法有多糟糕?有小费吗?

我遇到的主要问题之一是,我不知道"黑匣子"代码中可能存在Threads.

EJB中有"应用程序范围对象"这样的东西吗?

注意:我正在使用Glassfish



1> Yuval Adam..:

如果使用简单的singelton,一旦进入集群环境,就会遇到问题.

在这种情况下,您在多个JVM上有多个类加载器,并且您的sinlgeton模式将会中断,因为您将拥有该类的多个实例.

应用程序服务器(可能在集群环境中)中单例的唯一可接受用途是当单例完全无状态时,仅用作访问全局数据/函数的便利.

我建议检查应用程序服务器供应商针对此问题的解决方案.大多数(如果不是所有供应商)都会为您提供一些解决方案.

特别是对于你说你正在使用的Glassfish,请查看对Glassfish的Singleton EJB支持.它可能像添加单个注释一样简单.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有