Example usage for org.apache.solr.core CoreContainer getSolrHome

List of usage examples for org.apache.solr.core CoreContainer getSolrHome

Introduction

In this page you can find the example usage for org.apache.solr.core CoreContainer getSolrHome.

Prototype

public String getSolrHome() 

Source Link

Usage

From source file:org.alfresco.solr.lifecycle.SolrCoreLoadRegistration.java

License:Open Source License

/**
 * Registers with the admin handler the information server and the trackers.
 *///w  ww  .j  av a  2s  .  co  m
public static void registerForCore(AlfrescoCoreAdminHandler adminHandler, CoreContainer coreContainer,
        SolrCore core, String coreName) {

    TrackerRegistry trackerRegistry = adminHandler.getTrackerRegistry();
    Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getProperties();
    //Prepare cores
    SolrResourceLoader loader = core.getLatestSchema().getResourceLoader();
    SolrKeyResourceLoader keyResourceLoader = new SolrKeyResourceLoader(loader);
    SOLRAPIClientFactory clientFactory = new SOLRAPIClientFactory();
    SOLRAPIClient repositoryClient = clientFactory.getSOLRAPIClient(props, keyResourceLoader,
            AlfrescoSolrDataModel.getInstance().getDictionaryService(CMISStrictDictionaryService.DEFAULT),
            AlfrescoSolrDataModel.getInstance().getNamespaceDAO());
    //Start content store
    SolrContentStore contentStore = new SolrContentStore(coreContainer.getSolrHome());
    SolrInformationServer srv = new SolrInformationServer(adminHandler, core, repositoryClient, contentStore);
    props.putAll(srv.getProps());
    adminHandler.getInformationServers().put(coreName, srv);

    SolrTrackerScheduler scheduler = adminHandler.getScheduler();

    // Prevents other threads from registering the ModelTracker at the same time
    // Create model tracker and load all the persisted models
    createModelTracker(coreName, trackerRegistry, props, coreContainer.getSolrHome(), repositoryClient, srv,
            scheduler);

    log.info("Starting to track " + coreName);
    if (Boolean.parseBoolean(props.getProperty("enable.alfresco.tracking", "false"))) {

        if (trackerRegistry.hasTrackersForCore(coreName)) {
            log.info("Trackers for " + coreName + " is already registered, shutting them down.");
            shutdownTrackers(coreName, trackerRegistry.getTrackersForCore(coreName), scheduler);
            trackerRegistry.removeTrackersForCore(coreName);
            adminHandler.getInformationServers().remove(coreName);
        }

        List<Tracker> trackers = createCoreTrackers(coreName, trackerRegistry, props, scheduler,
                repositoryClient, srv);

        CommitTracker commitTracker = new CommitTracker(props, repositoryClient, coreName, srv, trackers);
        trackerRegistry.register(coreName, commitTracker);
        scheduler.schedule(commitTracker, coreName, props);
        log.info("The Trackers are now scheduled to run");
        trackers.add(commitTracker); //Add the commitTracker to the list of scheduled trackers that can be shutdown

        core.addCloseHook(new CloseHook() {
            @Override
            public void preClose(SolrCore core) {
                log.info("Shutting down " + core.getName());
                SolrCoreLoadRegistration.shutdownTrackers(core.getName(), trackers, scheduler);
            }

            @Override
            public void postClose(SolrCore core) {
                // Nothing to be done here
            }
        });
    }
}

From source file:org.alfresco.solr.tracker.CoreWatcherJob.java

License:Open Source License

/**
 * Registers with the admin handler the information server and the trackers.
 *//*from   w  w w. j  av a  2  s. c o m*/
private void registerForCore(AlfrescoCoreAdminHandler adminHandler, CoreContainer coreContainer, SolrCore core,
        String coreName, TrackerRegistry trackerRegistry) throws JobExecutionException {
    Properties props = new CoreDescriptorDecorator(core.getCoreDescriptor()).getCoreProperties();
    boolean testcase = Boolean.parseBoolean(System.getProperty("alfresco.test", "false"));
    if (Boolean.parseBoolean(props.getProperty("enable.alfresco.tracking", "false"))) {
        core.addCloseHook(new AlfrescoSolrCloseHook(adminHandler));

        SolrTrackerScheduler scheduler = adminHandler.getScheduler();
        SolrResourceLoader loader = core.getLatestSchema().getResourceLoader();
        SolrKeyResourceLoader keyResourceLoader = new SolrKeyResourceLoader(loader);
        SOLRAPIClientFactory clientFactory = new SOLRAPIClientFactory();
        SOLRAPIClient repositoryClient = clientFactory.getSOLRAPIClient(props, keyResourceLoader,
                AlfrescoSolrDataModel.getInstance().getDictionaryService(CMISStrictDictionaryService.DEFAULT),
                AlfrescoSolrDataModel.getInstance().getNamespaceDAO());
        SolrContentStore solrContentStore = this.getSolrContentStore(coreContainer);
        SolrInformationServer srv = new SolrInformationServer(adminHandler, core, repositoryClient,
                solrContentStore);
        adminHandler.getInformationServers().put(coreName, srv);

        log.info("Starting to track " + coreName);

        ModelTracker mTracker = null;
        // Prevents other threads from registering the ModelTracker at the same time
        synchronized (trackerRegistry) {
            mTracker = trackerRegistry.getModelTracker();
            if (mTracker == null) {
                logIfDebugEnabled("Creating ModelTracker when registering trackers for core " + coreName);
                mTracker = new ModelTracker(coreContainer.getSolrHome(), props, repositoryClient, coreName,
                        srv);
                if (testcase) {
                    // We don't want the trackers scheduled if we are running a test.
                    return;
                }
                trackerRegistry.setModelTracker(mTracker);

                scheduler.schedule(mTracker, coreName, props);
            }
        }

        log.info("Ensuring first model sync.");
        mTracker.ensureFirstModelSync();
        log.info("Done ensuring first model sync.");

        AclTracker aclTracker = new AclTracker(props, repositoryClient, coreName, srv);
        trackerRegistry.register(coreName, aclTracker);
        scheduler.schedule(aclTracker, coreName, props);

        ContentTracker contentTrkr = new ContentTracker(props, repositoryClient, coreName, srv);
        trackerRegistry.register(coreName, contentTrkr);
        scheduler.schedule(contentTrkr, coreName, props);

        MetadataTracker metaTrkr = new MetadataTracker(props, repositoryClient, coreName, srv);
        trackerRegistry.register(coreName, metaTrkr);
        scheduler.schedule(metaTrkr, coreName, props);
    }
}

From source file:org.alfresco.solr.tracker.CoreWatcherJob.java

License:Open Source License

private SolrContentStore getSolrContentStore(CoreContainer coreContainer) throws JobExecutionException {
    // TODO: Could specify the rootStr from a properties file.
    return new SolrContentStore(locateContentHome(coreContainer.getSolrHome()));
}

From source file:org.vootoo.server.servlet.VootooSolrDispatchFilter.java

License:Apache License

protected void initNettyServer(CoreContainer cores) {
    String solrHome = cores.getSolrHome();
    //load netty properties
    Properties nettyP = new Properties();
    File nettyProp = new File(solrHome, NETTY_PROPERTIES);
    if (nettyProp != null && nettyProp.isFile() && nettyProp.canRead()) {
        try {//from   www  . j av  a 2 s .com
            nettyP.load(new FileInputStream(nettyProp));
        } catch (IOException e) {
            logger.warn("loading from=" + nettyProp.getAbsolutePath() + " is fail, ignore netty properties", e);
        }
    }

    // start netty
    //TODO set many netty properties
    nettyServer = new SolrNettyServer(getCores(), Integer.parseInt(nettyP.getProperty("port", "8001")));
    try {
        nettyServer.startServer(false);
    } catch (Exception e) {
        e.printStackTrace();
        nettyServer = null;
    }
}

From source file:org.xwiki.search.solr.internal.EmbeddedSolrInstanceInitializationTest.java

License:Open Source License

/**
 * TODO DOCUMENT ME!/* w w  w  .java2  s  .  c  o m*/
 * 
 * @param expected
 * @throws ComponentLookupException
 * @throws Exception
 */
private void getInstanceAndAssertHomeDirectory(String expected) throws ComponentLookupException, Exception {
    SolrInstance instance = mocker.getInstance(SolrInstance.class, "embedded");
    Assert.assertNotNull(instance);

    EmbeddedSolrInstance implementation = ((EmbeddedSolrInstance) instance);
    CoreContainer container = implementation.getContainer();

    if (expected == null) {
        expected = implementation.getDefaultHomeDirectory();
    }

    Assert.assertEquals(expected + File.separator, container.getSolrHome());
    Assert.assertEquals(1, container.getCores().size());
    SolrCore core = container.getCores().iterator().next();
    File coreBaseDirectory = new File(container.getSolrHome(), core.getName());
    File configDirectory = new File(coreBaseDirectory, DefaultSolrConfiguration.CONF_DIRECTORY);
    Assert.assertTrue(new File(configDirectory, core.getSchemaResource()).exists());
    Assert.assertTrue(new File(configDirectory, core.getConfigResource()).exists());
}