2009-11-02 4 views
0

Я пытаюсь загрузить файл на сервер и сохранить информацию о файле в базе данных Access, есть ли необходимость обрабатывать потоки при подключении к базе данных для нескольких пользователей. Если да, то как это сделать?Многопоточность в подключении JDBC

ответ

1

Ровно. Каждый HTTP-запрос уже является потоком. Имейте в виду, что веб-контейнер создаст только один экземпляр сервлета во время жизни приложения и что код сервлета будет использоваться для всех запросов. Это означает, что любые переменные уровня класса или статические переменные будут распределяться между всеми запросами. Если у вас есть одна переменная, это не threadsafe. Вам необходимо объявить специфичные для запроса переменные threadlocal на уровне метода.

Что касается JDBC: просто напишите твердый код, и все должно идти хорошо. Использование пула соединений полезно только для повышения производительности соединения (что действительно стоит усилий, поверьте, подключение к базе данных - довольно дорогостоящая задача, которая может составлять не менее 200 мс или даже больше, при повторном использовании соединения из пула почти ничего). Это ничего не меняет в потоковом режиме кода, который вы пишете, он все еще находится под вашим контролем/руками. Чтобы получить четкое представление о том, как правильно использовать базовую кодировку JDBC, вы можете найти this article полезным.

2

Ваш веб-сервер наследуется многопоточным, что избавляет вас от реализации ваших собственных потоков для обработки загрузок. Удостоверьтесь, что несколько запросов не используют одни и те же ресурсы (не записывайте все загруженные файлы в один и тот же файл tmp, ....)

Чтобы избежать проблем с сохранением данных на вашем db, используйте пул соединений.

Так что да вам нужна тема, но если ваш дизайн хорош, то все потоковое будет обрабатываться вашими рамками

Смежные вопросы