diff --git a/pom.xml b/pom.xml index 06da0203cf1..aecb13deb59 100644 --- a/pom.xml +++ b/pom.xml @@ -196,14 +196,14 @@ org.apache.solr solr-solrj - 4.6.0 + 6.4.2 - - + org.apache.commons commons-math diff --git a/src/main/java/edu/harvard/iq/dataverse/AutoCompleteBean.java b/src/main/java/edu/harvard/iq/dataverse/AutoCompleteBean.java index 3f3d9e2a84e..4853e8ac2a4 100644 --- a/src/main/java/edu/harvard/iq/dataverse/AutoCompleteBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/AutoCompleteBean.java @@ -1,15 +1,18 @@ package edu.harvard.iq.dataverse; import edu.harvard.iq.dataverse.util.SystemConfig; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import javax.ejb.EJB; import javax.inject.Named; +import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrServer; +//import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.HttpSolrServer; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +//import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.TermsResponse; import org.apache.solr.client.solrj.response.TermsResponse.Term; @@ -25,11 +28,12 @@ public class AutoCompleteBean implements java.io.Serializable { @EJB SystemConfig systemConfig; - private static SolrServer solrServer; + private static SolrClient solrServer; - public SolrServer getSolrServer(){ + public SolrClient getSolrServer(){ if(solrServer == null){ - solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr"); + String urlString = "http://" + systemConfig.getSolrHostColonPort() + "/solr"; + solrServer = new HttpSolrClient.Builder(urlString).build(); } return solrServer; } @@ -59,6 +63,8 @@ public List complete(String query) { // items = resp.getTerms(solrFieldDatasetFieldDescription); } catch (SolrServerException e) { items = null; + } catch (IOException e) { + logger.warning("Solr query error: " + e); } if (items != null) { diff --git a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java index 7938a234b40..9b975e27d67 100644 --- a/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/harvest/server/OAISetServiceBean.java @@ -31,11 +31,14 @@ import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrServer; +//import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.HttpSolrServer; -import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.impl.HttpSolrClient.RemoteSolrException; +//import org.apache.solr.client.solrj.impl.HttpSolrServer; +//import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; @@ -115,12 +118,13 @@ public OAISet findById(Long id) { return em.find(OAISet.class,id); } - private SolrServer solrServer = null; + private SolrClient solrServer = null; - private SolrServer getSolrServer () { + private SolrClient getSolrServer () { if (solrServer == null) { } - solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr"); + String urlString = "http://" + systemConfig.getSolrHostColonPort() + "/solr"; + solrServer = new HttpSolrClient.Builder(urlString).build(); return solrServer; @@ -266,6 +270,8 @@ public List expandSetQuery(String query) throws OaiSetException { } catch (SolrServerException ex) { logger.fine("Internal Dataverse Search Engine Error"); throw new OaiSetException("Internal Dataverse Search Engine Error"); + } catch (IOException e) { + logger.warning("Solr query error: " + e); } SolrDocumentList docs = queryResponse.getResults(); diff --git a/src/main/java/edu/harvard/iq/dataverse/search/BatchIndex.java b/src/main/java/edu/harvard/iq/dataverse/search/BatchIndex.java index f29bd6ba52b..783a9fb9f2a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/BatchIndex.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/BatchIndex.java @@ -9,7 +9,8 @@ import java.util.ArrayList; import java.util.Collection; import java.util.logging.Logger; -import org.apache.solr.client.solrj.SolrServer; +import org.apache.solr.client.solrj.SolrClient; +//import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.common.SolrInputDocument; @@ -21,10 +22,10 @@ public class BatchIndex { private static final Logger logger = Logger.getLogger(BatchIndex.class.getCanonicalName()); private Collection docs; long batchsize; - private SolrServer server; + private SolrClient server; - public BatchIndex(long size, SolrServer serv){ + public BatchIndex(long size, SolrClient serv){ batchsize = size; docs = new ArrayList<>(); server = serv; @@ -75,7 +76,7 @@ public void setDocs(Collection docs) { /** * @return the server */ - public SolrServer getServer() { + public SolrClient getServer() { return server; } diff --git a/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java index 39b21befd6f..bfa31224761 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/IndexServiceBean.java @@ -51,10 +51,12 @@ import static javax.ejb.TransactionAttributeType.REQUIRES_NEW; import javax.inject.Named; import org.apache.commons.lang.StringUtils; +import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; -import org.apache.solr.client.solrj.SolrServer; +//import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.HttpSolrServer; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +//import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.common.SolrDocument; @@ -108,18 +110,24 @@ public class IndexServiceBean { public static final String HARVESTED = "Harvested"; private String rootDataverseName; private Dataverse rootDataverseCached; - private SolrServer solrServer; + private SolrClient solrServer; @PostConstruct public void init(){ - solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr"); + String urlString = "http://" + systemConfig.getSolrHostColonPort() + "/solr"; + solrServer = new HttpSolrClient.Builder(urlString).build(); + rootDataverseName = findRootDataverseCached().getName(); } @PreDestroy public void close(){ if(solrServer != null){ - solrServer.shutdown(); + try { + solrServer.close(); + } catch (IOException e) { + logger.warning("Solr closing error: " + e); + } solrServer = null; } } @@ -1387,6 +1395,8 @@ private List findDvObjectInSolrOnly(String type) throws SearchException { queryResponse = solrServer.query(solrQuery); } catch (SolrServerException ex) { throw new SearchException("Error searching Solr for " + type, ex); + } catch (IOException e) { + logger.warning("Solr query error: " + e); } SolrDocumentList results = queryResponse.getResults(); for (SolrDocument solrDocument : results) { @@ -1421,6 +1431,8 @@ private List findFilesOfParentDataset(long parentDatasetId) throws Searc queryResponse = solrServer.query(solrQuery); } catch (SolrServerException ex) { throw new SearchException("Error searching Solr for dataset parent id " + parentDatasetId, ex); + } catch (IOException e) { + logger.warning("Solr query error: " + e); } SolrDocumentList results = queryResponse.getResults(); for (SolrDocument solrDocument : results) { diff --git a/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java index 660b5cc80e7..8155cc27250 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/SearchServiceBean.java @@ -20,6 +20,7 @@ import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import edu.harvard.iq.dataverse.util.JsfHelper; import edu.harvard.iq.dataverse.util.SystemConfig; +import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; @@ -42,12 +43,15 @@ import javax.ejb.TransactionRolledbackLocalException; import javax.inject.Named; import javax.persistence.NoResultException; +import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrQuery.SortClause; -import org.apache.solr.client.solrj.SolrServer; +//import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.HttpSolrServer; -import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.impl.HttpSolrClient.RemoteSolrException; +//import org.apache.solr.client.solrj.impl.HttpSolrServer; +//import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException; import org.apache.solr.client.solrj.response.FacetField; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.RangeFacet; @@ -80,17 +84,22 @@ public class SearchServiceBean { SystemConfig systemConfig; public static final JsfHelper JH = new JsfHelper(); - private SolrServer solrServer; + private SolrClient solrServer; @PostConstruct public void init(){ - solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr"); + String urlString = "http://" + systemConfig.getSolrHostColonPort() + "/solr"; + solrServer = new HttpSolrClient.Builder(urlString).build(); } @PreDestroy public void close(){ if(solrServer != null){ - solrServer.shutdown(); + try { + solrServer.close(); + } catch (IOException e) { + logger.warning("Solr closing error: " + e); + } solrServer = null; } } @@ -301,7 +310,7 @@ public SolrQueryResponse search(DataverseRequest dataverseRequest, Dataverse dat // ----------------------------------- // Make the solr query // ----------------------------------- - QueryResponse queryResponse; + QueryResponse queryResponse = null; try { queryResponse = solrServer.query(solrQuery); } catch (RemoteSolrException ex) { @@ -333,6 +342,8 @@ public SolrQueryResponse search(DataverseRequest dataverseRequest, Dataverse dat return exceptionSolrQueryResponse; } catch (SolrServerException ex) { throw new SearchException("Internal Dataverse Search Engine Error", ex); + } catch (IOException e) { + logger.warning("Solr query error: " + e); } SolrDocumentList docs = queryResponse.getResults(); diff --git a/src/main/java/edu/harvard/iq/dataverse/search/SolrIndexServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/search/SolrIndexServiceBean.java index 1c5085ba63c..9b3157da098 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/SolrIndexServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/SolrIndexServiceBean.java @@ -28,9 +28,11 @@ import javax.inject.Named; import javax.json.Json; import javax.json.JsonObjectBuilder; -import org.apache.solr.client.solrj.SolrServer; +import org.apache.solr.client.solrj.SolrClient; +//import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.SolrServerException; -import org.apache.solr.client.solrj.impl.HttpSolrServer; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +//import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.common.SolrInputDocument; @@ -57,17 +59,24 @@ public class SolrIndexServiceBean { public static String numRowsClearedByClearAllIndexTimes = "numRowsClearedByClearAllIndexTimes"; public static String messageString = "message"; - private SolrServer solrServer; + private SolrClient solrServer; @PostConstruct public void init(){ - solrServer = new HttpSolrServer("http://" + systemConfig.getSolrHostColonPort() + "/solr"); + String urlString = "http://" + systemConfig.getSolrHostColonPort() + "/solr"; + solrServer = new HttpSolrClient.Builder(urlString).build(); + } @PreDestroy public void close(){ if(solrServer != null){ - solrServer.shutdown(); + try { + solrServer.close(); + } catch (IOException e) { + logger.warning("Solr closing error: " + e); + } + solrServer = null; } }