2009-09-29 4 views
1

이 복잡한 사운드 수도 있지만 어쨌든 물을 것이다 : 나는 서비스 클래스에게 X를 사용하는를 실행하고싱글 톤 클래스 란 무엇입니까? 두 개의 관련 서비스에 대해 클래스의 단일 인스턴스를 실행하는 데 도움이 될 수 있습니까?

. 새로운 서비스 외에 을 사용하는 B 다른 서비스를 시작하고 싶습니다.

서비스 이 이미 실행 중입니다. 서비스 B의 최신 배포를 수행합니다.

여기 진짜 문제입니다 - 클래스 X 또는 별도의 인스턴스의 동일한 인스턴스를 사용 B 서비스를 제공 할 것이다. 싱글 톤 수업이 어떻게 나를 도와 줄 수 있습니까?

+0

인스턴스를 하나만 만들 수는 있습니다. 어떻게해야합니까? –

답변

2

각 서비스는 자체 운영 체제 (OS) 프로세스 공간에서 실행되며 각 프로세스 공간에는 자체 클래스 인스턴스가 있습니다. "싱글 톤"클래스는 일반적으로 클래스의 정적 필드를 사용하여 코드화됩니다. 이는 코드가 실행중인 프로세스 공간의 로컬 일 수 있으므로 아니요, 싱글 톤을 공유하지 않습니다. 각각은 자신의 인스턴스를 얻을 것이다.

그러나 외부 공유 동기화 프로세스를 사용하여 수행하려는 작업을 수행 할 수 있습니다. 예를 들어 java equivilent가 .Net Remoting (또는 WCF)과 관련이있는 단일 객체를 노출하는 것 - 네트워크 노출 엔드 포인트 싱글 톤을 사용하도록 코드화되어 있으며 두 서비스가 모두 "연결"되어 있고 원격으로 액세스 할 수있는 싱글 톤을 사용합니다.

+1

답장을 보내 주셔서 감사합니다. FYi Axis2 서비스입니다. 이 두 서비스가 동일한 시스템에서 실행되고 있다고 가정합니다. 인스턴스를 하나만 만들 수는 있습니다. 어떻게해야합니까? –

+0

내가 말했듯이, java remoting의 일종을 사용하여 java MarshallByRef Singleton의 java equivilent로 코딩되었습니다. (하나의 서비스 코드는 싱글 톤을 호스트해야하며 다른 하나는 "첫 번째에 살지만"반드시 사용해야합니다. –

+0

'java MarshallByRef Singleton'의 자바 수식어 - 알아야 할 것이 있습니다. –

0

Java 웹 서비스의 실행 방법에 익숙하지 않지만 둘 다 실행중인 경우 동일한 VM을 사용하면 클래스가 VM 및 정적 필드의 모든 응용 프로그램에서 공유 될 것이라고 생각됩니다. 싱글 톤 패턴은 일반적으로 단일 인스턴스를 정적 ​​멤버에 연결하여 수행되기 때문에 싱글 톤은 공유됩니다. 당신은 두 가지 간단한 웹 서비스를 작성하여이를 테스트 할 수 있어야한다 The Clean Code Talks - "Global State and Singletons"

:

이 기반으로. 싱글 톤에 플래그를 설정하거나 다른 플래그를 확인하는 것과 같은 일을하는 사람.