1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.search.solr.business;
35
36 import fr.paris.lutece.portal.service.util.AppLogService;
37 import fr.paris.lutece.portal.service.util.AppPropertiesService;
38 import org.apache.solr.client.solrj.SolrClient;
39 import org.apache.solr.client.solrj.impl.Http2SolrClient;
40
41
42
43
44
45 public final class SolrServerService
46 {
47 private static final String PROPERTY_SOLR_SERVER_URL = "solr.server.address";
48 private static final String PROPERTY_SOLR_TIMEOUT = "solr.server.timeout";
49 private static final String PROPERTY_SOLR_IDLE_TIMEOUT = "solr.idle.timeout";
50 private static final String PROPERTY_SOLR_USE_HTTP1_1 = "solr.use.http1_1";
51 private static final String PROPERTY_SOLR_HTTP_BASIC_AUTH_USER = "solr.httpBasicAuthUser";
52 private static final String PROPERTY_SOLR_HTTP_BASIC_AUTH_PASSWORD = "solr.httpBasicAuthPassword";
53
54 private static final String SOLR_SERVER_URL = AppPropertiesService.getProperty( PROPERTY_SOLR_SERVER_URL );
55 private static final int SOLR_CONNECTION_TIMEOUT = AppPropertiesService.getPropertyInt( PROPERTY_SOLR_TIMEOUT, 60000 );
56 private static final int SOLR_IDLE_TIMEOUT = AppPropertiesService.getPropertyInt( PROPERTY_SOLR_IDLE_TIMEOUT, 600000 );
57
58 private static final boolean SOLR_USE_HTTP1_1 = AppPropertiesService.getPropertyBoolean( PROPERTY_SOLR_USE_HTTP1_1, Boolean.FALSE );
59 private static final String SOLR_HTTP_BASIC_AUTH_USER = AppPropertiesService.getProperty( PROPERTY_SOLR_HTTP_BASIC_AUTH_USER );
60 private static final String SOLR_HTTP_BASIC_AUTH_PASSWORD = AppPropertiesService.getProperty( PROPERTY_SOLR_HTTP_BASIC_AUTH_PASSWORD );
61 private static SolrServerService _instance;
62 private SolrClient _solrServer;
63
64
65
66
67 private SolrServerService( )
68 {
69 _solrServer = createSolrServer( SOLR_SERVER_URL );
70 }
71
72
73
74
75
76
77 public static SolrServerService getInstance( )
78 {
79 if ( _instance == null )
80 {
81 _instance = new SolrServerService( );
82 }
83
84 return _instance;
85 }
86
87
88
89
90
91
92 public SolrClient getSolrServer( )
93 {
94 if ( _solrServer == null )
95 {
96 _solrServer = createSolrServer( SOLR_SERVER_URL );
97 }
98
99 return _solrServer;
100 }
101
102
103
104
105
106
107
108
109 private SolrClient createSolrServer( String strServerUrl )
110 {
111 AppLogService.info("Connection Solr configured on " + strServerUrl + " using http/" + (SOLR_USE_HTTP1_1 ? "1.1" : "2"));
112 return new Http2SolrClient.Builder(strServerUrl)
113 .connectionTimeout(SOLR_CONNECTION_TIMEOUT)
114 .idleTimeout(SOLR_IDLE_TIMEOUT)
115 .withBasicAuthCredentials(SOLR_HTTP_BASIC_AUTH_USER, SOLR_HTTP_BASIC_AUTH_PASSWORD)
116 .useHttp1_1(SOLR_USE_HTTP1_1).build();
117 }
118 }