2011-12-05 2 views
2

간단한 서비스와 유사한 응용 프로그램을 만들려고합니다. 나는 진입 점, 서블릿 요청의 수신기 및 몇 가지 헬퍼 자바 클래스로 브라우저를 사용하고 있습니다. 예를 들어, 사용자 A은 사용자 B과 동시에 애플리케이션을 사용합니다.여러 사용자가 웹 응용 프로그램에서 사용하는 일반 Java 객체는 어떻게됩니까?

내 질문은 여러 사용자가 서비스에 액세스 할 때 도우미 클래스는 어떻게됩니까? 사용자가 응용 프로그램을 사용할 때마다 인스턴스화됩니까? 5 명의 사용자 (도우미 클래스)가 5 번 인스턴스화 되었습니까, 아니면 모든 사용자에게 모든 사본이 하나입니까?

+0

나는 이해하지 못한다. pojos는 도우미 클래스인가? 또는 pojos에 무슨 일이 일어나는 지 알지만 도우미 클래스에 어떤 일이 일어나는지 확실하지 않은가요? – omarello

+0

불명확 한 설명에 대해 사과드립니다. pojos는 도우미 클래스입니다. 여러 사용자가 웹 응용 프로그램을 사용할 때 어떤 일이 발생하는지 잘 모르겠습니다. –

+0

@simon : 코드를 보지 않고도 대답을 제공 할 수는 없습니다. Java 클래스 (및 객체)를 사용하는 방법에는 여러 가지가 있습니다. – home

답변

2

그 POJO를 인스턴스화하는시기와 위치에 따라 다릅니다. doGet 또는 doPost에서 인스턴스화하는 경우 모든 요청에 ​​대해 해당 오브젝트의 새 인스턴스를 작성합니다 (요청에 응답 한 후 삭제합니다). 이제 더 이상 메모리 스코프 (세션 등)에 '게으른 인스턴스를 생성'하는 경우 더 길게 유지합니다 (예 : 세션의 수명 기간 동안 세션 범위 용).

+0

정확히 내가 무엇을 찾고 있었는지!thanks @ Hyangelo –

1

간단한 대답은 new YourClasseName()을 사용할 때마다 새 개체를 인스턴스화한다는 것입니다.

일종의 특별한 변경을하지 않았다면 서블릿 컨테이너가 단일 서블릿에 대한 새로운 요청마다 스레드를 할당하기 때문에 간단하게 pojo를 구성하기 위해 5 users = 5 threads = 5 호출을 넣으십시오. 개체가 인스턴스화 된 것을 5 번 의미합니다.

+0

안녕하세요, 감사합니다. @omarello, 서블릿이 어떻게 작동하는지 혼란스러워합니다. 하지만 당신은 그것을 분명히 설명했습니다. 고마워. –

1

제 생각에 당신은 돌아가서 클래스 인스턴스화와 그 수명주기에 대해 자바에서 먼저 읽어야한다고 생각합니다. 그리고 상황에 좀더 구체적으로 알려면 코드 스 니펫을 제공해주십시오. 그것은 당신이 내가 생각할 수있는 헬퍼 클래스, 3 가능성을 인스턴스화 방법에 따라 달라집니다 :

1 일반 헬퍼 클래스

이것은 단순히 Helper h = new Helper();를 호출하고 당신이 당신의 헬퍼 클래스에 대한 작업을 호출하는 경우입니다 h.doHelp(param) - 서블릿이 이것을 호출 할 때마다 Helper 클래스의 새 인스턴스를 만듭니다. 물론 헬퍼 클래스가 정적 변수를 사용하지 않는 한.

2 - 싱글

당신이 싱글로 당신의 도우미를 구현하고 서블릿은 서블릿 주 같은 경우에, 다음 모든 요청 그것은 당신이 그런 식으로 할 경우 싱글이 생성되는 방법, 예를 들어 Helper h = Helper.getInstance()를 호출

정적 클래스 도우미 클래스는 단지 예를 들어, 정적 메소드를 사용하는 경우

- Hepler 클래스

3. Helper.doHelp(param); 도우미 클래스가 정적 변수를 사용하지 않는 한, 다른 요청 간에는 공유가 없습니다.

+0

나는 규칙적인 도우미 클래스만을 사용하고있다. 인스턴스 생성의 끝에서 나는 h1, h2, h3 각각의 헬퍼 메소드를가집니다. –

1

도우미 클래스는 싱글 톤이어야합니다. 그러면 userA와 userB가 둘 다 인스턴스화하는 대신 동일한 인스턴스를 사용하게됩니다.

+0

나는 그것을 할 수 있다고 생각하지만 모든 요청에 ​​대해 사이클을 만들고 파괴한다면 더 좋을까요? –

관련 문제