这听起来复杂,但我会问反正:

我正在运行的服务的 A 其使用类的 X 即可。我要开始另一项服务的 B'/ STRONG>它使用类的 A 除了新类。

服务的 A 已经在运行。我做服务的的热部署。

<强>以下是真正的问题 - 将服务的使用类的同一实例的 X 或一个单独的实例。如何Singleton类帮助我在这里?

有帮助吗?

解决方案

每个服务将在它自己的操作系统(OS)进程空间中运行,并且每个处理空间都有它自己的类实例。 A“单”类使用的一类静态字段,这将是本地的代码中正在运行的进程空间正常编码,所以不,他们不会分享单身。每个将获得它自己的实例。

您可以做你正在尝试做的,但是,使用一些外部共享同步过程中,(例如,露出过任何java的equivilent单身是.NET远程(或WCF) - 网络暴露端点是编码使用单例,并同时拥有您服务“连接到”,并使用该远程访问辛格尔顿)

其他提示

我不熟悉如何Java Web服务的运行细节,但如果他们都在同一个虚拟机中运行那么我认为阶级的则横跨在VM和静态字段的所有应用程序将因此被共享共享。由于Singleton模式通常是由单个实例附接至静止构件来实现,该单件将被共享。

此基础上:清洁守则会谈 - “全球国家和单身”

您应该能够通过写两个简单的Web服务来测试它。一个没有东西的单身,如设置一个标志,另一个检查它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top