есть апплет который на прямую обрашается к базе... его надо перевести на апплет+севлетную основу с минимальными изменениями...
какие есть предложение..
мои предположения: это просто добавить объект который будет связыватся с сервлетом и передавать ему CQl запрос. и получив ответ состовлять из нето обьект который будет иметь все использованные в апплете свойства и методы ResultSet -а.
(интересно можноли обойтись без создание этого обьекта. например сериализировать ResultSet передпть его апплету. и десериализировать)
Здравствуйте, Passer, Вы писали:
P>есть апплет который на прямую обрашается к базе... его надо перевести на апплет+севлетную основу с минимальными изменениями... P>какие есть предложение.. P>мои предположения: это просто добавить объект который будет связыватся с сервлетом и передавать ему CQl запрос. и получив ответ состовлять из нето обьект который будет иметь все использованные в апплете свойства и методы ResultSet -а. P>(интересно можноли обойтись без создание этого обьекта. например сериализировать ResultSet передпть его апплету. и десериализировать)
Смысл серверной части (сервлета) в таких решениях не в том чтобы прозрачно перенаправлять данные от апплета к базе. А в том чтобы облегчить как можно больше жизнь клиенту и уменьшить общение апплета с серверной частью, взвалив всю возможную работу на сервер.
То есть смысл в том что нужно минимизировать количество данных и обращеений между апплетом и серверром. Из этого и надо исходить.
В твоём же решении наблюдается желание как сделать побыстрее и чтобы кода поменьше. Какой тогда смысл в сервере?
апплетная часть проги не делает особо сложных операций так что перехад на Applet+Servlet не для уменьшения нагрузки. просто нужен апплет который отовсюду сможет открыватся и очень переносимый. так. что при использовании просто апплета ПК пользователя не позволит ему(апплету) обрашатся к файлам. а не все пользователи смогут настроить policy. вторая причина это на случай смены пероля к бызе или местонахождения базы апплетнужно будет перекомпилить с новыми параметрами или эти параметры передавать как
<param name=ConnectionString value="//127.0.0.1:3306/db?user=root&password=123456">
что недопустимо с точки зрения безопасности. вот оснавные причины.
а теперь о методах
Здравствуйте, Passer, Вы писали:
P>апплетная часть проги не делает особо сложных операций так что перехад на Applet+Servlet не для уменьшения нагрузки. просто нужен апплет который отовсюду сможет открыватся и очень переносимый. так. что при использовании просто апплета ПК пользователя не позволит ему(апплету) обрашатся к файлам. а не все пользователи смогут настроить policy.
Какая связь между файлами и работой с БД через сервлет?
P>вторая причина это на случай смены пероля к бызе или местонахождения базы апплетнужно будет перекомпилить с новыми параметрами или эти параметры передавать как P><param name=ConnectionString value="//127.0.0.1:3306/db?user=root&password=123456"> P>что недопустимо с точки зрения безопасности. вот оснавные причины.
Ну параметры к примеру и сервлет мог бы отдать. Единственное что апплет не смог бы обратится к базе на другом хосте.
P>а теперь о методах
ResultSet тебе сериализовать вряд ли удастся. Если в апплете у тебя всё просто, почему бу сервлетом не отдавать подготовленные данные апплету?
Re[4]: Applet to Applet+Servlet
От:
Аноним
Дата:
09.08.05 13:37
Оценка:
Здравствуйте, Blazkowicz, Вы писали:
B>Какая связь между файлами и работой с БД через сервлет?
так пользователю позволяется загружать данные в базу с файла.
P>>а теперь о методах B>Если в апплете у тебя всё просто, почему бу сервлетом не отдавать подготовленные данные апплету?
там все совсем не просто. там все фонкции не требуюшие больших ресурсов... но этих функший тьма. просто куча...
B>ResultSet тебе сериализовать вряд ли удастся.
тогда может кто нить знает компоненту вроде Memory Table(думаю по имени понятно для чего он)
Здравствуйте, Passer, Вы писали:
P>что недопустимо с точки зрения безопасности. вот оснавные причины.
С точки зрения безопасности также нехорошо и SQL запрос с апплета посылать. А посылать надо команду с параметрами. Сервлет (или соответствующий бин) составит на основании параметров запрос в базу. Потом из ResultSet надо вынуть данные, положить их в обьект и отослать его апплету. Обьект можно положить в кеш для следующих запросов, если это имеет смысл.
Здравствуйте, Passer, Вы писали:
P>Здравствуйте, Blazkowicz, Вы писали:
P>...вторая причина это на случай смены пероля к бызе или местонахождения базы апплетнужно будет перекомпилить с новыми параметрами или эти параметры передавать как P><param name=ConnectionString value="//127.0.0.1:3306/db?user=root&password=123456"> P>что недопустимо с точки зрения безопасности. вот оснавные причины.
с точки зрения безопасности, "прозрачный" сервлет не очень то ее (безопасность) повышает, поскольку через него теперь можно выполнять все опасные действия не заботясь ни о пароле, ни об имени пользователя, ни о хосте.
--
Дмитро
Re[4]: Applet to Applet+Servlet
От:
Аноним
Дата:
10.08.05 08:01
Оценка:
Здравствуйте, dshe, Вы писали:
D>с точки зрения безопасности, "прозрачный" сервлет не очень то ее (безопасность) повышает, поскольку через него теперь можно выполнять все опасные действия не заботясь ни о пароле, ни об имени пользователя, ни о хосте.
ну не предпологаетсяже создание обсалютно прозрачный сервлет. сервлет будет выполнять запросы с логином и паролем который введет пользователь в апплет.
и будет выполнять только опраделенные sql запросы. (вписывание данных в непозволительную таблицу или попытка удаление таблицы будут игнорироватся)
Здравствуйте, Passer, Вы писали:
P>есть апплет который на прямую обрашается к базе... его надо перевести на апплет+севлетную основу с минимальными изменениями... P>какие есть предложение.. P>мои предположения: это просто добавить объект который будет связыватся с сервлетом и передавать ему CQl запрос. и получив ответ состовлять из нето обьект который будет иметь все использованные в апплете свойства и методы ResultSet -а. P>(интересно можноли обойтись без создание этого обьекта. например сериализировать ResultSet передпть его апплету. и десериализировать)
Хорошо бы сначала сформулировать задачу. Вопросы Blazkowicz'а мне подсказывают,
что вы этого не сделали.
Передавать в апплет ResultSet не целесообразно, все равно ResultSet подгружает сразу все данные кроме BLOB.
Если нужны и блобы — придется делать загрузку полей порциями, не так все просто.
Иначе — получить запрос в сервлете (не SQL), фильтры, выполнить соответствующий запрос к БД,
загрузить все данные в Vector и отправить в Response.
Vector замечательно сериализуется, тут все будет просто.
Здравствуйте, Winnie the Bear, Вы писали:
WTB>загрузить все данные в Vector и отправить в Response. WTB>Vector замечательно сериализуется, тут все будет просто.
вот я сделал так... в результате когда запрос выдает очень большой результат сервлет начал давать ошибку (out of memory).
вот я увеличил место в памяти выеденное под tomcat. все заработало.
сейчас мне интересно а сможетли апплет принять данные такого большого размера.
как можно опраделить память выделяемую под апплет??????????
Здравствуйте, Passer, Вы писали:
P>вот я сделал так... в результате когда запрос выдает очень большой результат сервлет начал давать ошибку (out of memory). P>вот я увеличил место в памяти выеденное под tomcat. все заработало. P>сейчас мне интересно а сможетли апплет принять данные такого большого размера.
P>как можно опраделить память выделяемую под апплет??????????
Понимаешь ли, для запроса всегда найдется такая табличка, что все данные в память не поместятся. Хочешь чтобы у пользователя твой апплет создавал своп на пару гигабайт?
Здравствуйте, Blazkowicz, Вы писали:
B>Понимаешь ли, для запроса всегда найдется такая табличка, что все данные в память не поместятся. Хочешь чтобы у пользователя твой апплет создавал своп на пару гигабайт?
скажем так.. если это будет необходимо пусть. тем более не думаю что будут запросы более чем на 10-15 мегабайт
P>вот я сделал так... в результате когда запрос выдает очень большой результат сервлет начал давать ошибку (out of memory). P>вот я увеличил место в памяти выеденное под tomcat. все заработало. P>сейчас мне интересно а сможетли апплет принять данные такого большого размера.
Тут 2 варианта: передавать все сразу или передавать частями.
Первый проще, зато второй всегда работает.
P>как можно опраделить память выделяемую под апплет??????????
Мой апплет без всяких настроек кушает 40Мб%)
Здравствуйте, Winnie the Bear, Вы писали:
P>>как можно опраделить память выделяемую под апплет?????????? WTB>Мой апплет без всяких настроек кушает 40Мб%)
а вот у меня кстати нет... ошибку дает... кто нить знает как сделать чтобы апплету позволялось занимать больше памяти???
Здравствуйте, Passer, Вы писали:
P>а вот у меня кстати нет... ошибку дает... кто нить знает как сделать чтобы апплету позволялось занимать больше памяти???