我正在尝试创建一个连接到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查找中使用数据源的方法?
由于
答案 0 :(得分:1)
令人愤怒的是,MDB注释配置的教科书实现决定了环境和安全特定值的硬编码。 Java中的注释处理也非常巧妙地确保您不会像 final String MyConfig = System.getProperty(....)那样潜入某些非常数值。
无论如何,您可以将部分或全部MDB配置配置为更友好的XML部署描述符(尽管构建和部署有点复杂)。 JBoss XML部署描述符可以在 $ {} 标记中分配值,这些标记引用系统属性,因此从配置角度来看它们更易于管理。