Jms MDB通过数据源连接到Oracle AQ

Jms MDB通过数据源连接到Oracle AQ,jms,jboss6.x,message-driven-bean,oracle-aq,Jms,Jboss6.x,Message Driven Bean,Oracle Aq,我正在尝试创建一个MDB(JBoss AS 6)来连接到Oracle广告队列 我得到了以下示例: @MessageDriven(name = "TestMdb", activationConfig = { @ActivationConfigProperty(propertyName="destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty(propertyName="conne

我正在尝试创建一个MDB(JBoss AS 6)来连接到Oracle广告队列

我得到了以下示例:

@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) {
    ...
    }
}
问题是我需要在代码中直接指定连接属性(包括DB主机、用户名和密码)。 有人知道从jndi查找中使用数据源的方法吗


感谢

令人愤怒的是,MDB注释配置的教科书实现规定了环境和安全特定值的硬编码。Java中的注释处理也非常聪明,它可以确保您没有潜入一些非常量值,比如最终字符串MyConfig=System.getProperty(..)


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

谢谢。我希望有一种方法可以指定数据源jndi名称,而不是JDBCURL和其他属性。