private SystemInstance(Properties properties) throws Exception {
this.components = new HashMap<Class, Object>();
this.internalProperties.putAll(System.getProperties());
this.internalProperties.putAll(properties);
this.options = new Options(internalProperties, new Options(System.getProperties()));
this.home = new FileUtils("openejb.home", "user.dir", this.internalProperties);
this.base = new FileUtils("openejb.base", "openejb.home", this.internalProperties);
this.classPath = ClassPathFactory.createClassPath(this.internalProperties.getProperty("openejb.loader", "context"));
this.classLoader = classPath.getClassLoader();
this.internalProperties.setProperty("openejb.home", home.getDirectory().getCanonicalPath());
this.internalProperties.setProperty("openejb.base", base.getDirectory().getCanonicalPath());
System.setProperty("derby.system.home", base.getDirectory().getCanonicalPath());
System.setProperty("derby.storage.fileSyncTransactionLog", "true");
}