官网:IT虾米网

  1、在IntelliJ中创建新项目,选择Java Enterprise -> RESTful Web Service -> Download

  

  

  2、创建完项目JerseyDemo后,对项目点击右键 -> Add Frameworks Support,分别勾选Web Application和Maven。其中,web appication为项目增加了web.xml,maven为构建工具。

  

  

  

  完成之后项目的文件结构如下:

  

  

  3、 在maven中加入jersey依赖

<properties> 
        <maven.compiler.source>1.8</maven.compiler.source> 
        <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
    <dependencies> 
        <dependency> 
            <groupId>org.glassfish.jersey.containers</groupId> 
            <artifactId>jersey-container-servlet</artifactId> 
            <version>2.9</version> 
        </dependency> 
        <dependency> 
            <groupId>org.glassfish.jersey.core</groupId> 
            <artifactId>jersey-client</artifactId> 
            <version>2.9</version> 
        </dependency> 
        <dependency> 
            <groupId>org.glassfish.jersey.media</groupId> 
            <artifactId>jersey-media-json-jackson</artifactId> 
            <version>2.9</version> 
        </dependency> 
    </dependencies>
View Code

  此时,整个pom.xml文档如下。另外使用maven默认的库下载源文件很慢,可以使用国内镜像,方法可见maven国内镜像(maven下载慢的解决方法)

  4. 创建源文件

  在src/java目录下新建包,如com.test.jersey,在包下新建类HelloWorld.java,写上代码:

package com.test.jersey; 
 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
 
@Path("/hello") 
public class HelloWorld { 
    //GET注解设置接受请求类型为GET 
    @GET 
    //Produces表明发送出去的数据类型为text/plain 
    // 与Produces对应的是@Consumes,表示接受的数据类型为text/plain 
    @Produces("text/plain") 
    public String getMessage() { 
        return "Hello world!"; 
    } 
}
View Code

  

  5. 配置servlet

  编辑web/WEB-INF/web.xml,加入代码:

<servlet> 
        <servlet-name>restful_service_test</servlet-name> 
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
 
        <init-param> 
            <param-name>jersey.config.server.provider.packages</param-name> 
            <param-value>com.test.jersey</param-value> 
        </init-param> 
        <load-on-startup>1</load-on-startup> 
    </servlet> 
 
    <servlet-mapping> 
        <servlet-name>restful_service_test</servlet-name> 
        <url-pattern>/api/*</url-pattern> 
    </servlet-mapping>

  

  6、 配置Tomcat

  点击Run >Edit Configurations… > “+” > Tomcat Server > Local,加入Tomcat,选择Deployment tab, 点击 “+”, 选择唯一的Artifact,点击"OK"即可。

  

  

  

  7、在输出中加入库文件

  选择Project Structure,点击Artifacts,可以右侧Available Elements下面有很多库文件没有包含在输出中。依次双击各个文件即可。

  

  

  8. 运行Tomcat

  运行Tomcat,在浏览器中输入http://localhost:8080/api/hello,即可看到以下输出:

  

   9、增加SolrService类,访问solr服务

  

package com.solr.service; 
 
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; 
 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 
/** 
 * @Author:sks 
 * @Description: 
 * @Date:Created in 9:56 2018/2/26 
 * @Modified by: 
 **/ 
public class SolrService { 
 
    private  SolrClient solr; 
 
 
//    public SolrService(){ 
//        String urlString = "http://localhost:8983/solr/test"; 
////        HttpSolrServer hs=new HttpSolrServer("http://localhost:8888/solr"); 
// 
//        solr = new HttpSolrClient.Builder(urlString).build(); 
//    } 
    /** 
     * @Author:sks 
     * @Description:初始化solr客户端 
     * @Date: 
     */ 
    public  void Init(){ 
 
        String urlString = "http://localhost:8983/solr/test"; 
        solr = new HttpSolrClient.Builder(urlString).build(); 
    } 
//    public static void main(String[] args) throws SolrServerException,IOException { 
// 
////        String urlString = "http://localhost:8983/solr/mycore"; 
//        String urlString = "http://localhost:8983/solr/test"; 
//        String path = "D:/work/Solr/ImportData"; 
// 
//        Init(urlString); 
//        getAutoClusterInfo(); 
//        System.exit(0); 
//    } 
 
    /** 
     * @Author:sks 
     * @Description:获取文档总数 
     * @Date: 
     */ 
    private  long getDocTotalCount()  { 
        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; 
    } 
    /** 
     * @Author:sks 
     * @Description:获取聚类数据 
     * @Date: 
     */ 
    public   String  getAutoClusterInfo() { 
        //使用这个对象做查询 
        SolrQuery params = new SolrQuery(); 
        //查询所有数据 
        params.set("qt", "/clustering"); 
        params.setQuery("*:*"); 
        params.setStart(0); 
        params.setRows((int)getDocTotalCount()); 
//        params.setRows(30); 
        List<Cluster> list = null; 
        try { 
            QueryResponse queryResponse = solr.query(params); 
            ClusteringResponse clr = queryResponse.getClusteringResponse(); 
            list = clr.getClusters(); 
            //拿到聚类数据集合,返回查询结果 
 
        } catch (SolrServerException e) { 
            e.printStackTrace(); 
        } 
        catch (IOException e) { 
            e.printStackTrace(); 
        } 
        String  txt = ""; 
        List<String> lst = new ArrayList<String>(); 
        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){ 
                lst.add(doc); 
                System.out.println("        " + doc); 
            } 
        } 
 
        return "abc"; 
    } 
}
View Code

  在增加getSolrData方法

 @GET 
    @Produces("text/plain") 
    @Path("/getSolrData") 
    //api/solrData/getSolrData 
    public String getSolrData() { 
        SolrService ss = new SolrService(); 
        ss.Init(); 
        String s = ss.getAutoClusterInfo(); 
        return s; 
    }

  运行tomcat,在浏览器输入:http://localhost:8080/api/hello/getSolrData

   

  原因找了半天是因为web.xml里面

  

  改为 com.solr.service

  

  重新运行tomcat 在浏览器输入:http://localhost:8080/api/hello/getSolrData 还是报错

  

  

  原因是Artifacts新加入的jar包没有包含在输出中,依次双击各个文件即可加入到输出中。

  

  终于成功了

  

  


发布评论
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

IntelliJ IDEA java开发 WebService知识解答
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。