Tomcat으로 호출을 확장해야하며 스레드를 내부적으로 시작하는 것이 좋습니다. 누구든지이 작업을 수행 할 필요가 있었습니까? 그렇다면 어떤 솔루션을 생각해 냈습니까?Java EE에서 여러 스레드를 어떻게 시작합니까?
답변
귀하의 질문은 다소 모호합니다. Tomcat은 이미 스레드 풀을 사용하여 HTTP 요청을 처리합니다. Tomcat 구성을 통해 스레드 수를 늘릴 수 있습니다.이 정보는 Tomcat 위키를 참조하십시오. 당신이 당신의 코드에서 당신이 스레드를 시작하려는 것을 의미하는 경우
, 나는 자바 5에 도입 된 java.util.concurrent의 API를 숙독 조언한다 또한이에 텍스트입니다 "연습 자바 동시성"를 읽고 제목.
스레드로 해결하려는 문제는 무엇입니까?
장기 실행 작업이있는 경우 JMS + 전체 Java EE 컨테이너를 사용해야합니다.
초과로드를 처리하려는 경우 두 개의 tomcat 인스턴스를 고려할 수 있지만 http 세션을 사용하는 경우 세션 복제를 조사해야합니다.
Tomcat을 사용해야하는 경우 java.util.concurrency
에서 Executors 프레임 워크를 사용해보십시오.
확장 성 향상을 위해 서버가 스레드를 관리해야하기 때문에 응용 프로그램 서버 내에 자체 스레드를 만드는 것은 일반적으로 권장되지 않습니다. 컨테이너가 보안 컨텍스트 (예 : 인증 된 주체)와 같이 스레드 컨텍스트에서 사용 가능한 것에 대해 가정 할 경우 문제가 발생할 수도 있습니다. 이는 일반적으로 스레드를 생성 한 다음 해당 컨테이너에서 알 수없는 해당 스레드의 서버 자원을 사용하는 경우에 발생합니다.
Tomcat에서 컨테이너 관리 스레드를 가져 오는 방법이 있는지 확인하십시오. WebLogic과 WebSphere는 commonj.WorkManager를 지원하므로 컨테이너 관리 스레드에 대한 작업을 예약 할 수 있습니다. Spring은 commonj도 사용할 수 있지만 Tomcat에서 지원되는지 여부는 확실하지 않다.
매우 구체적인 필요가 없다면 webapp 내에서 스레드를 실행해서는 안됩니다. 문제에 대한 세부 정보가 없으면 이것이 문제를 해결하기위한 올바른 접근 방법인지 알기가 어렵습니다.
당신은 " 가 통합, 또는 측면 거의 모든 J2EE 나 J2SE 응용 프로그램 함께 사용할 수있는 모든 기능을 갖춘 오픈 소스 작업 스케줄링 시스템입니다"하는 Quartz에서 살펴 봐야 할 수 있습니다.
다른 사람들이 물어 본 것처럼, 성취하려는 내용에 대해 더 자세히 설명해야합니다.
그렇지 않으면 tomcat은 스레드 풀을 사용합니다. 풀의 스레드 수를 늘리십시오. 최신 버전의 tomcat - 6.x를 사용하십시오. Java 6.0_10을 사용하십시오. 필요한 경우 프로파일 러를 사용하여 응용 프로그램을 조정하고 필요한 경우 JVM 설정을 사용하여 응용 프로그램을 조정하십시오.
관리되는 다중 스레딩을위한 J2EE 추상화는 JCA입니다. 특히, WorkManager 및 Work 클래스를 살펴보십시오. this arcicle도 참조하십시오. Spring은 또한 JCA 기반의 작업 관리자 추상화를 제공한다.
- 1. WPF에서 여러 창을 어떻게 시작합니까?
- 2. Java EE에서 프로토콜 버퍼 사용?
- 3. Java EE에서 HTTP를 https로 리디렉션
- 4. Android : AlertDialog.show()가 새 스레드를 시작합니까?
- 5. JSP/Java EE에서 FLV 비디오 재생
- 6. 요청시 Java 스레드를 어떻게 일시 중단합니까?
- 7. Java EE에서 세션을 어떻게 관리 할 수 있습니까?
- 8. 스레드를 생성하는 Java API
- 9. PostgreSQL 클라이언트 - 어떻게 시작합니까?
- 10. 단위 테스트 - 어떻게 시작합니까?
- 11. 스크립트를 어떻게 다시 시작합니까?
- 12. Java EE에서 객체에 대한 권한 부여
- 13. Java EE에서 DataSource 조회를 캐시하는 것이 안전합니까?
- 14. Java EE에서 Maven으로 "Application Client"생성
- 15. Java Deployment Toolkit - 인스톨은 언제 시작합니까?
- 16. 이 GPS 앱은 어떻게 시작합니까?
- 17. 어떻게 Catalyst의 자동을 사용하고 시작합니까?
- 18. Resque.redis.namespace를 사용하려면 resque를 어떻게 시작합니까?
- 19. iOS에서 백그라운드 작업을 어떻게 시작합니까?
- 20. Java EE에서 현재 웹 응용 프로그램의 이름을 얻으려면 어떻게해야합니까?
- 21. 아이폰에서 여러 스레드를 추적 유지
- 22. Java EE에서 일반 큐 모니터링 구성 요소를 구현하는 방법은 무엇입니까?
- 23. Java EE에서 세션 시간 초과에 대해 사용자에게 알립니다.
- 24. Eclipse Java EE에서 하위 클래스를 만드는 방법은 무엇입니까?
- 25. 다중 스레드를 통한 Java 로깅
- 26. 디스패처가 스레드를 어떻게 처리합니까?
- 27. 여러 스레드를 실행하기위한 VB.NET 코드
- 28. 편집 모드에서 UITextView (iPhone)를 어떻게 시작합니까?
- 29. AppleScript에서 Xcode의 특정 버전을 어떻게 시작합니까?
- 30. iOS 설정 번들에서 URL을 어떻게 시작합니까?
실제 달성하려는 내용에 대한 자세한 내용을 추가해야합니다. 장기 실행 작업, 동시성, 볼륨 ... – Robin
나는 종종이 질문에 대해 궁금해했습니다. 응용 프로그램 서버에서 스레드를 시작하는 것이 "OK"입니까? 나는 권위있는 답변을 찾지 못했기 때문에 곧이 주제에 대한 좋은 문서가 될 것입니다. –