// some code to be executed which may be depending on the environment variable values.
setEnv(gfProps.getProperties());
final StartupContext startupContext = new StartupContext(gfProps.getProperties());
final ServiceTracker hk2Tracker = new ServiceTracker(getBundleContext(), Main.class.getName(), null);
hk2Tracker.open();
final Main main = (Main) hk2Tracker.waitForService(0);
hk2Tracker.close();
final ModulesRegistry mr = ModulesRegistry.class.cast(getBundleContext().getService(getBundleContext().getServiceReference(ModulesRegistry.class.getName())));
final Habitat habitat = main.createHabitat(mr, startupContext);
final ModuleStartup gfKernel = main.findStartupService(mr, habitat, null, startupContext);
GlassFish glassFish = createGlassFish(gfKernel, habitat, gfProps.getProperties());