2016-12-02 76 views
0

在WebLogic 12c的只有一个实例/线程,我怎么能有消息驱动bean的只有一个实例/线程。的Weblogic如何有消息驱动bean

我无法找到 “马克斯 - 豆 - 在-free-pool中相当于” 注释属性此处定义 https://docs.oracle.com/cd/E24329_01/web.1211/e24977/summary.htm#WLMDB1385

Java代码: -

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
     @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms/myConnectionFactory"), 
     @ActivationConfigProperty(propertyName = "destinationJndiName", propertyValue = "jms/myQueue"), 
     @ActivationConfigProperty(propertyName = "MaxPoolSize", propertyValue = "1") }) 
public class JayMDB implements MessageListener { 

附加参考: https://docs.oracle.com/cd/E24329_01/web.1211/e24390/mdbtuning.htm#PERFM271

+0

这似乎是一个瓶子颈部。当请求涌入时,为什么你不希望在这些高峰时段有一个更大的池? – duffymo

+0

你试过这个吗?也许是可行的WLS 12C http://stackoverflow.com/questions/8939292/how-to-set-max-pool-size-in-mdb-on-weblogic-10-3 – Filip

+0

@Filip感谢队友我会尝试那。其实我没有使用过weblogic-application.xml,只使用了xml和所有的anotation。希望我能够混合XML和注释。 – Jay

回答

1

您是否尝试过与WebLogic的workmanagers工作? 从管理控制台 - >创建一个,将1分配给新的最大线程容量限制,并将其分配给您的工作管理器。在你的MDB中使用这个工作管理器(例如在你的weblogic-ra.xml中设置)。

在这种情况下,你将有只有一个由你的MDB的目标节点的线程。

+0

谢谢是的,我已经解决了这个使用Workmanagers ... – Jay

0

谢谢你们的投入,是的,我解决了&最大豆式-free-pool中,maxSession属性工作管理器的组合这个问题。这是我后面需要它的完整代码。

的weblogic.xml

<?xml version='1.0' encoding='UTF-8'?> 
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.6/weblogic-web-app.xsd"> 
    <session-descriptor></session-descriptor> 
    <jsp-descriptor></jsp-descriptor> 
    <container-descriptor></container-descriptor> 
    <work-manager> 
    <name>WorkManager-MDB</name> 
    <max-threads-constraint> 
     <name>MaxThreadsConstraint-MDB</name> 
     <count>1</count> 
    </max-threads-constraint> 
    </work-manager> 
</weblogic-web-app> 

的weblogic-ejb-jar.xml中

<?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://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://www.oracle.com/technology/weblogic/weblogic-ejb-jar/1.1/weblogic-ejb-jar.xsd"> 

    <weblogic-enterprise-bean> 
     <ejb-name>JayMDB</ejb-name> 

     <message-driven-descriptor> 
      <pool> 
       <max-beans-in-free-pool>1</max-beans-in-free-pool> 
      </pool> 
     </message-driven-descriptor> 
    </weblogic-enterprise-bean> 

</weblogic-ejb-jar> 

消息驱动Bean

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
@ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms/myConnectionFactory"), 
@ActivationConfigProperty(propertyName = "destinationJndiName", propertyValue = "jms/myQueue"), 
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "1")}) 
public class JayMDB implements MessageListener {