增加定时更新数据功能

parent b0ae18a5
......@@ -4,7 +4,7 @@
<groupId>com.cc</groupId>
<artifactId>xzxt_solr</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<version>1.ty-SNAPSHOT</version>
<name>xzxt_solr Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 公司的maven仓库 -->
......@@ -71,6 +71,12 @@
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring整合Quartz -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
......@@ -176,6 +182,40 @@
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<!-- 添加CXF 依赖 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-core</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.1.8</version>
</dependency>
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>stax2-api</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.codehaus.woodstox</groupId>
<artifactId>woodstox-core-asl</artifactId>
<version>4.2.1</version>
</dependency>
<!-- 添加CXF 依赖 -->
<!--Spring整合Quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>
<build>
<finalName>xzxt_solr</finalName>
......
package com.cc.JobTask;
import com.cc.utils.HttpClientUtil;
import com.cc.utils.Xmldom4j;
import org.springframework.scheduling.annotation.Async;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import static com.cc.utils.propertiesUtil.propertiesUtil;
/**
* Created by changc on 2018/10/19.
*/
public class SolrUpdateJobTask {
@Async("testScheduler")
public void solrupdate() throws Exception {
//System.out.println("It's time to run :" + new Date().toString());
//查询参数
Map<String, String> param = new HashMap<>();
Properties properties=propertiesUtil("allsolr.properties");
String solrs=properties.getProperty("solrhome");
Properties properties1=propertiesUtil("solr.properties");
String solrurl=properties1.getProperty("solrZyUrl");
String [] solrhomes=solrs.split(",");
for(int i=0;i<solrhomes.length;i++){
//调用redisrest的服务
String url=solrurl+solrhomes[i];
System.out.println("更新实例地址============="+url+"/dataimport?command=delta-import&clean=false&commit=true");
String json = HttpClientUtil.doPost(url+"/dataimport?command=delta-import&clean=false&commit=true", param);
Xmldom4j.xmlStrCount(json);
//System.out.println("更新数据量===="+Xmldom4j.xmlStrCount(json));
}
}
}
......@@ -449,11 +449,12 @@ public class WordsTpye{
public static void main(String[] args) {
WordsTpye wordsTpye = new WordsTpye();
System.out.println(wordsTpye.isPsnname("王的"));
/*System.out.println(wordsTpye.isPsnname("王的"));
System.out.println(wordsTpye.isPsnid("43070219840910003f"));
System.out.println(wordsTpye.isMobile("13811111111"));
System.out.println(wordsTpye.isDatestr("19840910"));
System.out.println(wordsTpye.isCarid("Z1234511"));
System.out.println(wordsTpye.isCarid("Z1234511"));*/
System.out.println(wordsTpye.isPsnid("15263119730801303"));
}
......
package com.cc.utils;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class HttpClientUtil {
public static String doGet(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
String resultString = "";
CloseableHttpResponse response = null;
try {
// 创建uri
URIBuilder builder = new URIBuilder(url);
if (param != null) {
for (String key : param.keySet()) {
builder.addParameter(key, param.get(key));
}
}
URI uri = builder.build();
// 创建http GET请求
HttpGet httpGet = new HttpGet(uri);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).setConnectionRequestTimeout(1000)
.setSocketTimeout(5000).build();
httpGet.setConfig(requestConfig);
// 执行请求
response = httpclient.execute(httpGet);
// 判断返回状态是否为200
if (response.getStatusLine().getStatusCode() == 200) {
resultString = EntityUtils.toString(response.getEntity(), "UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return resultString;
}
public static String doGet(String url) {
return doGet(url, null);
}
public static String doPost(String url, Map<String, String> param) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).setConnectionRequestTimeout(1000)
.setSocketTimeout(5000).build();
httpPost.setConfig(requestConfig);
// 创建参数列表
if (param != null) {
List<NameValuePair> paramList = new ArrayList<>();
for (String key : param.keySet()) {
paramList.add(new BasicNameValuePair(key, param.get(key)));
}
// 模拟表单
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList);
httpPost.setEntity(entity);
}
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return resultString;
}
public static String doPost(String url) {
return doPost(url, null);
}
public static String doPostJson(String url, String json) {
// 创建Httpclient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
CloseableHttpResponse response = null;
String resultString = "";
try {
// 创建Http Post请求
HttpPost httpPost = new HttpPost(url);
// 创建请求内容
StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
httpPost.setEntity(entity);
// 执行http请求
response = httpClient.execute(httpPost);
resultString = EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
response.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return resultString;
}
public static String doRequest(CloseableHttpClient httpclient, HttpUriRequest httpUriRequest, BasicCookieStore cookieStore) throws IOException {
//返回相应
CloseableHttpResponse response = httpclient.execute(httpUriRequest);
//获取response返回的相应实体
HttpEntity entity = response.getEntity();
entity.getContent();
//转码
String res= EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
System.out.println("返回参数==="+res.toString());
return res;
}
}
package com.cc.utils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by changc on 2018/3/13.
*/
public class Xmldom4j {
/**
* 解析返回后的总数
* @param xmlStr xml格式的字符串
* @return Map对象
* @throws Exception 异常
*/
public static String xmlStrCount(String xmlStr) throws Exception {
if (xmlStr == null) {
return null;
}
String count="";
Document doc = DocumentHelper.parseText(xmlStr);
Element root = doc.getRootElement();
List<Element> childElements = root.elements();
for(int i=0;i<childElements.size();i++ ){
List<Element> elementList = childElements.get(i).elements();
for (Element ele : elementList) {
System.out.println("一级元素下的子元素" + ele.attribute("name").getValue() + ": " + ele.getText());
/* if(ele.attribute("name").getValue().equals("Total Changed Documents")){
count=ele.getText();
}*/
}
}
/*for (int i=0;i<childElements.size()-1;i++) {
//------一级元素下的子元素------------------------
//未知子元素名情况下
List<Element> elementList = childElements.get(i).elements();
for (Element ele : elementList) {
System.out.println("一级元素下的子元素" + ele.getName() + ": " + ele.getText());
if(ele.getName().equals("Total Changed Documents")){
count=ele.getText();
}
}
}*/
return count;
}
/**
* xml字符串转换成bean对象
*
* @param xmlStr xml字符串
* @param clazz 待转换的class
* @return 转换后的对象
*/
public static List<Object> xmlStrToBean(String xmlStr, Class<?> clazz) {
List<Object> obj = new ArrayList<>();
try {
// 将xml格式的数据转换成Map对象
List<Map<String,Object>> maplist = xmlStrToMap(xmlStr);
//将map对象的数据转换成Bean对象
obj = mapToBean(maplist, clazz);
} catch(Exception e) {
e.printStackTrace();
}
return obj;
}
/**
* 将xml格式的字符串转换成Map对象
*
* @param xmlStr xml格式的字符串
* @return Map对象
* @throws Exception 异常
*/
public static List<Map<String,Object>> xmlStrToMap(String xmlStr) throws Exception {
if (xmlStr == null) {
return null;
}
List< Map<String,Object>> maplist = new ArrayList<>();
//将xml格式的字符串转换成Document对象
Document doc = DocumentHelper.parseText(xmlStr);
Element root = doc.getRootElement();
List<Element> childElements = root.elements();
for (int i=0;i<childElements.size()-1;i++) {
//------一级元素下的子元素------------------------
//未知子元素名情况下
Map<String,Object> map=new HashMap<>();
//List<Element> elementList = child.elements("BEAN");
List<Element> elementList = childElements.get(i).elements();
for (Element ele : elementList) {
System.out.println("一级元素下的子元素" + ele.getName() + ": " + ele.getText());
if(ele.getName().equals("BJNR")){
if(ele.getText().equals("null")){
ele.setText("");
System.out.println("一级元素下的子元素替换" + ele.getName() + ": " + ele.getText());
}
}
if(ele.getName().equals("BJRXM")){
if(ele.getText().equals("null")){
ele.setText("");
System.out.println("一级元素下的子元素替换" + ele.getName() + ": " + ele.getText());
}
}
if(ele.getName().equals("LXDH")){
if(ele.getText().equals("null")){
ele.setText("");
System.out.println("一级元素下的子元素替换" + ele.getName() + ": " + ele.getText());
}
}
map.put(ele.getName(), ele.getTextTrim());
}
maplist.add(map);
}
return maplist;
}
/**
* 将Map对象通过反射机制转换成Bean对象
*
* @param maplist 存放数据的map对象
* @param clazz 待转换的class
* @return 转换后的Bean对象
* @throws Exception 异常
*/
public static List<Object> mapToBean(List<Map<String,Object>> maplist, Class clazz) throws Exception {
//Object obj = clazz.newInstance();
List<Object> listobject=new ArrayList<>();
if(maplist != null && maplist.size() > 0) {
for(Map<String, Object> map : maplist){//遍历list
Object obj = clazz.newInstance();
for(Map.Entry<String, Object> entry : map.entrySet()) {//遍历元素
//字段名
String propertyName = (entry.getKey()).toLowerCase();
//字段值
Object value = entry.getValue();
String setMethodName = "set"
+ propertyName.substring(0, 1).toUpperCase() //首字母大写
+ propertyName.substring(1);//从1开始截取
Field field = getClassField(clazz, propertyName);
Class fieldTypeClass = field.getType();//字段类型
value = convertValType(value, fieldTypeClass);
clazz.getMethod(setMethodName, field.getType()).invoke(obj, value);
}
listobject.add(obj);
}
}
return listobject;
}
/**
* 将Object类型的值,转换成bean对象属性里对应的类型值
*
* @param value Object对象值
* @param fieldTypeClass 属性的类型
* @return 转换后的值
*/
private static Object convertValType(Object value, Class fieldTypeClass) throws ParseException {
Object retVal = null;
if(Long.class.getName().equals(fieldTypeClass.getName())
|| long.class.getName().equals(fieldTypeClass.getName())) {
retVal = Long.parseLong(value.toString());
} else if(Integer.class.getName().equals(fieldTypeClass.getName())
|| int.class.getName().equals(fieldTypeClass.getName())) {
retVal = Integer.parseInt(value.toString());
} else if(Float.class.getName().equals(fieldTypeClass.getName())
|| float.class.getName().equals(fieldTypeClass.getName())) {
retVal = Float.parseFloat(value.toString());
} else if(Double.class.getName().equals(fieldTypeClass.getName())
|| double.class.getName().equals(fieldTypeClass.getName())) {
retVal = Double.parseDouble(value.toString());
} else {
retVal = value;
}
return retVal;
}
/**
* 获取指定字段名称查找在class中的对应的Field对象(包括查找父类)
*
* @param clazz 指定的class
* @param fieldName 字段名称
* @return Field对象
*/
private static Field getClassField(Class clazz, String fieldName) {
if( Object.class.getName().equals(clazz.getName())) {
return null;
}
Field []declaredFields = clazz.getDeclaredFields();
for (Field field : declaredFields) {
if (field.getName().equals(fieldName)) {
return field;
}
}
Class superClass = clazz.getSuperclass();
if(superClass != null) {// 简单的递归一下
return getClassField(superClass, fieldName);
}
return null;
}
}
package com.cc.webservice;
/**
* Created by changc on 2018/10/18.
*/
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.SolrDocument;
import javax.jws.WebParam;
import javax.jws.WebService;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @1.这里的@Webservice(targetNamespace="")的作用类似与spring的Controller层中的Controller("/helloworld"),用于定位
* 你请求的时那个接口,用于区分接口。
* @2.在客户端有指定用哪个接口中的哪个方法的具体设置代码:
* call.setOperationName(new QName("serviceTargetName", "sayHello"));
* 方法中的QName方法的入参说明:
* new QName(
* String namespaceURI-定位接口的命名空间:接口注解targetnamespace的值或者wsdl文件<wsdl:definitions中的xmlns:tns="com.serviceTargetName"来锁定targetnamespace的值,
* 这里如果不是用Axis2框架开发的webservice接口,最好不用wsdl文件<wsdl:definitions中的targetNamespace来确定值的原因在于这里的值来源与接口实现类上的targetNamespace注解的值。如果你接口的实现类中的targetNamespace和接口的不一样,岂不是搞错了。
* String localPart-接口下定位方法的方法名:就是这里的抽象方法sayHello方法名,或者wsdl文件<wsdl:binding标签下<wsdl:operation name="sayHello"中name的值。
* )
* @3.在要发布的服务接口类开头加上@WebService 在接口的实现类开头也加上@WebService 若两个类不在同一个包中
* 则还要在实现类上用targetNamespace指明目标命名空间。命名空间的值和接口上的值一样。
*
* @author Administrator
*
*
*/
@WebService(targetNamespace = "com.cc")
public interface SolrWebservice {
//如果接口没有用@WebParam(name = "parameterName")来指明方法入参的参数名称-
// 这里时'parameterName',则在客户端你传入参数时: //客户端设置入参:call.addParameter("parameterName", XMLType.XSD_STRING, ParameterMode.IN);
// 会报错:Unmarshalling Error: 意外的元素 (uri:"", local:"parameterName")。所需元素为<{}arg0>
public String sayHello(@WebParam(name = "parameterName") String name);
public String querysolr(@WebParam(name = "value") String value,@WebParam(name = "core") String core) throws IOException, SolrServerException;
}
\ No newline at end of file
package com.cc.webservice.imp;
/**
* Created by changc on 2018/10/18.
*/
import com.alibaba.fastjson.JSON;
import com.cc.webservice.SolrWebservice;
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.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.stereotype.Component;
import javax.jws.WebService;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import static com.cc.utils.propertiesUtil.propertiesUtil;
/**
* 由于实现类和接口不在同一个包中。所以要加上targetNamespace属性。
* 另外,这里的endpointInterface是实现类对应接口的全路径
* @author Administrator
*/
@WebService(targetNamespace="com.cc",endpointInterface= "com.cc.webservice.SolrWebservice")
@Component("HelloWord")//spring注入用
public class SolrWebserviceImpl implements SolrWebservice {
@Override public String sayHello(String name) {
return "你好,"+name+" 你已成功访问了webservice服务端!" ;
}
@Override
public String querysolr(String value,String core) throws IOException, SolrServerException {
Properties properties = propertiesUtil("solr.properties");
String serverUrl = properties.getProperty("solrZyUrl");
String solrUrl =serverUrl+core;
HttpSolrClient client = new HttpSolrClient(solrUrl);
//创建查询对象---------------------------------
SolrQuery query = new SolrQuery();
//q 查询字符串,如果查询所有*:*
//query.set("q", "*:*");
if (value.indexOf("X") > 0) {
value = value.substring(0, value.length() - 1);
}
String cxtj=value;
query.set("q", cxtj);
//fq 过滤条件,过滤是基于查询结果中的过滤
//query.set("fq", "id:0050");
//sort 排序,请注意,如果一个字段没有被索引,那么它是无法排序的
// query.set("sort", "product_price desc");
//start row 分页信息,与mysql的limit的两个参数一致效果
query.setStart(0);
query.setRows(100000000);
//fl 查询哪些结果出来,不写的话,就查询全部,所以我这里就不写了
// query.set("fl", "");
//df 默认搜索的域
//query.set("df", "product_keywords");
//======高亮设置===
//开启高亮
query.setHighlight(true);
//高亮域
query.addHighlightField("XM");
//前缀
query.setHighlightSimplePre("<span style='color:red'>");
//后缀
query.setHighlightSimplePost("</span>");
//* query.setHighlight(true); // 开启高亮组件或用query.setParam("hl", "true");
query.addHighlightField("AJMC");// 高亮字段
query.addHighlightField("SY_JYQK");// 高亮字段
query.addHighlightField("id");
query.addHighlightField("FLWS_BT");// 高亮字段
query.setHighlightSimplePre("<font color='red'>");//标记,高亮关键字前缀
query.setHighlightSimplePost("</font>");//后缀*//*
System.out.println(query);//用于调试程序
//执行搜索
QueryResponse queryResponse = client.query(query);
//搜索结果
SolrDocumentList results = queryResponse.getResults();
String res = JSON.toJSONString(results); // List转json
//String res= listToString(results);
//查询出来的数量---------------------------------------
long numFound = results.getNumFound();
System.out.println("总查询出:" + numFound + "条记录");
//获取高亮信息
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
/* for (SolrDocument solrDocument : results) {
Map<String, List<String>> map = highlighting.get(solrDocument.get("id"));
for (String key : map.keySet()) {
String value0 = map.get(key).toString();
String value1 = value0.replace("[", "");
String glvalue = value1.replace("]", "");
System.out.println(glvalue);
solrDocument.setField(key, glvalue);
}
System.out.println("商品id:" + solrDocument.get("AJMC"));
}*/
return res;
}
public static String listToString(SolrDocumentList list){
if(list==null){
return null;
}
StringBuilder result = new StringBuilder();
boolean first = true;
//第一个前面不拼接","
for(SolrDocument string :list) {
if(first) {
first=false;
}else{
result.append(",");
}
result.append(string);
}
return result.toString();
}
}
solrhome=tbstasj,TB_GL_DWBH_RY
#-------------------\u53C2\u8003\u914D\u7F6E--------------------------------
#solr\u5B9E\u4F8B\u670D\u52A1\u5730\u5740
solrZyUrl=http://10.100.17.119:9041/solr/core1
solrZyUrl=http://127.0.0.1:9090/solr/
#solr\u5B9E\u4F8B\u67E5\u8BE2\u6761\u4EF6\u53C2\u6570 #:\u4EE3\u8868\u4F20\u5165\u7684value\u503C or\u662F\u67E5\u8BE2\u7684\u5173\u7CFB(\u6CE8\u610For\u524D\u540E\u5FC5\u987B\u6709\u7A7A\u683C)
#1.solr\u7D22\u5F15\u5E93\u4E2D\u5EFA\u7ACBcopyField\u5B57\u6BB5\uFF0C\u6211\u4EEC\u76F4\u63A5\u91C7\u7528keywords
#2.\u4E0D\u6784\u5EFAcopyField\u5B57\u6BB5\uFF08\u9009\u62E9\u67E5\u8BE2\u591A\u4E2A\u5B57\u6BB5\uFF09 ----\u4E66\u5199\u683C\u5F0F\uFF1Aid:# or FLWS_BT:#
......
......@@ -3,7 +3,17 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<!--Spring扫描包,除了controller-->
<context:component-scan base-package="com.cc.service"></context:component-scan>
......@@ -41,6 +51,11 @@
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- spring自动扫包 -->
<context:component-scan base-package="com.cc.webservice" />
<!-- 要暴露给外部调用的接口,address:请求路径 -->
<jaxws:endpoint implementor="com.cc.webservice.imp.SolrWebserviceImpl" address="/SolrWebservice" />
<aop:config>
<!-- 切入点表达式 -->
<aop:pointcut expression="execution(* com.cc.service..*(..))" id="txPoint"/>
......@@ -62,4 +77,65 @@
<aop:after method="doAfter" pointcut-ref="pointUserMgr"/>
</aop:aspect>
</aop:config>
<!-- 业务对象 -->
<bean id="solrUpate" class="com.cc.JobTask.SolrUpdateJobTask" />
<!-- 线程执行器配置,用于任务注册 -->
<bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>
<!-- ============= 调度业务============= -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 要调用的对象 -->
<property name="targetObject" ref="solrUpate" />
<!-- 要执行的方法名称 -->
<property name="targetMethod" value="solrupdate" />
<!-- 如果前一个任务还没有结束第二个任务不会启动 false -->
<property name="concurrent" value="false" />
</bean>
<!-- ============= 调度触发器 ============= -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail" />
<!-- 每隔5分钟更新一次 -->
<property name="cronExpression" value="0 */5 * * * ?" />
</bean>
<!-- &lt;!&ndash;触发点&ndash;&gt;
<bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail" />
<property name="startDelay" value="10000" />&lt;!&ndash; 调度工厂实例化后,经过10秒开始执行调度 &ndash;&gt;
<property name="repeatInterval" value="60000" />&lt;!&ndash; 每1分调度一次 &ndash;&gt;
</bean>-->
<!-- ============= 调度工厂 ============= -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>
<task:annotation-driven scheduler="testScheduler" />
<!-- 配置任务线程池和线程池大小 -->
<task:scheduler id="testScheduler" pool-size="30" />
</beans>
\ No newline at end of file
......@@ -89,4 +89,15 @@
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<!--==这个设置很重要,那么我们的webservice的地址就是http://localhost:8080/yourProgramName/webservice/Greeting=== -->
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
</web-app>
......@@ -122,14 +122,16 @@ function solrzysj(value) {
function zysearch(value) {
//处理身份证尾号为X的数据
if(value.indexOf("X")>0){
value=value.substring(0,value.length-1);
value_new=value.substring(0,value.length-1);
}else{
value_new=value;
}
// 1、solr数据资源
$.ajax({
url: "solrsearchlist",
type: 'post',
dataType: 'json',
data: {value: value},
data: {value: value_new},
//async:'false',
success: function (data) {
//遍历生成复选标签
......
package com.cc;
import com.cc.utils.Xmldom4j;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
* Created by changc on 2018/10/18.
*/
public class CxfClientTest {
public static void main(String[] args) throws Exception {
/* JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();
//通过wsdl服务描述文件创建客户端工厂。
Client client = factory.createClient("http://localhost:9042/xzxt-solr/webservice/SolrWebservice?wsdl");
//尝试使用不带?wsdl的地址
//Client client = factory.createClient("http://localhost:9042/xzxt-solr/webservice/HelloWorldService");
//invoke(
//String operationName:要调用的方法名
//Object... params):方法的入参。可以是多个。
Object[] objs = client.invoke("sayHello", "阿福");
//invoke方法是默认返回Object[]数组。取出数组的第一位值得值就是返回值。
System.out.println(objs[0].toString());
Object[] objs1 = client.invoke("querysolr", "ID:A5111021400002017120001","tbstasj");
//invoke方法是默认返回Object[]数组。取出数组的第一位值得值就是返回值。
System.out.println(objs1[0].toString());*/
String json="<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<response>" +
"\n" +
"<lst name=\"responseHeader\"><int name=\"status\">0</int><int name=\"QTime\">34</int></lst><lst name=\"initArgs\"><lst name=\"defaults\"><str name=\"config\">data-config.xml</str></lst></lst><str name=\"command\">delta-import</str><str name=\"status\">idle</str><str name=\"importResponse\"/><lst name=\"statusMessages\"><str name=\"Total Requests made to DataSource\">1</str><str name=\"Total Rows Fetched\">0</str><str name=\"Total Documents Processed\">0</str><str name=\"Total Documents Skipped\">0</str><str name=\"Delta Dump started\">2018-10-23 15:00:00</str><str name=\"Identifying Delta\">2018-10-23 15:00:00</str><str name=\"Deltas Obtained\">2018-10-23 15:00:00</str><str name=\"Building documents\">2018-10-23 15:00:00</str><str name=\"Total Changed Documents\">0</str><str name=\"Time taken\">0:0:0.57</str></lst>\n" +
"</response>";
Xmldom4j.xmlStrCount(json);
}
}
......@@ -28,8 +28,8 @@ public class solrTool {
for(String solrzy:zylistdate){
//System.out.print(solrzy);
String [] solrlist =solrzy.split(":");
System.out.println(solrlist[0]);
System.out.println(solrlist[1]);
//System.out.println(solrlist[0]);
// System.out.println(solrlist[1]);
//调用solr查询接口
/*model=$list(solrlist,value);//503A1503025500010000005SolrDocument
if(!model.get("solrNum").equals("0")){
......@@ -38,18 +38,18 @@ public class solrTool {
}*/
}
//String serverUrl = "http://localhost:8080/solr/core1";
String serverUrl = "http://10.100.17.119:9041/solr/hcdpxx";
String serverUrl = "http://127.0.0.1:9090/solr/tbstasj";
Map<String, Object> model = new HashMap<String, Object>();
HttpSolrClient client = new HttpSolrClient(serverUrl);
//创建查询对象---------------------------------
SolrQuery query = new SolrQuery();
//q 查询字符串,如果查询所有*:*
//query.set("q", "*:*");
query.set("q", "*:*");
String value="15010219551015002X";
if(value.indexOf("X")>0){
value=value.substring(0,value.length()-1);
}
query.set("q", "keywords:15010219551015002 AND XM:CC");
//query.set("q", "ID:A5111021400002017120001");
//fq 过滤条件,过滤是基于查询结果中的过滤
//query.set("fq", "id:0050");
//sort 排序,请注意,如果一个字段没有被索引,那么它是无法排序的
......@@ -96,7 +96,7 @@ public class solrTool {
//获取高亮信息
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
for (SolrDocument solrDocument : results) {
Map<String, List<String>> map = highlighting.get(solrDocument.get("id"));
Map<String, List<String>> map = highlighting.get(solrDocument.get("ID"));
for (String key:map.keySet()){
String value0=map.get(key).toString();
String value1=value0.replace("[","");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment