1、在IntelliJ中创建新项目,选择Java Enterprise -> RESTful Web Service -> Download
2、创建完项目JerseyDemo后,对项目点击右键 -> Add Frameworks Support,分别勾选Web Application和Maven。其中,web appication为项目增加了web.xml,maven为构建工具。
完成之后项目的文件结构如下:
3、 在maven中加入jersey依赖
1.8
1.8
org.glassfish.jersey.containers
jersey-container-servlet
2.9
org.glassfish.jersey.core
jersey-client
2.9
org.glassfish.jersey.media
jersey-media-json-jackson
2.9
View Code
此时,整个pom.xml文档如下。另外使用maven默认的库下载源文件很慢,可以使用国内镜像,方法可见maven国内镜像(maven下载慢的解决方法)。
4. 创建源文件
在src/java目录下新建包,如com.test.jersey,在包下新建类HelloWorld.java,写上代码:
packagecom.test.jersey;importjavax.ws.rs.GET;importjavax.ws.rs.Path;importjavax.ws.rs.Produces;
@Path("/hello")public classHelloWorld {//GET注解设置接受请求类型为GET
@GET//Produces表明发送出去的数据类型为text/plain//与Produces对应的是@Consumes,表示接受的数据类型为text/plain
@Produces("text/plain")publicString getMessage() {return "Hello world!";
}
}
View Code
5. 配置servlet
编辑web/WEB-INF/web.xml,加入代码:
restful_service_test
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
com.test.jersey
1
restful_service_test
/api/*
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服务
packagecom.solr.service;importorg.apache.solr.client.solrj.SolrClient;importorg.apache.solr.client.solrj.SolrQuery;importorg.apache.solr.client.solrj.SolrServerException;importorg.apache.solr.client.solrj.impl.HttpSolrClient;importorg.apache.solr.client.solrj.response.Cluster;importorg.apache.solr.client.solrj.response.QueryResponse;importorg.apache.solr.client.solrj.response.ClusteringResponse;importorg.apache.solr.common.SolrDocumentList;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;/*** @Author:sks
* @Description:
* @Date:Created in 9:56 2018/2/26
* @Modified by:
**/
public classSolrService {privateSolrClient 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 voidInit(){
String urlString= "http://localhost:8983/solr/test";
solr= newHttpSolrClient.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 longgetDocTotalCount() {long num = 0;try{
SolrQuery params= newSolrQuery();
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();
}returnnum;
}/*** @Author:sks
* @Description:获取聚类数据
* @Date:*/
publicString getAutoClusterInfo() {//使用这个对象做查询
SolrQuery params = newSolrQuery();//查询所有数据
params.set("qt", "/clustering");
params.setQuery("*:*");
params.setStart(0);
params.setRows((int)getDocTotalCount());//params.setRows(30);
List 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 lst = new ArrayList();for(Cluster c :list){//类别标签
List lblist =c.getLabels();for(String lb:lblist){
System.out.println(lb);
}//聚类文档ID
List 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
publicString getSolrData() {
SolrService ss= newSolrService();
ss.Init();
String s=ss.getAutoClusterInfo();returns;
}
运行tomcat,在浏览器输入:http://localhost:8080/api/hello/getSolrData
原因找了半天是因为web.xml里面
改为 com.solr.service
重新运行tomcat 在浏览器输入:http://localhost:8080/api/hello/getSolrData 还是报错
原因是Artifacts新加入的jar包没有包含在输出中,依次双击各个文件即可加入到输出中。
终于成功了