【问题标题】:Lazy init for activemq datasourceactivemq 数据源的惰性初始化
【发布时间】:2013-04-17 12:29:55
【问题描述】:

我想知道是否有任何方法可以实现 activemq 持久性的惰性初始化。问题是我不想事先指定数据库的用户和密码,而是让用户在应用程序初始化后输入这些值。因此,例如用户启动应用程序,然后需要输入数据库用户名和密码。在他这样做之后,应用程序使用用户提供的数据库连接来初始化 activemq 持久性。

    <amq:persistenceFactory>
        <amq:journalPersistenceAdapterFactory journalLogFiles="4" dataDirectory="./journal-data" dataSource="#postgre-ds">
            <amq:statements>
                <amq:statements binaryDataType="VARCHAR(250)"/>
            </amq:statements>
        </amq:journalPersistenceAdapterFactory>
    </amq:persistenceFactory>

postgre-ds 在哪里

<bean id="postgre-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.postgresql.Driver"/>
    <property name="url" value="jdbc:someURL"/>
    <property name="username" value="username"/>
    <property name="password" value="pa55w0rd"/>
    <property name="maxActive" value="200"/>
    <property name="poolPreparedStatements" value="true"/>
</bean>

所以我想首先获取用户名和密码的值,然后初始化持久性。谢谢)

【问题讨论】:

  • 也许不用Spring!
  • 为什么需要手动输入凭证?好像很奇怪……
  • 好吧,你事先并不知道数据库名称、用户名和密码。部署应用后,用户将输入这些值。

标签: java spring jms activemq applicationcontext


【解决方案1】:

spring 的整个想法是在启动时将这些东西连接起来,这涵盖了 99% 的用例。

这并没有什么神奇之处。无论如何,它只是普通的 java 对象。如果您需要对生命周期和输入参数进行更多控制,请继续手动操作。

DataSource ds = new BasicDataSource();
ds.setUsername( getInput() );
// ... set all parameters needed
JournalPersistenceAdapterFactory factory = new JournalPersistenceAdapterFactory();
factory.setDataDirectoryFile(data);
//.. set all parameters needed
BrokerService broker = new BrokerService();
broker.setPersistenceFactory(factory);
broker.addConnector(ActiveMQConnectionFactory.DEFAULT_BROKER_BIND_URL);
// More config goes here
broker.start();

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多