是否可以指定应该使用哪个commonj.work.WorkManager处理标记为@Asynchronous的方法?

在我要增强的WebLogic 12.1.3应用程序中,我们以前定义了工作管理器,并使用以下方法注入了他们:

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


...并安排异步工作,如下所示:

rjscWorkManager.schedule(new DetailWork(businessId));


我想定义@Asynchronous方法,以便异步代码可以从CDI注入中受益,但我也想控制分配给工作的线程数。这只能通过定义一个应用程序范围的工作管理器来实现吗?我没有在EJB规范或WebLogic文档中看到与@Asynchronous和工作管理器有关的任何内容。

最佳答案

您可以通过将EJB分配给weblogic-ejb-jar.xml中的工作管理器来限制分配给@Asynchronous方法的线程数:

<?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/

07-24 15:37