2009-11-02 6 views
0

파일을 서버에 업로드하고 파일 정보를 Access 데이터베이스에 저장하려고하면 다중 사용자를위한 데이터베이스 연결 중에 스레드를 처리해야합니다. 그렇다면 어떻게해야합니까?JDBC 연결의 다중 스레드

답변

1

에 의해 처리됩니다. 각 HTTP 요청은 이미 자체 스레드입니다. 웹 컨테이너는 응용 프로그램의 수명 기간 동안 하나의 서블릿 인스턴스 만 생성하고 모든 요청간에 서블릿 코드가 공유된다는 점에 유의하십시오. 이는 모든 클래스 수준 변수 또는 정적 변수가 모든 요청간에 공유 될 것임을 의미합니다. 그러한 변수가 하나있는 경우 이 아니고 threadsafe가됩니다. 메서드 수준에서 요청 별 변수 threadlocal을 선언해야합니다.

JDBC에 관해서 : 솔리드 코드를 작성하면 모든 것이 잘 진행됩니다. 연결 풀을 사용하는 것은 연결 성능을 향상시키는 데 유용합니다 (실제로 노력할 가치가 있습니다. DB 연결은 풀 비용에서 연결을 재사용하는 동안 적어도 200 밀리 초 또는 그 이상까지 계산할 수있는 상당히 비싼 작업입니다.) 거의 아무것도). 그것은 당신이 쓰는 코드의 쓰레드 안전성에 아무런 변화가 없으며, 여전히 당신의 통제하에 있습니다. 기본 JDBC 코딩을 올바른 방법으로 수행하는 방법에 대한 명확한 그림을 얻으려면 this article이 유용 할 수 있습니다.

2

귀하의 웹 서버는 상속 다중 스레드이며 업로드를 처리하기위한 스레드를 구현하지 않아도됩니다. 그러나 여러 요청에서 동일한 리소스를 사용하지 마십시오 (같은 tmp 파일에 업로드 된 모든 파일을 쓰지 마십시오 ....)

데이터를 db에 저장하는 데 문제가 발생하지 않도록하려면 연결 풀을 사용하십시오.

는 그래서 그래 당신은 스레드를 필요로하지만 디자인이 좋은 경우 모든 스레딩은 프레임 워크 정확히