Начиная с JBoss AS 5.1, по крайней мере, вы можете использовать AOP для настройки @ActivationConfigProperties. Я обнаружил это, посмотрев примеры, которые jboss предоставляет здесь . Это полезно, если вы не хотите, чтобы ваши имя пользователя и пароли были доступны для всего контейнера в системном свойстве, или если вы похожи на меня и никогда, повторяю НИКОГДА, не хотите развертывать артефакт с именем пользователя / паролем в нем. Как бы то ни было, вот Jist ...
Аннотировать MDB, как это ...
...
@MessageDriven
@AspectDomain("TestMDBean")
public class TestMDBean implements MessageListener {
...
Затем добавьте $ {what} -aop.xml в каталог deploy с внутренними компонентами, как показано ниже. Я оставил там исходные комментарии на случай, если Jaikiran внесет упомянутые изменения ...
Примечание: аннотация должна быть на одном
только линия.
<?xml version="1.0" encoding="UTF-8"?>
<aop xmlns="urn:jboss:aop-beans:1.0">
<!-- TODO: Jaikiran - These interceptor declarations need not be here since they
are already declared through the ejb3-interceptors-aop.xml. Duplicating them leads to
deployment errors. However, if this custom-ejb3-interceptors-aop.xml needs to be
independent, then we must find a better way of declaring these. Right now, commenting these
out, can be looked at later. -->
<!--
<interceptor class="org.jboss.ejb3.AllowedOperationsInterceptor" scope="PER_VM"/>
<interceptor class="org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor" scope="PER_VM"/>
<interceptor factory="org.jboss.ejb3.security.RunAsSecurityInterceptorFactory" scope="PER_CLASS"/>
<interceptor class="org.jboss.ejb3.stateless.StatelessInstanceInterceptor" scope="PER_VM"/>
<interceptor factory="org.jboss.ejb3.interceptor.EJB3InterceptorsFactory" scope="PER_CLASS_JOINPOINT"/>
<interceptor factory="org.jboss.aspects.tx.TxInterceptorFactory" scope="PER_CLASS_JOINPOINT"/>
-->
<domain name="TestMDBean" extends="Message Driven Bean" inheritBindings="true">
<annotation expr="!class(@org.jboss.ejb3.annotation.DefaultActivationSpecs)">
@org.jboss.ejb3.annotation.DefaultActivationSpecs (value={@javax.ejb.ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Queue"), @javax.ejb.ActivationConfigProperty(propertyName="destination", propertyValue="queue/MyQueue"), @javax.ejb.ActivationConfigProperty(propertyName="user", propertyValue="testusr"), @javax.ejb.ActivationConfigProperty(propertyName="password", propertyValue="testpwd")})
</annotation>
</domain>
</aop>