|
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 23
|
|||||||||||
Отправить данные с Applet к Servlet20.02.2008, 12:29. Показов 3343. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|