|
|
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
Слава Богу, народ помог разобраться с аплоадом файла :) Ещё раз спасибо. Я думал, что запись картинки в базу не составит труда, но не тут-то было. Пытаюсь записать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. После перехода к этой ф-ции, tomcat жрёт весь ресурс процессора, а страничка долго грузится. Если убрать cst.setBinaryStream, всё ок. Картинка пихается в массив байт так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Я не могу назвать себя профи в работе с потоками, поэтому и задаю такой вопрос. то-нибудь, подскажите пожалуйста, что я делаю не так? Спасибо большое заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:44 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
J-ProЯ не могу назвать себя профи в работе с потоками, поэтому и задаю такой вопрос. то-нибудь, подскажите пожалуйста, что я делаю не так? Сервер БД какой? Недавно была переписка что Oracle с блоб по стандарту JDBC не умеет работать, а крутых профи в Oracle это ине волнует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:31 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
Евгений Путилин Недавно была переписка что Oracle с блоб по стандарту JDBC не умеет работать, а крутых профи в Oracle это ине волнует Где это не умеет?;) А сервер, суда по предыдущему посту, MSSQL. Какой используется драйвер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:58 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
Denis Popov Евгений Путилин Недавно была переписка что Oracle с блоб по стандарту JDBC не умеет работать, а крутых профи в Oracle это ине волнует Где это не умеет?;) А сервер, суда по предыдущему посту, MSSQL. Какой используется драйвер? Да, БД Microsoft SQL Server 2000 SP4 (8.00.2039). Драйвер: Microsoft SQL Server 2000 Driver for JDBC Service Pack 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 15:54 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
А вообще, судя по коду, я всё правильно делаю? В чём может быть ошибка? Eщё, если нужно, версия Tomcat'a: 5.0.29 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 15:56 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
Судя по коду, ты получаешь массив байтов, оборачиваешь его в ByteArrayInputStream, после чего передаешь в базу, хотя есть метод setBytes(). Попробуй: Заменить CallableStatement на PreparedStatement если нет output-параметров Дергать PreparedStatement.setBytes(); Взять другой драйвер, к примеру, jtds ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 16:07 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
Denis PopovСудя по коду, ты получаешь массив байтов, оборачиваешь его в ByteArrayInputStream, после чего передаешь в базу, хотя есть метод setBytes(). Попробуй: Заменить CallableStatement на PreparedStatement если нет output-параметров Дергать PreparedStatement.setBytes(); Взять другой драйвер, к примеру, jtds Заменить CallableStatement на PreparedStatement если нет output-параметров - то же самое Дергать PreparedStatement.setBytes(); - Не знаю почему, но это помогло :) Странно, я, вроде, пробовал setBytes(), но она чего-то ругалась и я решил потоками. вот, блин ;) Спасибо большое за совет :) Щас буду разбираться дальше :) Взять другой драйвер, к примеру, jtds - не пробовал Спасибо ещё раз огромное, сегодняшняя помощь фоpума на sql.ru реально ощутима! ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 17:34 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
А замчем сначало читать весь FileItem с помощью get(), а затем оборачивать его в ByteStream? намного эффективнее использовать FileItem.getInputStream() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 11:25 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
Насчет потоков, как профессионал профессионалу могу посоветовать делать в определенных местах flush(). Иногда помогает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 01:51 |
|
||
|
CallableStatement.setBinaryStream вешает Tomcat
|
|||
|---|---|---|---|
|
#18+
funikovyuriА замчем сначало читать весь FileItem с помощью get(), а затем оборачивать его в ByteStream? намного эффективнее использовать FileItem.getInputStream() Вот, а я и не знал, что есть такая ф-ция... Но теперь буду знать, спасибо. Сейчас я использую просто FileItem.get(), а пихаю в базу с помощью CallableStatement.setBytes(). Всё проходит на ура. Показывать картинку вообще труда не составляет. Как посоветовал М.Голованов : М.Голованов<IMG src="URI_вашего_сервлета_который_выдает_картинку"> A сам сервлет просто выводит байты картинки, устанавливая ответ contentType в "image/jpeg". Отдельное спасибо за совет, я и не знал, что один сервлет в другой вставить можно таким, вот, образом... В общем, проблема решена, всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2006, 13:52 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33580218&tid=2150011]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 369ms |

| 0 / 0 |
