// set the server base directory system property
System.setProperty("xbean.base.dir", baseDirectory.getAbsolutePath());
// load the configuration file
SpringApplicationContext factory;
File file = new File(configurationFile);
if (!file.isAbsolute()) {
file = new File(baseDirectory, configurationFile);
}
if (file.canRead()) {
try {
// configuration file is on the local file system
factory = new FileSystemXmlApplicationContext(file.toURL().toString());
} catch (MalformedURLException e) {
throw new FatalStartupError("Error creating url for bootstrap file", e);
}
} else {
// assume it is a classpath resource
factory = new ClassPathXmlApplicationContext(configurationFile);
}
// get the main service from the configuration file
String[] names = factory.getBeanNamesForType(Main.class);
Main main = null;
if (names.length == 0) {
throw new FatalStartupError("No bean of type: " + Main.class.getName() + " found in the bootstrap file: " + configurationFile, 10);
}
main = (Main) factory.getBean(names[0]);
return main;
}
finally {
Thread.currentThread().setContextClassLoader(oldClassLoader);
}