提交 6c29956a 编写于 作者: A arron

Update Monitor.java

-- 配合 Dictionary里的周期任务调度的修改 去除了这里的while(true)  Exception做了统一  其余均未作修改
上级 8a49a5ed
...@@ -2,15 +2,11 @@ package org.wltea.analyzer.dic; ...@@ -2,15 +2,11 @@ package org.wltea.analyzer.dic;
import java.io.IOException; import java.io.IOException;
import org.apache.http.Header;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpHead;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.wltea.analyzer.help.Sleep;
import org.wltea.analyzer.help.Sleep.Type;
public class Monitor implements Runnable { public class Monitor implements Runnable {
...@@ -44,53 +40,49 @@ public class Monitor implements Runnable { ...@@ -44,53 +40,49 @@ public class Monitor implements Runnable {
*/ */
public void run() { public void run() {
//超时设置 //超时设置
RequestConfig rc = RequestConfig.custom().setConnectionRequestTimeout(10*1000) RequestConfig rc = RequestConfig.custom().setConnectionRequestTimeout(10*1000)
.setConnectTimeout(10*1000).setSocketTimeout(15*1000).build(); .setConnectTimeout(10*1000).setSocketTimeout(15*1000).build();
while (true) {
HttpHead head = new HttpHead(location); HttpHead head = new HttpHead(location);
head.setConfig(rc); head.setConfig(rc);
//设置请求头
if (last_modified != null) {
head.setHeader("If-Modified-Since", last_modified);
}
if (eTags != null) {
head.setHeader("If-None-Match", eTags);
}
CloseableHttpResponse response = null;
try {
//设置请求头 response = httpclient.execute(head);
if (last_modified != null) {
head.setHeader("If-Modified-Since", last_modified); //返回200 才做操作
} if(response.getStatusLine().getStatusCode()==200){
if (eTags != null) {
head.setHeader("If-None-Match", eTags); if (!response.getLastHeader("Last-Modified").getValue().equalsIgnoreCase(last_modified)
||!response.getLastHeader("ETags").getValue().equalsIgnoreCase(eTags)) {
// 远程词库有更新,需要重新加载词典,并修改last_modified,eTags
Dictionary.getSingleton().reLoadMainDict();
last_modified = response.getLastHeader("Last-Modified")==null?null:response.getLastHeader("Last-Modified").getValue();
eTags = response.getLastHeader("ETags")==null?null:response.getLastHeader("ETags").getValue();
}
} }
CloseableHttpResponse response = null; } catch (Exception e) {
e.printStackTrace();
}finally{
try { try {
response = httpclient.execute(head); response.close();
//返回304 Not Modified,词库未更新
if(response.getStatusLine().getStatusCode()==304){
continue;
}else if(response.getStatusLine().getStatusCode()==200){
if (!response.getLastHeader("Last-Modified").getValue().equalsIgnoreCase(last_modified)
||!response.getLastHeader("ETags").getValue().equalsIgnoreCase(eTags)) {
// 远程词库有更新,需要重新加载词典,并修改last_modified,eTags
Dictionary.getSingleton().reLoadMainDict();
last_modified = response.getLastHeader("Last-Modified")==null?null:response.getLastHeader("Last-Modified").getValue();
eTags = response.getLastHeader("ETags")==null?null:response.getLastHeader("ETags").getValue();
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
}finally{
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
Sleep.sleep(Type.SEC, 60);
} }
} }
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册