![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
NikitOS9 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
используется glassfish 2.1, ejb3, toplink, postgreSQL.
на клиенте flex, и есть видео плеер. он обращается к сервлету и получает от него поток. работает несколько запросов, после этого падает. сервлет представляет собой примерно вот:
бинарные данные беруться из базы
dbManager это бин
видео файлы размером пока 50 - 100 мегов. в формате flv оживляется перезагрузкой glassfish в стеке есть такое Caused by: org.postgresql.util.PSQLException: An I/O error occured while sending to the backend. at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:220) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254) at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:477) at $Proxy50.executeQuery(Unknown Source) at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.executeSelect(DatabaseAccessor.java:726) at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:501) ... 83 more Caused by: java.io.EOFException at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:261) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1182) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:194) ... 93 more возможно нужно создавать сначала временные файлы в каталоге апп сервера, а потом уже их отдавать. что тут можно сделать ? Спасибо Это сообщение отредактировал(а) NikitOS9 - 31.8.2009, 23:56 |
||||||
|
|||||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 4 Всего: 43 |
Почему бы не взять за основу например open source flash server http://www.osflash.org/red5 (ваше решение на мой взгляд неудачное)
Это сообщение отредактировал(а) COVD - 1.9.2009, 00:08 |
|||
|
||||
AJetman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 16.8.2009 Репутация: 2 Всего: 2 |
Glassfish и ему подобные контейнеры не предназначены для реализации подобных сервисов! Советую дальше и не пытаться и тем более еще выгружать данные из БД (как только БД еще не умерла?!).
Если у вас просто файлы FLV и вам, как я понял, необходимо скрыть названия файлов, то следуйте простой схеме и ничего у вас падать не будет: 1. Установить frontend-сервер: NGINX, а Glassfish будет выполнять у нас роль backend'a. 2. Все видеофайлы хранить в виде файлов, ни в коем случае не в базе. 3. При получении запроса на видеофайл отправлять в сервлете заголовок:
Что скажет Nginx отдавать контент клиенту из вашего файла, а Glassfish завершит запрос и не будет лишний раз напрягаться. Вот такая схема - одна из реализаций. Вообще у Nginx есть еще и специальный модуль для стриминга FLV... Как и у Lighttpd и других серверов. Это сообщение отредактировал(а) AJetman - 1.9.2009, 00:13 |
|||
|
||||
NikitOS9 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
да изначально видео не предполагалось. фотографии и панорамы, это дописалось за пару часов.
про red5 слышал, и видимо буду использовать, но это же тоже должно работать хоть медленно, а не валиться после пару запросов |
|||
|
||||
AJetman |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 16.8.2009 Репутация: 2 Всего: 2 |
Glassfish не может не валиться и скорее всего он умирает от недостаточного количества выделенной памяти в JVM. В коде
Добавлено @ 00:19 red5 - глючная и довольно сложная в работе система. Рекомендую обратить внимание на более легковесные Nginx и Lighttpd. Или вас пугает, что это не Java-powered решения? Это сообщение отредактировал(а) AJetman - 1.9.2009, 00:20 |
||||
|
|||||
NikitOS9 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
нет не пугает. скрывать мне ничего не нужно, просто хранить в базе удобно, сервис - каталог фотографий, панорам и видео.
ну мне казалось что хранить файлы в базе это нормально, в postgresql максимальный объем записи 1 GB. сервис находится на VPS, выделенная память 800 мегов, вполне возможно что из за этого а как вариант создавать временные файлы и потом их отдавать, то есть если запрашивали такой файл, то не тащить его из базы, а отдать по линку из временно директории ? |
|||
|
||||
serger |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 19.6.2007 Где: Ижевск Репутация: 2 Всего: 5 |
Ну можно же просто из blob брать поток и с ним работать (getBlobAsStream).. Не выгружая в память или файловую систему, если уж вы загнали всё в БД.
-------------------- упс! |
|||
|
||||
NikitOS9 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 6.12.2007 Репутация: 1 Всего: 1 |
да видимо можно, не знал про это.
а как связать сервлет или што нибуть с этим getBlobAsStream, так как видео плееру нужно указать урл, откуда брать видео поток |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |