Как настроить WorkManagers в WebLogic 10.3?

Я хотел бы использовать WorkManager для планирования некоторых параллельных заданий на сервере приложений WebLogic 10.3.

http://java.sun.com/javaee/5/docs/api/javax/resource/spi/work/WorkManager.html

Я нахожу документацию Oracle/BEA немного фрагментированной и сложной для понимания, и в ней нет хороших примеров использования WorkManagers из EJB 3.0.

В частности, я хотел бы знать:

1) Что именно мне нужно добавить в дескрипторы развертывания (ejb-jar.xml и другие)?

2) Я хотел бы использовать аннотацию @Resource для внедрения WorkManager в мой сеансовый компонент EJB 3. Какое «имя» я использую для ресурса?

3) Как настроить количество потоков и другие параметры для WorkManager.

Насколько я понимаю, базовой реализацией WebLogic является CommonJ, но я бы предпочел использовать непатентованный подход, если это возможно.


person hallidave    schedule 24.09.2009    source источник
comment
В итоге я отказался от Work Managers в пользу подхода с использованием TimerService, описанного в этой статье. devx.com/Java/Article/33694/1954 Более простой, портативный и лучше подходит для простых требований, которые у меня были.   -  person hallidave    schedule 29.09.2009


Ответы (2)


Во-первых, вы найдете документацию по CommonJ, реализации Timer and Work Manager API, разработанной BEA Oracle и IBM, в Руководство программиста по Timer and Work Manager API (CommonJ). Они предоставляют пример диспетчера работ, но он не включен в этот документ.

1) Что именно мне нужно добавить в дескрипторы развертывания (ejb-jar.xml и другие)?

Согласно развертыванию Work Manager раздел:

Менеджеры работ определяются на уровне сервера через ссылку на ресурс в соответствующем дескрипторе развертывания. Среди прочего это может быть web.xml или ejb-jar.xml.

В следующем фрагменте дескриптора развертывания показано, как настроить WorkManager:

...
<resource-ref>
   <res-ref-name>wm/MyWorkManager</res-ref-name>
   <res-type>commonj.work.WorkManager</res-type>
   <res-auth>Container</res-auth>
   <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
...

Примечание. Рекомендуемый префикс пространства имен JNDI для объектов WorkManager — java:comp/env/wm.

Проверьте WorkManager javadocs для получения дополнительных сведений (например, "Области res-auth и res-sharing игнорируются в этой версии спецификации. EJB или сервлет могут затем использовать WorkManager по мере необходимости.").

2) Я хотел бы использовать аннотацию @Resource для внедрения WorkManager в мой сеансовый компонент EJB 3. Какое «имя» я использую для ресурса?

Я бы сказал что-то вроде этого (не проверено):

@ResourceRef(jndiName="java:comp/env/wm/MyWorkManager",
auth=ResourceRef.Auth.CONTAINER,
type="commonj.work.WorkManager",
name="MyWorkManager")

3) Как настроить количество потоков и другие параметры для WorkManager.

См. описание <work-manager>. элемент и использование диспетчеров работ для оптимизации плановой работы для получения подробной информации о менеджерах работ

Насколько я понимаю, базовой реализацией WebLogic является CommonJ, но я бы предпочел использовать непатентованный подход, если это возможно.

У меня нет другого предложения (и, пока эта реализация соответствует стандартам, я бы не возражал против ее использования).

person Pascal Thivent    schedule 24.09.2009
comment
Похоже 1) и 2) это две разные версии одного и того же? Я предполагаю, что вам нужно только сделать 2) это чистое приложение EJB 3? - person hallidave; 29.09.2009
comment
Я тоже так думаю. Но я сделал тест 1), а не 2) - person Pascal Thivent; 29.09.2009

Документация Weblogic ответит на ваши вопросы. Использование диспетчеров работ для оптимизации плановой работы

person Mehdi    schedule 27.02.2015