2016-12-02 102 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 {