2015-05-14 4 views
0

Я пытаюсь асинхронно вызывать два отдельных сервлета в App Engine, используя два метода @Async аннотированных. Код, запущенный в приложении приложения, не использует Spring. Это просто использование обычного Java Servlet API. Код, вызывающий сервлеты, использует Spring.Spring @Async с приложением Engine?

@Async О вызовах методов, похоже, не работает. Каждый метод вызывается и возвращается в нормальном порядке. (метод-> возврат, метод-> возврат)

У меня есть @Async аннотации для каждого публичного метода.
У меня есть @EnableAsync аннотация по классу, вызывающему методы. Это два отдельных класса. Никаких статических классов.

Я не уверен, что это связано с тем, что App Engine не поддерживает Servlet 3.0 или что я неправильно настроил @Async.

Заранее благодарен!

+0

Опубликовать конфигурацию. –

ответ

0

Проблема решена!

Этого вопрос КУДА я укладывал Xmlns: задача = «http://www.springframework.org/schema/task» и задача: аннотации управляемых записей.

В нашем приложении имеется несколько файлов XML (которые импортируют другие файлы XML). Первоначально я помещал эти записи в XML, содержащий конфигурацию для компонента, содержащего аннотацию @Async. Чтобы заставить его работать, я должен был поместить его в приложение . Приложение

Звонки производятся асинхронно в разных потоках, а App Engine обрабатывает их как таковые.

0

К сожалению, GAE не поддерживает спецификацию Serlvet 3.0, как показано на this issue. Очевидно, вы можете перейти к управляемым виртуальным машинам и использовать его, но sandbox GAE не будет использовать 3.0 на некоторое время.

+0

После дальнейшего изучения, я не считаю, что App Engine - это проблема. Я пытаюсь отправить два вызова с моего сервера на два разных потока. App Engine должен обрабатывать каждый отдельно (один не знает о другом). Это в основном сценарий «огонь и забвение». На данный момент, я думаю, что это проблема конфигурации с @Async. – edcincy

Смежные вопросы