什么是单身人士班?它可以帮我运行两个相关服务的单个实例吗?

这可能听起来很复杂,但无论如何我会问: 我正在运行一个使用类X的服务A.我想启动另一个服务B,它使用除了新类之外的类A. 服务A已在运行。我做了服务B的热部署。 这是真正的问题 - 服务B是否会使用相同的X类实例或单独的实例。单身人士如何帮助我?     
已邀请:
每个服务都将在其自己的操作系统(OS)进程空间中运行,并且每个进程空间都有自己的类实例。 “单例”类通常使用类中的静态字段进行编码,这些字段对于代码运行的进程空间是本地的,所以不,它们不会共享单例。每个人都会得到它自己的实例。 但是,您可以使用一些外部共享同步过程来执行您要执行的操作(例如,通过Java等同于.Net Remoting(或WCF)的任何内容公开单例 - 一个被编码为使用的网络暴露端点单身人士,并将您的服务“连接到”并使用可远程访问的Singleton)     
我不熟悉Java Web服务如何运行的细节,但如果它们都在同一个VM中运行,那么我认为这些类将在VM中的所有应用程序之间共享,因此静态字段将被共享。由于Singleton模式通常是通过将单个实例附加到静态成员来完成的,因此将共享Singleton。 这基于:清洁代码会谈 - “全球国家和单身人士” 您应该能够通过编写两个简单的Web服务来测试它。一个对单例执行某些操作的操作,例如设置标志,另一个检查它。     

要回复问题请先登录注册