OSGI Blueprint를 처음 접했고 이상한 문제가 있습니다.Osgi 청사진에서 서비스를 동적으로 바인드 할 수 없습니다.
나는이 별도의 데이터베이스가 오라클과 H2 청사진 컨테이너는 다음과 같은 형태
DB를 (테스트에 사용되는) :
<service ref='oracleDataSource' interface='javax.sql.DataSource'>
<service-properties>
<entry key='osgi.jndi.service.name' value='someJndiDatasourceName'/>
</service-properties>
</service>
<bean id='oracleDataSource'
class="CustomDataSourceImpl">
<property name="connectionFactoryClassName" value="${datasource.type}"/>
<property name="url" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="validateConnectionOnBorrow" value="true"/>
</bean>
분명히,이 서비스는 위의 oracleDataSource에 결합한다. datasource.type 특성은 구성 파일에서 채워지고 값이 oracle.jdbc.pool.OracleDataSource입니다.
이제는 구성 파일을 편집하고 값을 변경하려는 경우를 가정합니다
<bean id="h2ds" class="org.h2.jdbcx.JdbcDataSource">
<property name="URL" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
우리는 청사진에 동적 바인딩 같은 종류의 작업을 수행 할 수 있습니다 H2 타입 datasource.type의 다음 내 서비스 심판 아래에 언급 된 콩에 결합해야 하는가?
기본적으로 나는 서비스 탐지기와 비슷한 것을 찾고 있습니다.
DataSource 서비스를 제공 할 때 ''요소 만 표시되었지만 일반적으로 다른 번들의 서비스를 사용하는 곳에 ''요소가 표시되지 않았습니다. 잠재적으로 복수의 후보 DataSource 서비스를 구별 할 수있는 ''에 있기 때문에 표시하십시오. –
예, 다른 번들에서 서비스를 사용하고 있습니다. ** ** 에 대한 ** ** 요소 그러나 요구 사항이 다소 다르다고 생각하지만 H2 데이터 소스를 내 ** ** pax 통합 테스트를 실행할 때마다 ** pax 통합 테스트 이외의 다른 모든 경우, oracle 데이터 소스를 ** ** ** –
Sandy
에 바인드하고 싶습니다. 왜?' 요소는 번들 내에서 고정 된 bean을 가져 와서 서비스로 내보내는 것을 의미합니다. 여러분이 주입하는 bean 자체가 아닙니다. 통합 테스트에서 Oracle 대신 H2를 사용하여'DataSource'를 제공하는 번들을 사용합니다. –