2013-04-16 20 views
2

我想知道是否有任何方法可用於activemq持久性的惰性init。問題是我不想事先指定數據庫的用戶和密碼,而是讓用戶在應用程序初始化後輸入這些值。因此,例如,用戶啓動應用程序,然後需要輸入數據庫用戶名和密碼。在完成之後,應用程序將使用用戶提供的數據庫連接初始化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> 

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

謝謝))我實際上開始思考這個方向 –