Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку использование нажатия требует, чтобы открытое HTTP-соединение сохранялось между Вашим сервером и каждым клиентом, я пошел бы для опроса также - не, только то, что попытка использовать много ресурсов сервера, но это также будет значительно более хитрым для реализации как матовый упомянутый b.
Мой опыт с опросом состоит в том, что, если у Вас есть достаточно частый интервал опроса на достаточно оживленном сайте, Ваши журналы веб-сервера могут быть лавинно разосланы запросами опроса, реальными быстро.
Редактирование (2017) : я сказал бы, что Ваш выбор, теперь между websockets и долгим опросом (упомянут в другом ответе). Кажется, что долгий опрос мог бы быть правильным выбором на основе способа, которым вопрос упоминает, что уведомления не должны быть получены в режиме реального времени, нечастый период опроса было бы довольно легко реализовать и не должен быть очень налоговым на Вашем сервере. Websockets являются классными и большой выбор для многих приложений в эти дни, кажется, что это могло бы быть излишеством в этом случае все же.
Я реализовал бы опрос просто, потому что звучит более простым записать, и хранение его простой очень ценно.
Не уверенный, если Вы смотрели на некоторые реализации КОМЕТЫ там (это, что Вы подразумеваете под нажатием Ajax).
, Если пользователь перемещается по сайту, который не будет в действительности запрашивать информацию у сервера, на котором может осуществить контрейлерные перевозки это уведомление?
Невозможно сказать, будет ли опрос более дорогим затем продвижение, не зная, сколько клиентов Вы будете иметь. Я рекомендовал бы опросить потому что:
cometd
на стороне сервера и клиентской библиотеке это groks нажатие серверной стороны. Поэтому, если бы Вам было нужно что-то мощное для управления потоком данных и crapload клиентов, я рекомендовал бы Комету. Но это, кажется, не имеет место.
Я не попробовал его сам, но некоторые говорят работы КОМЕТЫ, и легче, чем Вы думаете . Существует также плагин Ruby on Rails, названный Безжалостная сила , что я услышал, говорил о высоко. Снова, я не использовал его, таким образом, YMMV, но мое понимание - то, что требуется гораздо меньше ресурсов по сравнению с опросом. Я верю (кто-то может подтвердить?), что КОМЕТА - то, как MacRumorsLive.com поставляет живой блоггинг WWDC Stevenotes.
Оба имеют различные требования и обращаются к различным сценариям.
, Если Вам нужно обновления в реальном времени , как в онлайн-чате, нажатие - необходимость.
, Но, если период обновления большой , как это находится в Вашем случае (5 минут), затем объединяют, соответствующее решение. Продвиньте, в этом случае, потребует большого количества ресурса и от клиента и от сервера.
Подсказка! попытка сделать страницу, которая проверяет пул быстро и чистый, таким образом, это не делает, использует много ресурсов в сервере в каждом запросе. То, что я обычно делаю, должно сохранить флаг в памяти (как в переменной сеанса), который говорит, пуст ли пул или не... так, я только делаю взгляд havy в пуле, только если это не пусто. Когда пул пуст, который является большую часть времени, запрос страницы работает чрезвычайно быстро.
Определенно используйте толкнуть его намного круче. Если вам нужны простые уведомления, я бы использовал что-то вроде StreamHub Push Server , чтобы сделать за вас тяжелую работу. Разработка собственной функциональности Ajax Push - чрезвычайно сложный и трудный путь - вы должны заставить ее работать во всех браузерах, а затем обрабатывать брандмауэры и прокси, убивая соединения keep-alive и т. Д. Зачем изобретать колесо. Кроме того, он имеет столь же низкую занимаемую площадь - менее 10 КБ, поэтому он должен подойти, если это является для вас приоритетом.