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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вообще не загрузить апплет :( 
:(
    Опции темы
Wanderer2019
Дата 29.12.2004, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



java.lang.NullPointerException

Добавлено @ 15:51
а если создать второй сервлет, отправляющий информацию (ту же что и первый), то все работает нормально, но тогда получается что для отправки одной и той же информации разным апплетам требуются два сервлета, пусть даже и одинаковых. Нехорошо как то.
PM ICQ MSN   Вверх
Oracle
Дата 29.12.2004, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А можно подробнее?На какой строчке?
Да.....так не хорошо........но хм....NullPointerException это исключение, что ссылка null...........
интересно какая ссылка............строчка нужна, где это исключение выбрасывается.
Я так думаю, что у тебя во втором апплете InputStream равен null, но хочу узнать подробнее.

Это сообщение отредактировал(а) Oracle - 29.12.2004, 15:57
PM MAIL   Вверх
Wanderer2019
Дата 29.12.2004, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



а каа я посмотрю какая строка.. я ж это в Java Console в броузере читаю. А хтмл сервлет генерит. Т строки с апплетами просто добавляюся в виде текста.
Добавлено @ 16:06
тогда получается что сервлет отдал инф первому апплету инфу и отбросил коньки? smile такое может быть? потому что InputStream в апплете получается как:
Код

    URL url=new URL(getCodeBase(),servlet);
    URLConnection con=null;
    try{
    con=(HttpURLConnection)url.openConnection();
    }

PM ICQ MSN   Вверх
Oracle
Дата 29.12.2004, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет....такого быть не может...Можешь сделать так, чтобы второй апплет загружался только тогда, когда первый апплет закрыл все соеденения?(то есть получил обьект Vector)
PM MAIL   Вверх
Wanderer2019
Дата 29.12.2004, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



ты думаешь что они друг у друга пытаются этот вектор стянуть? они же все равно последовательно грузятся а не параллельно smile
PM ICQ MSN   Вверх
Oracle
Дата 29.12.2004, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет, я не так думаю. smile
Добавлено @ 16:27
А дальше можешь код привести?первого и второго апплета?
PM MAIL   Вверх
Wanderer2019
Дата 29.12.2004, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



он одинаковый у обоих. есть некоторые различия... первый берет первую половину вектора, а второй вторую. в целом апплет выглядит так:
Код


public void init() {
  Chart2D tempChart=getChart2D();
  if(tempChart!=null)
    this.getContentPane().add(getChart2D());
  else{
    System.out.println("Error:Out of data or out of servlet.");
    java.lang.System.exit(1);
  }
  Chart2D chart2D = (Chart2D)this.getContentPane().getComponent(0);
  Dimension maxSize = new Dimension (400, 300);
  chart2D.setSize (maxSize);
  chart2D.setPreferredSize (maxSize);

  this.getContentPane().setSize(new Dimension (400 + 5, 300 + 8));
}

public void start() {
}

public void destroy() {
}

private Chart2D getChart2D() {
.....действия по созданию и настройки графика.....
return chart2D;
}

обработка потока ведется только в той функции, которую я уже выкладывал.
Добавлено @ 16:34
в разделе создания графика есть следующая строчка, вызывающая функцию обработки потока:
Код

Vector bar_params_vector=null;
     try{
       bar_params_vector=getNextNum();
       if(bar_params_vector==null) return null;
     }
     catch(IOException e){
       System.out.println(e.getMessage());
     }

PM ICQ MSN   Вверх
Oracle
Дата 29.12.2004, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Гм.......Когда записываешь через OutputStream то читать можно только один раз через InputStream.....А потом это пропадает smile smile smile
Добавлено @ 16:59
Поэтому когда ты читаешь вторым апплетом, то InputStream будет null, потому что, то , что ты хочешь прочитать уже нету....... smile
P.S ты где-то наверху правильно предположил
PM MAIL   Вверх
Wanderer2019
Дата 29.12.2004, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



а как же прочитать в несколько мест?
PM ICQ MSN   Вверх
Oracle
Дата 29.12.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Два раза писать -- запрос+ответ.

P.S Скажешь о результатах.

Это сообщение отредактировал(а) Oracle - 29.12.2004, 17:20
PM MAIL   Вверх
Wanderer2019
Дата 30.12.2004, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



тзвини, но не совсем понял... ты имеешь ввиду в сервлете писать:
Код

     objStream.writeObject(sending_result);
     objStream.writeObject(sending_result);

т.е. два раза????

PM ICQ MSN   Вверх
Wanderer2019
Дата 30.12.2004, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



ну вообщем сделал так, как написал выше... теперь null не выпадает. Теперь оба апплета либо грузятся бесконечно долго, либо один из апплетов выдает сообщение что то типа HTTP вернула ошибку с кодом 500.
PM ICQ MSN   Вверх
Oracle
Дата 30.12.2004, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



К Сожалению, TCP/IP не позволяет бросать данные двум источникам сразу..
Если так уж надо, то используй UDP -- только он не гарантирует передачу..
Будем делать на высоком уровне..
Нужно не два раза записывать, а два раза отвечать - на каждый запрос в отдельности....То есть сервлет будет на каждый запрос(их будет два, т.к два апплета) два раза отвечать(записывать).
Тут нельзя два раза писать(как ты сделал) - поток создаётся на время сеанса между конкретным апплетом и конкретным сервером.
Что бы закрепить то, что я сказал словами:
Код

public class Servl extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse) throws ServletException, IOException {
ObjectOutputStream out = bla bla
out.writeObject(bla bla);
}
}

метод doGet переопределен так, что бы принимать любые GET-запросы......
Вот он и записывает каждый раз.....
То есть апплет посылает сначала Get-запрос , а потом только читает ответ...И так для каждого апплета, сколько бы их ни было.

Это сообщение отредактировал(а) Oracle - 30.12.2004, 14:05
PM MAIL   Вверх
Wanderer2019
Дата 30.12.2004, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



ну вроде что то понял. Только вот как заставить апплет обратиться к сервлету, чтобы тот повторил запрос??
PM ICQ MSN   Вверх
Wanderer2019
Дата 30.12.2004, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

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



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

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

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


 




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


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

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