Перенесите веб-приложение jetty8 на Google App Engine - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть веб-приложение, в настоящее время развернутое в jetty8, основанное на jsf2, jersey и атмосферном. Я хотел бы перейти на GAE, но мне задается следующий вопрос:

GAE поддерживает jetty8?

Существует сервлет, который периодически выполняет задачу очистки базы данных каждый день. Для этого задача запускается в начале и задерживается в цикле для запуска каждые 24 часа. Я читал, что GAE не позволяет создавать задачи. Есть ли другой способ сделать это и быть поддержанным GAE?

Ответы [ 2 ]

4 голосов
/ 08 февраля 2012

Я не знаю, поддерживает ли GAE версию 8 Jetty, но она работает на экземплярах Jetty.

Вы должны думать о GAE больше как о PAAS (платформа как услуга), чем о IAAS (инфраструктура как услуга).Вы должны взглянуть на предоставляемые ими услуги и проверить, соответствуют ли они вашим требованиям.См. Что такое Google App Engine? для общего обзора или Java Enterprise Edition (Java EE) Technologies для конкретной совместимости фреймворка.GAE не является обычной JRE, у нее ограниченный набор поддерживаемых классов: Белый список классов JRE .Это может ограничить совместимость в дальнейшем.Я не знаю, работает ли Атмосфера.Я не знаю, какие особенности Jetty 8 вам нужны.WebSockets?Нет. Вместо этого вы можете использовать каналы: Channel API (Java) .

Длительные задачи не допускаются так, как вы это делаете (задержка 24 часа).Но вы можете запускать запланированные задачи, см. Здесь: Запланированные задачи с Cron для Java .

Запрос ограничен во времени выполнения (60 секунд), поэтому вы не можете запускать долго выполняющиеся задачи таким образом,Но вы можете создавать более длительные (10 минут) фоновые задачи, см. Здесь: Java API очереди задач .

Важно: посмотрите на квоты .Поскольку они наказывают определенное поведение приложения, вам нужно будет адаптировать ваше приложение к этому.Это может полностью изменить дизайн вашего приложения!

По моему опыту, переход на GAE - это интенсивное занятие.GAE не подходит в качестве замены для других хостинговых решений.Если вы хотите, чтобы такие провайдеры IAAS (например, Amazon EC2) лучше подходили.

2 голосов
/ 08 февраля 2012

Вся полезная информация, только с одним исправлением - пользовательские запросы теперь ограничены 60 секундами, а не 30 секундами.

Следует также отметить, что существуют следующие ограничения:

  • В соответствии со спецификацией Java EE жизненный цикл сеанса HTTP не является действительно уважаемым.Например, если вы изменяете значения объекта в сеансе, вы должны переустановить его, чтобы данные распространялись во всех экземплярах.
  • Вы не можете создавать свои собственные потоки - это может вызвать некоторые проблемыдля некоторых реализаций JSF, возможно, стоит проверить у своего провайдера JSF, чтобы узнать, поддерживают ли они GAE.Я знаю, что последняя версия JBoss RichFaces поддерживает GAE.
  • Встроенная поддержка атмосферы для каналов GAE изначально была запланирована на v0.8, но, похоже, выпала из этого выпуска.

Как вы планируете перенести модель данных в хранилище данных GAE?Хранилище данных GAE действительно не подходит для модели на основе JPA / JDO, так как оно значительно отличается от обычных баз данных отношений.

...