2013-04-16 2 views
2

Мне было интересно, есть ли какой-либо способ для ленивого init activemq persistence. Проблема заключается в том, что я не хочу заранее указывать пароль пользователя и пароль, но пусть пользователь вводит эти значения после инициализации приложения. Так, например, пользователь запускает приложение, а затем требуется ввести имя пользователя и пароль базы данных. После этого приложение инициализирует постоянство activemq, используя соединение с базой данных, предоставленное пользователем.Lazy init для activeemq datasource

<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> 

wherere 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> 

поэтому я хочу сначала получить значения для имени пользователя и пароля, а после этой инициализации настойчивости. Спасибо)

+0

Возможно, не используйте Spring! –

+0

Зачем вам нужно вводить учетные данные вручную? Кажется странным ... – willome

+0

ну, вы не знаете имя базы данных, имя пользователя и пароль заранее. После развертывания приложения пользователь вводит эти значения. –

ответ

1

Вся идея с весной заключается в том, чтобы подключить эти вещи при запуске, который покрывает 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(); 
+0

спасибо)) Я начал думать в этом направлении –