測試的功能是通過訪問solr服務器,獲取相關信息,然后以webservice的形式供客戶端訪問來獲取數據。通過查詢資料,現在把過程記錄如下:
1、環境
IntelliJ IDEA 2017.2.6
JAVA 1.8
Tomcat 9.0.0.M26
2、新建web服務項目
在src下面建立web_test包,在下面建立類SolrData
修改配置:
增加SolrData類的配置
完善SolrData類里面的代碼:
import java.io.IOException; import java.util.List; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.Cluster; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.ClusteringResponse; import org.apache.solr.common.SolrDocumentList; /** * @Author:sks * @Description: * @Date:Created in 14:37 2018/2/1 * @Modified by: **/ public class SolrData { public String getData(String id){ System.out.println("hello:"+id); // getTxtFromTextFile(id); String urlString = "http://localhost:8983/solr/test"; SolrClient solr = new HttpSolrClient.Builder(urlString).build(); System.out.println("solr"); //使用這個對象做查詢 SolrQuery params = new SolrQuery(); //查詢所有數據 params.set("qt", "/clustering"); params.setQuery("*:*"); params.setStart(0); params.setRows((int)getDocTotalCount(solr)); try { QueryResponse queryResponse = solr.query(params); ClusteringResponse clr = queryResponse.getClusteringResponse(); List<Cluster> list = clr.getClusters(); //拿到聚類數據集合,返回查詢結果 String txt = ""; for (Cluster c : list) { //類別標簽 List<String> lblist = c.getLabels(); for (String lb : lblist) { System.out.println(lb); } //聚類文檔ID List<String> doclist = c.getDocs(); for (String doc : doclist) { System.out.println(" " + doc); } } } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "getdata"; } /** * @Author:sks * @Description:獲取文檔總數 * @Date: */ private long getDocTotalCount(SolrClient solr ) { long num = 0; try { SolrQuery params = new SolrQuery(); params.set("q", "*:*"); //params.setQuery("*:*"); QueryResponse rsp = solr.query(params); SolrDocumentList docs = rsp.getResults(); num = docs.getNumFound(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return num; } }
引入jar,提取准備好所有的jar包,放在項目的lib文件夾下
同時對libraries也引用上面的jar包
配置tomcat
配置Artifacts
運行服務
在瀏覽器輸入:http://localhost:8080/services
生成wsdl,需要注意的是,在生成wsdl之前,一定要先配置好tomcat先運行以下,保證瀏覽器上能訪問在生成wsdl
3、web服務客戶端
刪除example包,直接在client包下面建client_test代碼如下:
package client; import client.SolrDataServiceLocator; import client.SolrData_PortType; import javax.xml.rpc.ServiceException; import java.rmi.RemoteException; /** * @Author:sks * @Description: * @Date:Created in 14:58 2018/2/1 * @Modified by: **/ public class client_test { public static void main(String[] argv){ try { SolrDataServiceLocator sdl = new SolrDataServiceLocator(); SolrData_PortType service = sdl.getSolrData(); String result = service.getData("1234"); System.out.println(result); }catch (ServiceException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
4、測試
啟動solr_web服務
啟動solr_web_clent客戶端
服務端輸出結果: