|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|||||||||||
Отправить данные с Applet к Servlet20.02.2008, 12:29. Показов 3361. Ответов 19
Метки нет (Все метки)
Есть апплет, из которого нужно отсылать запросы на сервлет. Запросы должны идти друг за другом НЕ дожидаясь ответа от сервлета.
Пробовал написать так
При этом ответ от сервлета должен приходить только после последнего объекта. Делать вектор объектов - не подходит по условию задачи.
Спасибо.
0
|
|||||||||||
| 20.02.2008, 12:29 | |
|
Ответы с готовыми решениями:
19
applet<->servlet<->oracle Обращение к Servlet из Applet-a Как связать Applet и Servlet ? |
|
mishgun
|
||||||||||||||||
| 20.02.2008, 23:34 | ||||||||||||||||
|
Ну во первых у тебя ошибка в строке
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 24.02.2008, 10:37 [ТС] | |
|
Mishgun, спасибо за ответ.
Пробовал закрывать ObjectOutputStream: out.close - не помогает. Исправил 'CONTENT_TYPE' - тоже никак не повлияло. Все равно отсылка всех объектов (сразу) происходит только при conn.getInputStream(). Хотел сделать так: Отослал объект - получил ответ от сервлета; Отослал объект - получил ответ от сервлета; Не работает - ошибка на стороне сервлета: при rres = (String) in.readObject() выдает EOFException - expecting data. хотя данные со стороны апплета отсылаются. Можно ли все-таки отправлять объекты друг за другом?
0
|
|
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
||||||
| 24.02.2008, 11:29 [ТС] | ||||||
|
P.S.
Если заново открывать соединение
java.net.ProtocolException: Cannot write output after reading input.
0
|
||||||
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 24.02.2008, 12:55 [ТС] | |
|
А может тогда использовать не HTTP?
0
|
|
|
mishgun
|
|
| 24.02.2008, 17:36 | |
|
Прийдется похоже тебе сделать это через Thread там есть методы которые
позволяют притормозить какие то действия пока совершаются другие.Ты с Тредами(Нитями)знаком? |
|
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 24.02.2008, 18:38 [ТС] | |
|
В общих чертах с Thread'ами я знаком. Ты наверное имеешь в виду метод join().
Но мне на самом деле надо отсылать объекты в рамках одного соединения, т.е. не делать несколько url.openConnection() и таким образом несколько раз запускать сервлет. А насколько я понимаю с помощью Thread'ов придется создавать несколько потоков, у каждого из которых будет свой url.openConnection(). Затем делать им thread.join(), чтобы они ждали завершения предыдущего потока. Правильно ли я понял? Или ты имеешь в виду действия внутри одного Thread'а и там методы типа wait() и т.п.?
0
|
|
|
mishgun
|
|
| 24.02.2008, 20:48 | |
|
Как раз последнее wait() notify notifyAll()
|
|
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 25.02.2008, 10:08 [ТС] | |
|
А как это мне поможет избежать Exception
java.net.ProtocolException: Cannot write output after reading input ? Можешь поподробнее написать?
0
|
|
|
mishgun
|
|
| 25.02.2008, 17:33 | |
|
Моя мысль была поставить все запросы к сервлету в очередь используя метод wait().То есть пока отправляется первый запрос остальные ждут.
И судя по Exception у тебя сервлет сразу по получения запроса пишет ответ(если я правильно понял из кусков кода).Я думаю что отправку ответа надо задержать до получения всех запросов. Хотя при рассмотрении кода я не вижу что бы сервлет отправлял ответ.Значит ситуевина такая необходимо задержать прием запросов в сервлете чтобы InputStream работал когда пройдут все запросы в твоем случае он начинает работать после первого запроса Или по другому посылаешь запрос из апплета в сервлет сервлет его плучает отправляет ответ апплету тогда отправляем второй ответ .В Этом случае InputStream уже сработал и ждет второй запрос.Тогда не надо в сервлете расписывать треды а только отправлять флаг апплету чтто типа запрос получен - давай следующий |
|
|
1 / 1 / 1
Регистрация: 18.08.2007
Сообщений: 289
|
|||||||||||
| 25.02.2008, 18:53 | |||||||||||
|
Попробуйте вот это.
Советую передавать объекты либо в общем контейнере(Vector), либо по-одиночке, каждый раз создавая новый поток, открывая, записывая/читая в/из него и закрывая его. На сервлете можно использовать HTTPSession, чтобы удержать клиента на время его работы с сервером.
0
|
|||||||||||
|
mishgun
|
|
| 25.02.2008, 23:15 | |
|
Это было бы самое простое только вот автору по условия нельзя использовать контейнеры.
И всё таки я думаю что вариант с тредами и отправкой сервлетом сигнала апплету о получении запроса и типа давай следующий лютше. |
|
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|||||||||||
| 26.02.2008, 11:21 [ТС] | |||||||||||
|
Вот чего я пишу
Во второй итерации при попытке conn.getOutputStream() выдается такой exception java.net.ProtocolException: Cannot write output after reading input
Во второй итерации при попытке request.getgetInputStream() выдается exception java.io.StreamCorruptedException: Caught EOFException while reading the stream header. Это исключение, как я понимаю, является следствием ошибки на стороне апплета. Т.о. запрос1 отсылается, принимается сервлетом, сервлет отсылает ответ1, апплет получает ответ1 А вот дальше запрос2 не отсылается ...
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 26.02.2008, 11:52 [ТС] | |
|
2 mishgun
Что касается задержек запросов - то пока я так и не понял смысл чего эта задержка и выстраивание в очередь запросов даст. 'Я думаю что отправку ответа надо задержать до получения всех запросов.' - а вот как собственно отправить по ОДНОМУ (не вектор запросов) запросы на сервер? Мне надо получить запрос - 'посмотреть' на него, затем получить следующий - 'посмотреть' на него и т.д. 'Или по другому посылаешь запрос из апплета в сервлет сервлет его плучает отправляет ответ апплету тогда отправляем второй ответ ' - именно так я и хочу сделать - только вот не получается ![]() 2 iZEN: Я вроде примерно так и написал - только внутри цикла for 'либо по-одиночке, каждый раз создавая новый поток, открывая, записывая/читая в/из него и закрывая его. На сервлете можно использовать HTTPSession, чтобы удержать клиента на время его работы с сервером' - А можно про удержание клиента поподробнее - мне нужно пересылать объекты не разрывая соединение. P.S. Спасибо всем за советы!
0
|
|
|
mishgun
|
||||||
| 26.02.2008, 19:15 | ||||||
|
попробуй так
апплет
|
||||||
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 27.02.2008, 17:41 [ТС] | |
|
2 mishgun
Пробовал использовать твой код. После Opening connection Writing Order Waiting for response выдается исключение java.lang.IllegalAccessError: Already connected Мне на другом форуме сказали, что так делать все равно нельзя: 'Serlvet I/O Stream is not the same as normal TCP I/O stream. You can only open OutputStream to write to servlet before u open the InputStream. Once u open the InputStream, u can no longer open OutputStream with the same URLConnection. If u want to send more data, u've to open URLConnection again.' А вот как сделать используя тот же URLConnection - неизвестно.Может у тебя есть какие-ниб. идеи по поводу 'normal TCP I/O stream'. Как использовать ТСР соединения? Или где можно про это прочитать?
0
|
|
|
mishgun
|
|
| 27.02.2008, 18:43 | |
|
TCP/IP-это тебе надо создавать сокетное соединение.В этом случае могут быть проблемы с апплетом потому что будут выпадать исключения безопасности.Знаешь что вместо того чтобы името общее соединение в методе sendrequest сделай URLConnection отдельно в каждом методе а из sendRequest убери тогда должно работать.Хотя я бы вашему преподу сказал пару ласковых насчет таких заданий.В нормальной практике никогда тебе не придется заниматься таким онанизмом.Засунул все в вектор(а ещё лучше хаштейбл) передал его сервлету и всем хорошо.А здесь во-первых и ресурсов больше уходить будет(каждый раз создавать соединение)и логики в такой проге вообще не будет.
|
|
|
1 / 1 / 1
Регистрация: 18.08.2007
Сообщений: 289
|
|
| 27.02.2008, 23:08 | |
|
Автору темы.
Посоветую заглянуть во в эти книжки, по-моему, там что-то такое есть и даже больше: 1. 'Разработка Web-серверов для электронной коммерции. Комплексный подход (с CD-ROM)' Шарма, Шарма (http://www.books.ru/shop/books/9016); 2. 'Сервлеты и JavaServer Pages. Библиотека программиста' Холл (http://www.books.ru/shop/books/11656). Особенно последняя самая насыщенная и подробная. Советую посмотреть обе. Удачи!
0
|
|
|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|
| 04.03.2008, 09:27 [ТС] | |
|
Спасибо всем за советы.
Мне тут предложили сделать все через RMI. Если получится - напишу.
0
|
|
|
75 / 36 / 1
Регистрация: 03.08.2012
Сообщений: 447
|
|
| 26.12.2014, 19:55 | |
|
konn, видимо ничего не вышло? Или вы уже превратились в песок?
0
|
|
| 26.12.2014, 19:55 | |
|
Помогаю со студенческими работами здесь
20
MS sql, servlet & applet Взаимодействие между applet<->servlet->db, создание java online игры
Как отправить ответ сервера клиенту? Servlet Tomcat Servlet. Получить данные из combobox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|