From c1c20bf35631b4a195134b38941b9a9aabff9cf6 Mon Sep 17 00:00:00 2001 From: Gethin James Date: Wed, 8 Jun 2016 12:20:21 +0200 Subject: [PATCH] SEARCH-56: Switching to use external properties for solr.host,port,baseurl --- .../alfresco/solr/SolrInformationServer.java | 53 +++---------------- .../solr/instance/conf/shared.properties | 4 ++ 2 files changed, 10 insertions(+), 47 deletions(-) diff --git a/search-services/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java b/search-services/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java index ac95ac54e..f5fe2a27b 100644 --- a/search-services/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java +++ b/search-services/alfresco-solr/src/main/java/org/alfresco/solr/SolrInformationServer.java @@ -128,6 +128,7 @@ import org.alfresco.solr.client.SOLRAPIClient; import org.alfresco.solr.client.SOLRAPIClient.GetTextContentResponse; import org.alfresco.solr.client.StringPropertyValue; import org.alfresco.solr.client.Transaction; +import org.alfresco.solr.config.ConfigUtil; import org.alfresco.solr.content.SolrContentStore; import org.alfresco.solr.content.SolrContentUrlBuilder; import org.alfresco.solr.tracker.IndexHealthReport; @@ -309,21 +310,12 @@ public class SolrInformationServer implements InformationServer contentStreamLimit = Integer.parseInt(p.getProperty("alfresco.contentStreamLimit", "10000000")); // build base URL - host and port have to come from configuration. - Properties props = AlfrescoSolrDataModel.getCommonConfig(); - - port = Integer.parseInt(props.getProperty("solr.port", getHttpPort("8080"))); - String defaultHost; - try - { - defaultHost = InetAddress.getLocalHost().getHostName(); - } - catch (UnknownHostException e) - { - defaultHost = "localhost"; - } - hostName = props.getProperty("solr.host", defaultHost); - baseUrl = props.getProperty("solr.baseUrl", "/solr4"); + + hostName = ConfigUtil.locateProperty("solr.host", props.getProperty("solr.host")); + String portNumber = ConfigUtil.locateProperty("solr.port", props.getProperty("solr.port")); + port = Integer.parseInt(portNumber); + baseUrl = ConfigUtil.locateProperty("solr.baseurl", props.getProperty("solr.baseurl")); baseUrl = (baseUrl.startsWith("/") ? "" : "/") + baseUrl + "/" + core.getName() + "/"; } @@ -3858,39 +3850,6 @@ public class SolrInformationServer implements InformationServer return hostName; } - private String getHttpPort(String defaultPort) - { - try - { - MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0); - QueryExp query = Query.and(Query.eq(Query.attr("scheme"), Query.value("http")), Query.eq(Query.attr("protocol"), Query.value("HTTP/1.1"))); - Set objectNames = mBeanServer.queryNames(null, query); - - if (objectNames != null && objectNames.size() > 0) { - for (ObjectName objectName : objectNames) { - String name = objectName.toString(); - if (name.indexOf("port=") > -1) { - String[] parts = name.split("port="); - String port = parts[1]; - try { - Integer.parseInt(port); - return port; - } catch (NumberFormatException e) { - log.error("Error parsing http port:" + port); - return defaultPort; - } - } - } - } - } - catch(Throwable t) - { - log.error("Error getting https port:", t); - } - - return defaultPort; - } - public void setCleanContentTxnFloor(long cleanContentTxnFloor) { this.cleanContentTxnFloor = cleanContentTxnFloor; diff --git a/search-services/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties b/search-services/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties index 8258d66da..44539d0d6 100644 --- a/search-services/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties +++ b/search-services/alfresco-solr/src/main/resources/solr/instance/conf/shared.properties @@ -1,5 +1,9 @@ # Shared Properties file +#Host details an external client would use to connect to Solr +solr.host=localhost +solr.port=8983 +solr.baseurl=/solr # Properties treated as identifiers when indexed