Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Исключение в клиент-сервере 
:(
    Опции темы
lihusha
Дата 1.7.2009, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Здравствуйте , уважаемые!

Помогите , пожалуйста , решить проблемку.

Есть клиент-серверное приложение. Клиент -- апплет, сервер -- сервлет под томкатом.

На некотором этапе работы приложения клиент отправляет запрос с параметрами

Код

//serverUrl -- String
URL server = new URL(serverUrl)
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
String data = URLEncoder.encode("mode", "UTF-8") + "=" + URLEncoder.encode("read", "UTF-8");
//time -- String(один из параметров запроса)
data += "&" + URLEncoder.encode("time", "UTF-8") + "=" + URLEncoder.encode(time, "UTF-8");
writer.write(data);
writer.flush();
writer.close();


сервер получает параметры. В зависимости от первого параметра -- mode он выполняет те или иные действия с вторым параметром -- time.
Затем -- отправляет ответ.

Код

String mode = URLDecoder.decode(request.getParameter("mode"), "UTF-8");
String time =  URLDecoder.decode(request.getParameter("time"), "UTF-8");
if(mode.equals("read"))
{
   .....
   SomeClass someObject = new SomeClass();
   String someData = someObject.getData(time);
   String encodeData = URLEncoder.encode(someData, "UTF-8");
   OutputStreamWriter = new OutputStreamWriter(response.getOutputStream());
   writer.write(encodeData);
   writer.flush();
   writer.close();

}
else if(mode.equals"write")
{
   .....
   SomeClass someObject = new SomeClass();
   someObject.setData(time);
   
   OutputStreamWriter = new OutputStreamWriter(response.getOutputStream());
   writer.write("OK");
   writer.flush();
   writer.close();
   
}



теперь принимает клиент

Код

URL server = new URL(serverUrl);
HttpURLConnection = (HttpURLConnection)server.openConnection();
InputStreamReader reader = new InputStreamReader(connection.getInputStream());
int read = 0;
String encodeMessages = "";
for (; (read = reader.read()) != -1;)
    {
         encodeMessages += (char) read;
    }
reader.close();
String decodeMessages = URLDecoder.decode(encodeMessages, "UTF-8");



суть вопроса : при загрузке в Mozilla и IE апплет работает нормально , в Opera же в коде выше (самый нижний блок) , возникает исключение IOException

Что не так ?
PM MAIL   Вверх
Samotnik
Дата 1.7.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



текст исключения какой ?
я всего лишь могу предположить, что объект reader либо пустой, либо неправильно сформирован. 
Выложите код ошибки и результаты дебага, пажалста, тогда можно будет вам помочь
PM MAIL   Вверх
lihusha
Дата 1.7.2009, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Все , что я мог сделать , извлекая исключение , это  вставить  текст исключения в текстовое поле апплета
Код

//IOException e ;
text.setText(e.getMessage);



на выходе получился адрес сервера

правильно ли я мониторю исключение ?
если нет , подскажите , пжлст, как это сделать ?
PM MAIL   Вверх
Samotnik
Дата 1.7.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Цитата(lihusha @  1.7.2009,  11:14 Найти цитируемый пост)
Все , что я мог сделать , извлекая исключение , это  вставить  текст исключения в текстовое поле апплета

а в консоли какой текст исключений ?
PM MAIL   Вверх
lihusha
Дата 1.7.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



В консоли ничего -- приложение находится на хостинге, аплет запускается в браузере, если я не ошибаюсь , консоль тут не при чем.
Если ошибаюсь -- буду рад , если научите использовать консоль в данной ситуации

Это сообщение отредактировал(а) lihusha - 1.7.2009, 13:07
PM MAIL   Вверх
lihusha
Дата 1.7.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Исключение возникает именно в этой строчке

Код

InputStreamReader reader = new InputStreamReader(connection.getInputStream());

PM MAIL   Вверх
Samotnik
Дата 2.7.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



Цитата(lihusha @  1.7.2009,  15:26 Найти цитируемый пост)
Исключение возникает именно в этой строчке

значит тут и ошибка  smile 
Ну как вы планируете найти ошибку, если не можете даже полный стэктрэйс ексепшена увидеть ? 
Я так пологая и продеббажить вы тоже не можете ? 
Тогда хотя бы выведите на экран значение connection.getInputStream() и посмотрите что в нем происходит. 
Проблема в том, что не может создаться InputStreamReader reader , т.е. в конструктор к нему попадают не нужные данные, а левые. 
PM MAIL   Вверх
lihusha
Дата 2.7.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Samotnik, а можно вопрос совсем уж начинающего ?
Как можно мониторить апплет , когда он уже запущен в веб-приложении , а  не в отладчике , где есть консоль , и где можно сделать хотя бы так 
Код

System.out.println(requiredData);



Мне приходит на ум только один способ -- вставить данные , которые необходимо промониторить , в текстовое поле апплета.


Это сообщение отредактировал(а) lihusha - 2.7.2009, 18:40
PM MAIL   Вверх
Samotnik
Дата 2.7.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



lihusha,  а как ты вообще запускаешь свое приложение ?   С консоли ? или с  ИДЕ ?
PM MAIL   Вверх
lihusha
Дата 2.7.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



С IDE
PM MAIL   Вверх
Samotnik
Дата 2.7.2009, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



lihusha,  smile 
какой иде ???
я из тебя по слову вытягивать буду ? smile   
Опиши проблему максимально, на сколько только можно ее описать
На счет консоли, она есть во всех ИДЕ, которыми я пользовался  
IDEA, NetBeans, Eclipse, JCreator
в них есть консоли, куда пишутся все ексепшены и логирование (если оно есть в твоем приложении) посмотря в консоль - ты сможешь увидеть точную ошибку и точное место, где она присходит - а дальше дело техники
Цитата(lihusha @  2.7.2009,  18:39 Найти цитируемый пост)
можно сделать хотя бы так 
Выделить всёкод Java
1:
    
System.out.println(requiredData);

Так нужно сделать  smile   Вот напиши это и в консольку загляни, там увидиш свое значение   smile 
PM MAIL   Вверх
COVD
Дата 2.7.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

Как можно мониторить апплет , когда он уже запущен в веб-приложении , а  не в отладчике , где есть консоль , и где можно сделать хотя бы так 

У апплета, работающего в браузере, есть своя консоль (консоль java-plugin'а). Чтобы она всегда открывалась при старте апплета надо убедиться, что она включена в настройках java-plugin. В виндоуз:  Start -> ControlPanel -> Java -> Advanced -> JavaConsole -> Show console.
PM MAIL   Вверх
lihusha
Дата 2.7.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



IDE - NetBeans. 
Когда я тестирую апплет в вивере, где могу просмотреть консоль, все нормально , никаких исключений не возникает .
Когда апплет загружен Mozilla или IE , тоже все нормально , а вот в Opera возникает исключение. 







Это сообщение отредактировал(а) lihusha - 2.7.2009, 20:01
PM MAIL   Вверх
Samotnik
Дата 2.7.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



debug applet
нужно смотреть: что туда приходит - иначе гадать нету смысла
PM MAIL   Вверх
lihusha
Дата 2.7.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 8.6.2008

Репутация: нет
Всего: нет



Цитата

У апплета, работающего в браузере, есть своя консоль (консоль java-plugin'а). Чтобы она всегда открывалась при старте апплета надо убедиться, что она включена в настройках java-plugin. В виндоуз:  Start -> ControlPanel -> Java -> Advanced -> JavaConsole -> Show console.


этого я не знал , спасибо

Добавлено через 1 минуту и 58 секунд
Цитата

нужно смотреть: что туда приходит - иначе гадать нету смысла


может ли быть это исключение проблемой оперы ?

Это сообщение отредактировал(а) lihusha - 2.7.2009, 20:10
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0965 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.