2016-05-31 3 views
2

Можно ли указать, какой commonj.work.WorkManager следует использовать для обработки метода с меткой @Asynchronous?Указать WorkManager при определении @Asynchronous метода

В WebLogic 12.1.3 приложении Я усиливающий, мы были ранее определение менеджеров работы и инъекционные их с помощью:

@Resource(mappedName = "vm/myWorkManager") 
private WorkManager myWorkManager; 

... и планирования асинхронной работы следующего образа:

rjscWorkManager.schedule(new DetailWork(businessId)); 

Я хотел бы определить @Asynchronous методы, чтобы асинхронный код мог извлечь выгоду из инъекции CDI, но я также хочу контролировать, сколько потоков выделено для работы. Может ли это быть достигнуто только путем определения рабочего менеджера приложения? Я ничего не вижу в спецификации EJB или документации WebLogic, относящейся к @Asynchronous и рабочим менеджерам.

ответ

2

Вы можете ограничить количество потоков, назначенных @Asynchronous методов, назначая EJB к менеджеру работы в WebLogic-jar.xml-EJB:

<?xml version="1.0" encoding="UTF-8"?> 
<weblogic-ejb-jar 
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.2/weblogic-ejb-jar.xsd"> 

    <!-- Define which work manager the EJB(s) should use --> 
    <weblogic-enterprise-bean> 
    <ejb-name>MyService</ejb-name> 
    <dispatch-policy>myWorkManager</dispatch-policy> 
    </weblogic-enterprise-bean> 

    <!-- Other EJBs could use the same work manager... --> 

    <!-- Define the work manager --> 
    <work-manager> 
    <!-- Name --> 
    <name>myWorkManager</name> 
    <!-- Min Threads - Guarantees the minimum number of threads the server will allocate to requests --> 
    <min-threads-constraint> 
     <name>myWorkManager-MinThreads-Constraint</name> 
     <count>5</count> 
    </min-threads-constraint> 
    <!-- Max Threads - Guarantees the maximum number of threads the server will allocate to requests --> 
    <max-threads-constraint> 
     <name>myWorkManager-MaxThreads-Constraint</name> 
     <count>100</count> 
    </max-threads-constraint> 
    <!-- Capacity - Causes the server to reject requests only when it has reached its capacity --> 
    <capacity> 
     <name>myWorkManager-Capacity-Constraint</name> 
     <count>-1</count> 
    </capacity> 
    </work-manager> 
</weblogic-ejb-jar> 

Более подробную информацию можно найти здесь :

https://roundwheeltech.wordpress.com/2016/06/07/assigning-ejbs-to-work-managers/

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