* @param servletContext The ServletContext instance
*/
public static void executeGrailsBootstraps(GrailsApplication application, WebApplicationContext webContext,
ServletContext servletContext) {
PersistenceContextInterceptor interceptor = null;
String[] beanNames = webContext.getBeanNamesForType(PersistenceContextInterceptor.class);
if (beanNames.length > 0) {
interceptor = (PersistenceContextInterceptor)webContext.getBean(beanNames[0]);
}
if (interceptor != null) {
interceptor.init();
}
// init the Grails application
try {
GrailsClass[] bootstraps = application.getArtefacts(BootstrapArtefactHandler.TYPE);
for (GrailsClass bootstrap : bootstraps) {
final GrailsBootstrapClass bootstrapClass = (GrailsBootstrapClass) bootstrap;
final Object instance = bootstrapClass.getReferenceInstance();
webContext.getAutowireCapableBeanFactory().autowireBeanProperties(
instance, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
bootstrapClass.callInit(servletContext);
}
if (interceptor != null) {
interceptor.flush();
}
}
finally {
if (interceptor != null) {
interceptor.destroy();
}
}
}