2013-04-16 2 views
2

activemq 지속성의 지연 초기화를위한 방법이 있는지 궁금합니다. 문제는 데이터베이스의 사용자 및 암호를 미리 지정하지 않고 응용 프로그램의 초기화 후에 사용자가이 값을 입력 할 수있게하는 것입니다. 예를 들어 사용자가 응용 프로그램을 시작한 다음 데이터베이스 사용자 이름과 암호를 입력해야합니다. 사용자가 제공 한 후에 응용 프로그램은 사용자가 제공 한 데이터베이스 연결을 사용하여 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

아마도 봄을 사용하지 마십시오! –

+0

자격 증명을 수동으로 입력해야하는 이유는 무엇입니까? 이상하게 보입니다 ... – willome

+0

음, 데이터베이스 이름, 사용자 이름 및 암호를 미리 알지 못합니다. 앱이 배포되면 사용자가이 값을 입력합니다. –

답변

1

스프링을 사용한 전체적인 아이디어는 시동시에 이러한 것들을 연결하여 사용률의 99 %를 차지합니다.

마법에 관한 이야기는 없습니다. 어쨌든 그냥 일반 자바 객체 일뿐입니다. 수명주기 및 입력 매개 변수에 대한 더 많은 제어가 필요한 경우 수동으로 수행하십시오.

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

감사합니다.)) 실제로이 방향으로 생각하기 시작했습니다. –