К сожалению, все мои знания AppEngine используют их Python SDK, но он "должен" переводить на Java.
Для начала вам необходимо создать пользовательскую систему.Я создал несколько в качестве оболочки для системы учетных записей Google, но если вам не нужны учетные записи Google, вы можете создать простую систему пользовательских таблиц и сеансов.Концепции довольно просты, но вы можете увидеть, как он построен поверх AppEngine, взглянув сюда: http://github.com/aht/suas
В этом примере пользовательской системы есть ошибки (файлы cookie), но вам все равновы не будете использовать куки.На самом деле вам просто нужна возможность хранить учетные записи пользователей, проходить аутентификацию на этих учетных записях, запускать сеанс с аутентифицированной учетной записью и передавать ключ сеанса обратно клиентскому приложению.Затем клиентское приложение использует этот ключ сеанса для аутентификации в будущем.Части, которые выполняют большую часть этого, можно найти в примере suas, который я привел выше.
Если у вас есть возможность запускать и проверять подлинность сеансов, тогда вам действительно нужна возможность выполнять RPC-операции на сервере из приложения.,То, как вы инициируете RPC, зависит от платформы приложения, но при общении с AppEngine вам нужно поговорить по HTTP.По сути, клиент будет отправлять HTTP-запросы POST на сервер, причем тело POST представляет собой объект JSON / XML, содержащий ключ сеанса, имя функции, которую вы хотите вызвать, и любые аргументы этой функции.Ответ от сервера будет HTTP-ответом, а тело ответа будет просто объектом JSON / XML.В Python вы можете использовать API simplejson для простого преобразования Python-диктов в JSON, и есть XML-библиотека, которая работает аналогично.Должен быть эквивалентный Java API.
Пример выполнения запросов RPC через HTTP к AppEngine (опять же на Python, извините) можно найти здесь: http://code.google.com/appengine/articles/rpc.html
Вы можете пропустить всеклиентский материал, если вы не используете JavaScript (который на самом деле является отличным способом для создания прототипа тестового клиента для этого).Вам будет интересно узнать, как сервер определяет, какую функцию вызывать и как она реагирует:
self.response.out.write(simplejson.dumps(result))
Надеюсь, что это поможет вам начать работу над этим проектом.Удачи!