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;
}
}