MDB通过数据源连接到Oracle AQ

时间:2011-06-29 12:14:44

标签: jms jboss6.x message-driven-bean oracle-aq

我正在尝试创建一个连接到Oracle AD队列的MDB(JBoss AS 6)。

我得到了以下示例:

@MessageDriven(name = "TestMdb", activationConfig = {
    @ActivationConfigProperty(propertyName="destinationType", propertyValue = "javax.jms.Queue"),
    @ActivationConfigProperty(propertyName="connectionFactoryProperties", propertyValue="jdbc_connect_string=jdbc:oracle:thin:XXXXX@XXX:1521:XXX,host=XXXX,user=XXXX,password=XXXX,port=XXXX,sid=XXXX,driver=XXXX"),
    @ActivationConfigProperty(propertyName="destinationProperties", propertyValue="owner=XXXXX,name=jms_text_que"),
    @ActivationConfigProperty(propertyName="userName", propertyValue="XXXX"),
    @ActivationConfigProperty(propertyName="password", propertyValue="XXXX"),
    @ActivationConfigProperty(propertyName="ConnectionFactoryClassName", propertyValue="oracle.jms.AQjmsConnectionFactory"),
    @ActivationConfigProperty(propertyName="QueueConnectionFactoryClassName", propertyValue="oracle.jms.AQjmsQueueConnectionFactory")
    })
@ResourceAdapter("XXXXXX-ear.ear#genericjmsra.rar")
@TransactionManagement(TransactionManagementType.BEAN)
public class TestMdb  implements MessageListener {

    public void onMessage(Message message) {
    ...
    }
}

问题是我需要直接在代码中指定连接属性(包括数据库主机,用户名和密码)。 有没有人知道从jndi查找中使用数据源的方法?

由于

1 个答案:

答案 0 :(得分:1)

令人愤怒的是,MDB注释配置的教科书实现决定了环境和安全特定值的硬编码。 Java中的注释处理也非常巧妙地确保您不会像 final String MyConfig = System.getProperty(....)那样潜入某些非常数值。

无论如何,您可以将部分或全部MDB配置配置为更友好的XML部署描述符(尽管构建和部署有点复杂)。 JBoss XML部署描述符可以在 $ {} 标记中分配值,这些标记引用系统属性,因此从配置角度来看它们更易于管理。