ciò che è una classe Singleton? Può aiutarmi in esecuzione singola istanza di una classe per due servizi correlati?

StackOverflow https://stackoverflow.com/questions/1494642

Domanda

Questo potrebbe sembrare complesso, ma chiederò comunque:

Sono in esecuzione un servizio di A che si avvale di classe X . Voglio iniziare un altro servizio B , che utilizza le classi A , oltre nuove classi.

Servizio A è già in esecuzione. Faccio una distribuzione a caldo di servizio B .

Qui è la vera domanda - Will Servizio B utilizzare la stessa istanza della classe X o un'istanza separata. Come può Singleton classe aiutami qui?

È stato utile?

Soluzione

Ogni servizio verrà eseguito in esso la propria sistema operativo (OS) spazio di processo, e ogni spazio di elaborazione ha è istanze di classe. Una classe "Singleton" viene normalmente codificato utilizzando campi statici in una classe, che sarebbe locale al processo di spazio il codice è stato eseguito in, quindi no, non condividerà single. Ogni otterrà il proprio esempio.

Si può fare ciò che si sta cercando di fare, tuttavia, utilizzando un processo di sincronizzazione condiviso esterno, (ad esempio, esponendo un Singleton sopra qualunque sia l'equivilent Java è quello di .NET Remoting (o WCF) - una rete esposto endpoint che è codificato utilizzare un Singleton, e hanno entrambi i propri servizi "connettersi a" e l'uso che accessibile da remoto Singleton)

Altri suggerimenti

Non ho dimestichezza con i dettagli di come i servizi Web Java vengono eseguiti, ma se sono entrambi in esecuzione nella stessa VM allora penso le classi sarebbero condivisi tra tutte le applicazioni nei campi VM e statici sarebbe quindi essere condivise . Poiché il pattern Singleton normalmente viene eseguita collegando una singola istanza di un membro statico, il Singleton sarebbe condivisa.

Questo in base a: il codice pulito Talks - "Stato globale e Singletons"

Si dovrebbe essere in grado di verificare il lavoro svolto scrivendo due servizi Web semplici. Uno che fa qualcosa per il singleton, come impostare un flag, e un altro che verifica la presenza di esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top