среда, 16 декабря 2009 г.

NetBeans 6.8. Проблема с примером AsyncRequest.

Давненько не писал. Почему-то никак не находилось тем, которые можно написать, да и со временем не всегда легко. Но как бы то ни было, время шло и вышел Netbeans 6.8, примечательный поддержкой и содержанием GlassFish 3, который, в свою очередь, является эталонной реализацией JEE6.

Ну, грех было не посмотреть это чудо по-ближе..
Начал с попытки развернуть с kenai.com своего тестового grails-проекта, но дело не пошло. Не буду описывать подробно, в общем, не срослось.. ( Ну сразу не вышло, значит потом как-нить добью - не впервой!..
Затем решил посмотреть, как обстоят дела с JEE6. К счастью, в NetBeans имеются несколько примеров, на мой взгляд достаточно удачные. Очень впечатлил пример "LeanServiceECBComponentWithAjax", ну и остальные, порадовали не меньше. Скажем так, ясности во всем стало намного больше. Код стал легко читаться, в то же время чувствуется гибкость, хотя это примеры..
В общем, мельком глянул все примеры по JEE6, кроме "AsyncRequest" - тот почему-то отказался компилироваться. Как ни странно в инете не смог найти решение проблемы, решил глянуть исходники, их под рукой не оказалось, однако были JavaDoc. В общем за несколько минут, используя дедукцию нашел решение проблемы.
В общем, по какой-то причине, не правильно написана работа с HttpServletRequest. Точнее, ему пытаются задать настройки асинхронности методами "setAsyncTimeout", "addAsyncListener", которые тот не поддерживает. А при этом еще инициируют AsyncContext, который как бы и должен этим заниматься. Так и есть у него есть подобные методы, правда немного по другому называются: "setTimeout" и "addListener". Ну это логично. После правки, остается еще дописать в "AsyncListener" недостающий метод, и вуаля! Всё работает.

Интересно, откуда выдрали код? Из классического Comet?

Комментариев нет: