Меня не смущает, никогда XMPP службу не планировал использовать для публичных сервисов. Использую исключительно для «админских» уведомлений. И опять повторюсь, если использовать публично — нет никакой защиты от преднамеренного расхода квот.
Что-бы каждый раз не лазить в консоль администрирования и не менять вручную версии, просто не меняйте версию в appengine-web.xml при загрузке, она тогда заменит существующую.
This URL (/_ah/xmpp/message/chat/) path is restricted to app administrators automatically. The XMPP service connects to the app with «administrator» status for the purposes of accessing this URL path. You can configure the path to have this restriction explicitly if you like, but this is not necessary. Only the XMPP service and clients authenticated as administrators using Google Accounts can access this URL path.
Видимо службы крон работает с приложением не от имени администратора.
Как вариант для отладки, я же предлагал замапить сервлет на любой другой адрес, /_ah/xmpp/message/chat/
XMPPServiceFactory.getXMPPService() — создает отдельный инстанс сервиса.
Думаю на деле, все равно объект XMPPService служба возвращает один и тот же.
Не вижу смысла как-то разделять сам инстанс между разными сервлётами, если у Вас их всего пара — один на «прием», другой — на «передачу». Т.к. в самом объекте XMPPService нельзя сохранять какие-либо данные.
Крон может «дергать» тот-же самый сервлёт, что обрабатывает >простые запросы-сообщения.
На локальном сервере разработки исходящие сообщения отправляются на консоль. Входящие сообщения среда разработки эмулировать не может.
Как выход, вручную выполнять POST-запрос, как это делает сервис. Временно замапить сервлет обрабатывающий входящие сообщения на любой другой URL, т.к. /_ah/xmpp/message/chat/ не доступен снаружи.
Да, конечно разрешение для А0 маловато, но отправил на печать как есть прямо из браузера. Плоттер трудился пару минут. В общем 11 минут вполне достаточно.
У меня тоже постоянно в логах проскакивает, причем с разными клиентами.
Тем не менее все работает, поэтому особо не капал причину.
Всегда найдется
мудакумник, минусящий от фанаряСеота уже приготовилась минусить неугодные сайты.
Так, что руками придтся
Что-бы каждый раз не лазить в консоль администрирования и не менять вручную версии, просто не меняйте версию в appengine-web.xml при загрузке, она тогда заменит существующую.
Видимо службы крон работает с приложением не от имени администратора.
Как вариант для отладки, я же предлагал замапить сервлет на любой другой адрес, /_ah/xmpp/message/chat/
Можно зарегаться тут: http://www.appenginepeople.net/
Там много народу в теме.
В кроне всё просто — как приходит время, служба выполняет обычный GET-запрос к указанному url.
По указанному урл должен быть сервлет, который реализует метод:
public void doGet(HttpServletRequest req, HttpServletResponse res){
// do cron jobs
}
Видимо, смотрите на русском, переключитесь на английский:
http://code.google.com/intl/en/appengine/docs/java/config/queue.html
http://code.google.com/intl/en/appengine/docs/java/taskqueue/
XMPPServiceFactory.getXMPPService() — создает отдельный инстанс сервиса.
Думаю на деле, все равно объект XMPPService служба возвращает один и тот же.
Не вижу смысла как-то разделять сам инстанс между разными сервлётами, если у Вас их всего пара — один на «прием», другой — на «передачу». Т.к. в самом объекте XMPPService нельзя сохранять какие-либо данные.
Крон может «дергать» тот-же самый сервлёт, что обрабатывает >простые запросы-сообщения.
Как выход, вручную выполнять POST-запрос, как это делает сервис. Временно замапить сервлет обрабатывающий входящие сообщения на любой другой URL, т.к. /_ah/xmpp/message/chat/ не доступен снаружи.