2

我试图创建一个连接到 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 查找中使用数据源的方法?

谢谢

4

1 回答 1

1

令人愤怒的是,MDB 注释配置的教科书实现规定了环境和安全特定值的硬编码。Java 中的注解处理也非常聪明,可以确保您不会偷偷输入一些非常量的值,例如最终的 String MyConfig = System.getProperty(....)

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

于 2011-07-03T19:12:59.217 回答