IntelliJ IDEA java開發 WebService


  測試的功能是通過訪問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客戶端

    服務端輸出結果:

    

 

 

  參考:https://www.cnblogs.com/sekai/articles/5952735.html

  相關鏈接:利用IDEA創建Web Service服務端和客戶端


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM