Search in sources :

Example 1 with ModulesRegistry

use of com.sun.enterprise.module.ModulesRegistry in project Payara by payara.

the class ACCModulesManager method initialize.

public static synchronized void initialize(final ClassLoader loader) throws URISyntaxException {
    /*
         * The habitat might have been initialized earlier.  Currently
         * we use a single habitat for the JVM.  
         */
    if (habitat == null) {
        habitat = prepareHabitat(loader);
        /*
             * Set up the default habitat in Globals as soon as we know
             * which habitat we'll use.
             */
        Globals.setDefaultHabitat(habitat);
        ServiceLocator locator = habitat;
        DynamicConfigurationService dcs = locator.getService(DynamicConfigurationService.class);
        DynamicConfiguration config = dcs.createDynamicConfiguration();
        /*
             * Remove any already-loaded startup context so we can replace it
             * with the ACC one.
             */
        config.addUnbindFilter(BuilderHelper.createContractFilter(StartupContext.class.getName()));
        /*
             * Following the example from AppServerStartup, remove any
             * pre-loaded lazy inhabitant for ProcessEnvironment that exists
             * from HK2's scan for services.  Then add in
             * an ACC ProcessEnvironment.
             */
        config.addUnbindFilter(BuilderHelper.createContractFilter(ProcessEnvironment.class.getName()));
        config.commit();
        config = dcs.createDynamicConfiguration();
        StartupContext startupContext = new ACCStartupContext();
        AbstractActiveDescriptor<?> startupContextDescriptor = BuilderHelper.createConstantDescriptor(startupContext);
        startupContextDescriptor.addContractType(StartupContext.class);
        config.addActiveDescriptor(startupContextDescriptor);
        ModulesRegistry modulesRegistry = new StaticModulesRegistry(ACCModulesManager.class.getClassLoader());
        config.addActiveDescriptor(BuilderHelper.createConstantDescriptor(modulesRegistry));
        config.addActiveDescriptor(BuilderHelper.createConstantDescriptor(new ProcessEnvironment(ProcessEnvironment.ProcessType.ACC)));
        /*
             * Create the ClientNamingConfigurator used by naming.
             */
        ClientNamingConfigurator cnc = new ClientNamingConfiguratorImpl();
        config.addActiveDescriptor(BuilderHelper.createConstantDescriptor(cnc));
        Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
        AbstractActiveDescriptor<Logger> di = BuilderHelper.createConstantDescriptor(logger);
        di.addContractType(Logger.class);
        config.addActiveDescriptor(di);
        config.commit();
    }
}
Also used : DynamicConfigurationService(org.glassfish.hk2.api.DynamicConfigurationService) StartupContext(com.sun.enterprise.module.bootstrap.StartupContext) StaticModulesRegistry(com.sun.enterprise.module.single.StaticModulesRegistry) Logger(java.util.logging.Logger) ProcessEnvironment(org.glassfish.api.admin.ProcessEnvironment) ClientNamingConfigurator(org.glassfish.api.naming.ClientNamingConfigurator) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) ClientNamingConfiguratorImpl(com.sun.enterprise.naming.impl.ClientNamingConfiguratorImpl) DynamicConfiguration(org.glassfish.hk2.api.DynamicConfiguration) ModulesRegistry(com.sun.enterprise.module.ModulesRegistry) StaticModulesRegistry(com.sun.enterprise.module.single.StaticModulesRegistry)

Example 2 with ModulesRegistry

use of com.sun.enterprise.module.ModulesRegistry in project Payara by payara.

the class CLIContainer method getServiceLocator.

public ServiceLocator getServiceLocator() {
    if (serviceLocator == null) {
        Metrix.event("Init hk2 - start");
        ModulesRegistry registry = new StaticModulesRegistry(this.classLoader);
        serviceLocator = registry.createServiceLocator("default");
        if (programOptions != null) {
            ServiceLocatorUtilities.addOneConstant(serviceLocator, programOptions);
        }
        if (environment != null) {
            ServiceLocatorUtilities.addOneConstant(serviceLocator, environment);
        }
        ServiceLocatorUtilities.addOneConstant(serviceLocator, this);
        Metrix.event("Init hk2 - done");
    }
    return serviceLocator;
}
Also used : ModulesRegistry(com.sun.enterprise.module.ModulesRegistry) StaticModulesRegistry(com.sun.enterprise.module.single.StaticModulesRegistry) StaticModulesRegistry(com.sun.enterprise.module.single.StaticModulesRegistry)

Example 3 with ModulesRegistry

use of com.sun.enterprise.module.ModulesRegistry in project Payara by payara.

the class CustomizationTokensProvider method initializeLocator.

protected void initializeLocator() {
    final ClassLoader ecl = CustomizationTokensProvider.class.getClassLoader();
    File inst = new File(System.getProperty(SystemPropertyConstants.INSTALL_ROOT_PROPERTY));
    final File ext = new File(inst, "modules");
    LOG.log(Level.FINE, "asadmin modules directory: {0}", ext);
    if (ext.isDirectory()) {
        AccessController.doPrivileged(new PrivilegedAction() {

            @Override
            public Object run() {
                try {
                    URLClassLoader pl = new URLClassLoader(getJars(ext));
                    ModulesRegistry registry = new StaticModulesRegistry(pl);
                    locator = registry.createServiceLocator("default");
                    return pl;
                } catch (IOException ex) {
                    // any failure here is fatal
                    LOG.log(Level.SEVERE, ConfigApiLoggerInfo.MODULES_CL_FAILED, ex);
                }
                return ecl;
            }
        });
    } else {
        LOG.log(Level.FINER, "Modules directory does not exist");
    }
}
Also used : PrivilegedAction(java.security.PrivilegedAction) ModulesRegistry(com.sun.enterprise.module.ModulesRegistry) StaticModulesRegistry(com.sun.enterprise.module.single.StaticModulesRegistry) URLClassLoader(java.net.URLClassLoader) URLClassLoader(java.net.URLClassLoader) StaticModulesRegistry(com.sun.enterprise.module.single.StaticModulesRegistry) IOException(java.io.IOException) File(java.io.File)

Example 4 with ModulesRegistry

use of com.sun.enterprise.module.ModulesRegistry in project Payara by payara.

the class RuntimeRootImpl method restartDomain.

public void restartDomain() {
    final ModulesRegistry registry = InjectedValues.getInstance().getModulesRegistry();
    final AdminCommandContext ctx = new AdminCommandContextImpl(AMXLoggerInfo.getLogger(), new PlainTextActionReporter());
    final AdminCommand cmd = new RestartDomainCommand(registry);
    cmd.execute(ctx);
}
Also used : AdminCommandContextImpl(org.glassfish.api.admin.AdminCommandContextImpl) ModulesRegistry(com.sun.enterprise.module.ModulesRegistry) AdminCommand(org.glassfish.api.admin.AdminCommand) RestartDomainCommand(com.sun.enterprise.v3.admin.RestartDomainCommand) AdminCommandContext(org.glassfish.api.admin.AdminCommandContext) PlainTextActionReporter(com.sun.enterprise.v3.common.PlainTextActionReporter)

Example 5 with ModulesRegistry

use of com.sun.enterprise.module.ModulesRegistry in project Payara by payara.

the class StaticGlassFishRuntime method newGlassFish.

/**
 * Creates a new GlassFish instance and add it to a Map of instances
 * created by this runtime.
 *
 * @param glassFishProperties
 * @return
 * @throws Exception
 */
@Override
public synchronized GlassFish newGlassFish(GlassFishProperties glassFishProperties) throws GlassFishException {
    // some code to be executed which may be depending on the environment variable values.
    try {
        // Don't set temporarily created instanceroot in the user supplied
        // GlassFishProperties, hence clone it.
        Properties cloned = new Properties();
        cloned.putAll(glassFishProperties.getProperties());
        final GlassFishProperties gfProps = new GlassFishProperties(cloned);
        setEnv(gfProps);
        final StartupContext startupContext = new StartupContext(gfProps.getProperties());
        ModulesRegistry modulesRegistry = SingleHK2Factory.getInstance().createModulesRegistry();
        ServiceLocator serviceLocator = main.createServiceLocator(modulesRegistry, startupContext, Arrays.asList((PopulatorPostProcessor) new EmbeddedInhabitantsParser(), new ContextDuplicatePostProcessor()), null);
        final ModuleStartup gfKernel = main.findStartupService(modulesRegistry, serviceLocator, null, startupContext);
        // create a new GlassFish instance
        GlassFishImpl gfImpl = new GlassFishImpl(gfKernel, serviceLocator, gfProps.getProperties()) {

            @Override
            public void dispose() throws GlassFishException {
                try {
                    super.dispose();
                } finally {
                    gfMap.remove(gfProps.getInstanceRoot());
                    if ("true".equalsIgnoreCase(gfProps.getProperties().getProperty(autoDelete)) && gfProps.getInstanceRoot() != null) {
                        File instanceRoot = new File(gfProps.getInstanceRoot());
                        if (instanceRoot.exists()) {
                            // might have been deleted already.
                            Util.deleteRecursive(instanceRoot);
                        }
                    }
                }
            }
        };
        // Add this newly created instance to a Map
        gfMap.put(gfProps.getInstanceRoot(), gfImpl);
        return gfImpl;
    } catch (GlassFishException e) {
        throw e;
    } catch (Exception e) {
        throw new GlassFishException(e);
    }
}
Also used : GlassFishException(org.glassfish.embeddable.GlassFishException) StartupContext(com.sun.enterprise.module.bootstrap.StartupContext) ContextDuplicatePostProcessor(com.sun.enterprise.module.bootstrap.ContextDuplicatePostProcessor) PopulatorPostProcessor(org.glassfish.hk2.api.PopulatorPostProcessor) Hk2LoaderPopulatorPostProcessor(org.glassfish.hk2.bootstrap.impl.Hk2LoaderPopulatorPostProcessor) GlassFishProperties(org.glassfish.embeddable.GlassFishProperties) GlassFishException(org.glassfish.embeddable.GlassFishException) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) ModulesRegistry(com.sun.enterprise.module.ModulesRegistry) File(java.io.File) GlassFishProperties(org.glassfish.embeddable.GlassFishProperties) ModuleStartup(com.sun.enterprise.module.bootstrap.ModuleStartup)

Aggregations

ModulesRegistry (com.sun.enterprise.module.ModulesRegistry)15 StaticModulesRegistry (com.sun.enterprise.module.single.StaticModulesRegistry)8 ServiceLocator (org.glassfish.hk2.api.ServiceLocator)6 StartupContext (com.sun.enterprise.module.bootstrap.StartupContext)5 Module (com.sun.enterprise.module.Module)3 File (java.io.File)3 URLClassLoader (java.net.URLClassLoader)3 Main (com.sun.enterprise.module.bootstrap.Main)2 ModuleStartup (com.sun.enterprise.module.bootstrap.ModuleStartup)2 IOException (java.io.IOException)2 URL (java.net.URL)2 PrivilegedAction (java.security.PrivilegedAction)2 ArrayList (java.util.ArrayList)2 Properties (java.util.Properties)2 ProcessEnvironment (org.glassfish.api.admin.ProcessEnvironment)2 GlassFishException (org.glassfish.embeddable.GlassFishException)2 InitialGroupInfoService (com.sun.corba.ee.impl.folb.InitialGroupInfoService)1 Domain (com.sun.enterprise.config.serverbeans.Domain)1 BootException (com.sun.enterprise.module.bootstrap.BootException)1 ContextDuplicatePostProcessor (com.sun.enterprise.module.bootstrap.ContextDuplicatePostProcessor)1