문제

Struts 프레임워크의 액션 컨트롤러가 멀티 스레드라고 말하는 것은 요청을 받아 모델에 전달하는 서블릿의 인스턴스가 여러 개 있다는 뜻인가요?아니면 모든 요청을 처리하는 단일 인스턴스가 있다는 뜻입니까?어떤 영상이라도 감사하겠습니다

도움이 되었습니까?

해결책

대부분의 다른 서블릿과 마찬가지로 각 요청을 처리하기 위해 별도의 스레드가 생성됩니다.당신은 SingleThreadedModel 각 요청에 대해 서블릿의 새 인스턴스를 가져오는 인터페이스입니다.

다른 팁

보다 http://struts.apache.org/1.x/userGuide/building_controller.html

Struts 컨트롤러 서블릿은 Action 클래스의 인스턴스를 하나만 생성하고 이 인스턴스를 사용하여 모든 요청을 처리합니다.따라서 스레드로부터 안전한 Action 클래스를 작성해야 합니다.스레드로부터 안전한 서블릿을 작성하는 데 사용하는 것과 동일한 지침을 따르십시오.확장 가능하고 스레드로부터 안전한 Action 클래스를 작성하는 데 도움이 되는 두 가지 일반적인 지침은 다음과 같습니다.

  • 지역 변수만 사용 - 스레드 안전 코딩을 돕는 가장 중요한 원칙은 지역 변수만 사용하는 것입니다. 인스턴스 변수가 아님, Action 클래스에서.지역 변수는 JVM에 의해 각 요청 스레드에 할당된 스택에 생성되므로 공유에 대해 걱정할 필요가 없습니다.필요한 모든 변수가 메서드 매개변수로 전달되는 한 작업은 여러 로컬 메서드로 분해될 수 있습니다.이는 JVM이 단일 스레드와 연관된 호출 스택을 사용하여 내부적으로 이러한 변수를 처리하므로 스레드 안전성을 보장합니다.

  • 자원 절약 - 일반적으로 부족한 리소스를 할당하고 이를 동일한 사용자(사용자 세션)의 요청에 걸쳐 유지하면 확장성 문제가 발생할 수 있습니다.예를 들어, 애플리케이션이 JDBC를 사용하고 모든 사용자에게 별도의 JDBC 연결을 할당하는 경우 사이트가 갑자기 Slashdot에 나타날 때 확장성 문제가 발생할 수 있습니다.호출한 Bean 메소드가 예외를 발생시키는 경우에도 적절한 View 구성 요소에 제어를 전달하기 전에 풀을 사용하고 리소스(예: 데이터베이스 연결)를 해제하도록 노력해야 합니다.

struts 1은 스레드로부터 안전하지 않습니다.그러나 strus 2의 경우 요청당 하나의 인스턴스입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top