// Set up DataSource service that will manage the connection pools
new C3P0DataSourceServiceAssembler().identifiedBy( "datasource-service" ).visibleIn( Visibility.layer ).assemble( module );
{
ModuleAssembly testModule = module.layer().module( "TestDS" );
// Create a specific DataSource that uses the "datasource" service to do the main work
new DataSourceAssembler().
withDataSourceServiceIdentity( "datasource-service" ).
identifiedBy( "testds" ).
visibleIn( Visibility.module ).
withCircuitBreaker( DataSources.newDataSourceCircuitBreaker() ).
assemble( testModule );
// Set up Liquibase service that will create the tables
testModule.services( LiquibaseService.class ).identifiedBy( "liquibase1" ).instantiateOnStartup();
testModule.entities( LiquibaseConfiguration.class );
testModule.forMixin( LiquibaseConfiguration.class ).declareDefaults().enabled().set( true );
testModule.forMixin( LiquibaseConfiguration.class ).declareDefaults().changeLog().set( "changelog.xml" );
}
{
ModuleAssembly testModule2 = module.layer().module( "TestDS2" );
// Create another specific DataSource that uses the "datasource" service to do the main work
// Use DataSourceAssembler to assemble the DataSource.
new DataSourceAssembler().
withDataSourceServiceIdentity( "datasource-service" ).
identifiedBy( "testds2" ).
visibleIn( Visibility.module ).
withCircuitBreaker( DataSources.newDataSourceCircuitBreaker() ).
assemble( testModule2 );
// Set up Liquibase service that will create the tables
testModule2.services( LiquibaseService.class ).identifiedBy( "liquibase2" ).instantiateOnStartup();
testModule2.entities( LiquibaseConfiguration.class );
testModule2.forMixin( LiquibaseConfiguration.class ).declareDefaults().enabled().set( true );
testModule2.forMixin( LiquibaseConfiguration.class ).declareDefaults().changeLog().set( "changelog.xml" );
}
// START SNIPPET: jmx
new DataSourceJMXAssembler().visibleIn( Visibility.module ).assemble( module );
// END SNIPPET: jmx