12.14. Using @Initialize and @Uninitialize
Overview
In this example, assume we have a component that opens multiple connections to a database on initialization and then needs to release all those database resources when we close the Smooks instance.
public class MultiDataSourceAccessor
{
@ConfigParam
private File dataSourceConfig;
Map<String, Datasource> datasources = new HashMap<String, Datasource>();
@Initialize
public void createDataSources()
{
// Add DS creation code here....
// Read the dataSourceConfig property to read the DS configs...
}
@Uninitialize
public void releaseDataSources()
{
// Add DS release code here....
}
// etc...
}
@Initialize and @Uninitialize annotations above, the following should be noted:
- The
@Initializeand@Uninitializemethods must be public, zero-arg methods. - The
@ConfigParamproperties are all initialized before the first@Initializemethod is called. Therefore, you can use the@ConfigParamcomponent properties as input to the initialization process. - The
@Uninitializemethods are all called in response to a call to theSmooks.closemethod.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.