package de.fhopf.lucenesolrtalk.web; import com.yammer.dropwizard.Service; import com.yammer.dropwizard.bundles.AssetsBundle; import com.yammer.dropwizard.config.Environment; import com.yammer.dropwizard.views.ViewBundle; import de.fhopf.lucenesolrtalk.web.elasticsearch.ElasticsearchHealthCheck; import de.fhopf.lucenesolrtalk.web.elasticsearch.ElasticsearchResource; import de.fhopf.lucenesolrtalk.web.elasticsearch.ElasticsearchSearcher; import de.fhopf.lucenesolrtalk.web.lucene.LuceneHealthCheck; import de.fhopf.lucenesolrtalk.web.lucene.LuceneSearchResource; import de.fhopf.lucenesolrtalk.web.solr.SolrHealthCheck; import de.fhopf.lucenesolrtalk.web.solr.SolrSearchResource; import de.fhopf.lucenesolrtalk.web.solr.SolrSearcher; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.elasticsearch.client.Client; import org.elasticsearch.node.NodeBuilder; public class SearchService extends Service<SearchConfiguration> { public SearchService() { super("search"); addBundle(new ViewBundle()); addBundle(new AssetsBundle()); } @Override protected void initialize(SearchConfiguration searchConfiguration, Environment environment) throws Exception { environment.addResource(new LuceneSearchResource(searchConfiguration.indexDir)); SolrServer server = new HttpSolrServer(searchConfiguration.solrUrl); environment.addResource(new SolrSearchResource(new SolrSearcher(server))); Client esClient = NodeBuilder.nodeBuilder().client(true).node().client(); environment.addResource(new ElasticsearchResource(new ElasticsearchSearcher(esClient))); environment.addHealthCheck(new ElasticsearchHealthCheck(esClient)); environment.addHealthCheck(new LuceneHealthCheck(searchConfiguration.indexDir)); environment.addHealthCheck(new SolrHealthCheck(server)); } public static void main(String [] args) throws Exception { new SearchService().run(args); } }