0

如何从 WebLogic 8.1.6 中的执行队列(=线程池)中获取/使用/返回线程?

4

1 回答 1

1

AFAIK,不,这是不可能的,你不能直接得到一个线程。而是将执行队列分配给 Servlet、JSP、EJB 或 RMI 对象。

Weblogic 允许您将执行队列分配给 Servlet、JSP、EJB 和 RMI 对象。为了将执行队列与 servlet(或 JSP)相关联,您需要 在描述符文件中指定wl-dispatch-policyservlet(或 JSP)的初始化参数。web.xml以下代码示例显示了如何将执行队列分配给 mySpecialQueueJSP 页面:

<!-- web.xml entry -->
<servlet>
    <servlet-name>MyServlet</servlet-name>
    <jsp-file>/critical.jsp</jsp-file>
    <init-param>
        <param-name>wl-dispatch-policy</param-name>
        <param-value>mySpecialQueue</param-value>
    </init-param>
</servlet>

为了将执行队列分配给 RMI 对象,您必须在使用 Weblogic 的 RMI 编译器 (rmic) 时指定 -dispatchPolicy 选项。以下是将执行队列分配给 mySpecialQueueRMI 对象的方法:

java weblogic.rmic -dispatchPolicy mySpecialQueue ...
 In the same way, use the `-dispatchPolicy` option when invoking

Weblogic 的 EJB 编译器将执行队列分配给 EJB。Weblogic 的 EJB 编译器将 -dipatchPolicy参数隐式传递给底层 RMI 编译器。在 Weblogic 8.1 中,使用dispatch-policyEJBweblogic-ejb-jar.xml 描述符中的元素来设置执行队列:

<!-- weblogic-ejb-jar.xml descriptor -->
<weblogic-enterprise-bean>
    <ejb-name>myEJB</ejb-name>
    ...
    <dispatch-policy>myEJBQueue</dispatch-policy>
</weblogic-enterprise-bean>

所有 EJB 类型(会话 bean、实体 bean 和 MDB)都支持自定义执行队列。

在运行时,Weblogic 为您的 servlet、JSP、EJB 和 RMI 对象从它们配置的执行队列中分配工作线程,从而保证应用程序中的选定对象可以访问固定数量的服务器线程。对于那些没有分配执行队列的对象,线程将从服务器的默认执行队列中分配。

于 2009-10-21T23:02:26.990 回答