如何从 WebLogic 8.1.6 中的执行队列(=线程池)中获取/使用/返回线程?
1 回答
AFAIK,不,这是不可能的,你不能直接得到一个线程。而是将执行队列分配给 Servlet、JSP、EJB 或 RMI 对象。
Weblogic 允许您将执行队列分配给 Servlet、JSP、EJB 和 RMI 对象。为了将执行队列与 servlet(或 JSP)相关联,您需要 在描述符文件中指定
wl-dispatch-policy
servlet(或 JSP)的初始化参数。web.xml
以下代码示例显示了如何将执行队列分配给mySpecialQueue
JSP 页面:<!-- 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 选项。以下是将执行队列分配给
mySpecialQueue
RMI 对象的方法: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-policy
EJBweblogic-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 对象从它们配置的执行队列中分配工作线程,从而保证应用程序中的选定对象可以访问固定数量的服务器线程。对于那些没有分配执行队列的对象,线程将从服务器的默认执行队列中分配。