Попробуйте использовать настройки weblogic work manager , чтобы ограничить количество одновременных потоков. Ограничение max-потоки может быть применено к диспетчеру работ, настроенному для конкретного MDB (или как часть пула, если вы примените его к более чем одному компоненту)
так, например, в weblogic-application.xml у вас будет
<wls:work-manager>
<wls:name>MyMDBWorkManager</wls:name>
<wls:max-threads-constraint-name>MyMDBMaxThreads</wls:max-threads-constraint-name>
</wls:work-manager>
и применяется к bean-компонентам в weblogic-ejb-jar.xml следующим образом: (это работает, даже когда MDB аннотирован)
<wls:weblogic-enterprise-bean>
<wls:ejb-name>MyMDB</wls:ejb-name>
<wls:dispatch-policy>MyMDBWorkManager</wls:dispatch-policy>
</wls:weblogic-enterprise-bean>
Ограничение «MyMDBMaxThreads» можно указать в файле weblogic-application.xml или непосредственно в консоли администратора WL, чтобы его можно было настроить на лету.