2017-04-24 4 views
0

Je veux configurer maxsession pour MDB Donc, il y a une annotation ci-dessous sur la classe MDBSet maxsession pour MDB par ejb-jar.xml dans JBoss

@ActivationConfigProperty(propertyName="maxSession",propertyValue="6") 

Snippet

@MessageDriven 
(activationConfig = 
    { 
     @ActivationConfigProperty(propertyName = "acknowledgeMode", 
       propertyValue = "Auto-acknowledge"), 

     @ActivationConfigProperty(propertyName = "destinationType", 
       propertyValue = "javax.jms.Queue"), 

     @ActivationConfigProperty(propertyName = "destination", 
       propertyValue = "queue/MyQueue"), 

     @ActivationConfigProperty(propertyName = "reconnectAttempts", 
       propertyValue = "-1"), 

     @ActivationConfigProperty(propertyName = "setupAttempts", 
       propertyValue = "-1"),     

     @ActivationConfigProperty(propertyName="maxSession",propertyValue="6") 
    }, 
    mappedName = "MyQueue" 
) 

et aussi j'ai configuré la maxsession dans ejb-jar.xml

<?xml version='1.0' encoding='UTF-8'?> 
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"> 
    <enterprise-beans> 

    <message-driven> 
     <ejb-name>MDBBean</ejb-name> 
     <ejb-class>com.mybean.MDBBean</ejb-class> 
    <messaging-type>javax.jms.MessageListener</messaging-type> 

     <activation-config> 

     <activation-config-property> 
      <activation-config-property-name>maxSession</activation-config-property-name> 
      <activation-config-property-value>20</activation-config-property-value> 
     </activation-config-property> 

     <activation-config-property> 
      <activation-config-property-name>destination</activation-config-property-name> 
      <activation-config-property-value>queue/MyQueue</activation-config-property-value> 
     </activation-config-property> 

     <activation-config-property> 
      <activation-config-property-name>destinationType</activation-config-property-name> 
      <activation-config-property-value>javax.jms.Queue</activation-config-property-value> 
     </activation-config-property> 

     </activation-config> 
    </message-driven> 

    </enterprise-beans> 
</ejb-jar> 

AFAIK precedence show être donné à ejb-jar.xml, puis à l'annotation. Mais quand je vérifie "ConsumerCount" via jmx-console, il montre 26. Cela signifie qu'il ajoute les deux valeurs. Et si je retire @ActivationConfigProperty (propertyName = "maxSession", propertyValue = "6") sous forme de fichier cClass, il montre 35 ans (15 par défaut, puis il ajoute 20 de ejb-jar.xml)

Mon exigence est , il devrait choisir la valeur seulement de ejb-jar.xml. Remarque: Je ne souhaite pas supprimer l'annotation de la classe car le même code est utilisé sur l'autre AS.

Répondre

0
  • AFAIK show de précédence être donné à ejb-jar.xml, puis à l'annotation.

    Ceci est un comportement attendu. La valeur du descripteur de fichier a priorité sur l'annotation.

  • Mais quand je vérifie « ConsumerCount » par JMX-console il montre 26 ....

    Puis-je savoir que courtier JMS et le conteneur que vous utilisez? J'ai essayé avec EAP 6.4.x avec hornetQ. Et je reçois le nombre correct des consommateurs via JConsole:

enter image description here

+0

JBoss AS 6 et interne qu'il utilise HornetQ – happy

+0

@happy J'ai essayé avec AS 6 aussi. Il montre la valeur 'ConsumerCount' définie dans ejb-jar.xml. C'est MBean je parle de 'org.hornetq: module = JMS, type = File d'attente, nom =" $ QUEUE_NAME "' – Varsha