跨war到ejb jar的Weblogic WorkManager策略

跨war到ejb jar的Weblogic WorkManager策略,weblogic,workmanagers,Weblogic,Workmanagers,我有一个servlet,它使用defaultWM for Weblogic。这个servlet依次调用ejb。此ejb与不同的WM(WM_ejb)关联。我想知道的是,当通过servlet处理线程时,servlet是否使用defaultWM,然后将相同的WM上下文传递给ejb调用?还是有开关 i、 e 对ServletA的外部请求——ServletA配置了DefaultWM ServletA处理请求和调用EJB.helloWorld() helloWOrld()是用WM_EJB workmanag

我有一个servlet,它使用defaultWM for Weblogic。这个servlet依次调用ejb。此ejb与不同的WM(WM_ejb)关联。我想知道的是,当通过servlet处理线程时,servlet是否使用defaultWM,然后将相同的WM上下文传递给ejb调用?还是有开关

i、 e

  • 对ServletA的外部请求——ServletA配置了DefaultWM
  • ServletA处理请求和调用EJB.helloWorld()
  • helloWOrld()是用WM_EJB workmanager配置的
  • 整个过程是使用DefaultWM还是打开对EJB.helloWorld()的调用


    很抱歉,如果这是在其他地方回答的,我找不到WM流的答案。

    我一直在对此进行调查,我的回答是Weblogic*将从DefaultWM切换到组件的工作管理器,如果定义了EJB\u WM*

    请记住,执行线程保持不变——因此,一旦请求传入,相同的线程将执行servlet,然后执行EJB

    在我的示例应用程序中,我对index.jsp发出50个并发调用,而在
    weblogic ejb jar.xml
    中,我仅为ejb定义了此约束

    <work-manager>
           <name>WorkManagerA</name>
           <max-threads-constraint>
              <name>MyMaxThreadCount</name>
              <count>1</count>
           </max-threads-constraint>
        </work-manager>
    
    现在再看一些日志语句

    Calling EJB from index.jsp 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'
    Start EJB 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'
    end EJB 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'
    
    Calling EJB from index.jsp 1317985368088[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'
    Start EJB 1317985368104[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'
    end EJB 1317985368104[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'
    
    正如时间戳(System.currentTimeMillis())所示,index.jsp同时被线程6和8调用,但是 名为“Start EJB”和“end EJB”的System.out.println语句对于线程6和8具有不同的时间戳。它们来自EJB内部

    这表明EJB WorkManager正在执行将并行线程计数限制为每次仅1的任务

    Calling EJB from index.jsp 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'
    Start EJB 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'
    end EJB 1317985368088[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self-tuning)'
    
    Calling EJB from index.jsp 1317985368088[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'
    Start EJB 1317985368104[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'
    end EJB 1317985368104[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'