diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java index 7d7c103..9a2ee63 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/remote/SaveMessageService.java @@ -11,6 +11,7 @@ import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.msg.constants.ConfigInterface; import com.lyms.platform.msg.utils.DateUtils; +import com.lyms.platform.msg.utils.HttpsClientManager; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.httpclient.HttpClient; @@ -26,8 +27,15 @@ import java.util.concurrent.Executors; */ public class SaveMessageService { - private static final Logger resultLog = LoggerFactory.getLogger("GEN-RESULT"); + private static final Logger logger = LoggerFactory.getLogger(SaveMessageService.class); + private static HttpsClientManager https =new HttpsClientManager(); + { + https.setConnTimeout(5000); + https.setSoTimeout(60000); + https.setMaxConnectionsPerHost(200); + https.setMaxTotalConnections(300); + } /** @@ -38,15 +46,20 @@ public class SaveMessageService { public static boolean saveMsgCenter(MessageListRequest list) { String json = JsonUtil.obj2JsonString(list); - //resultLog.info(json); - String result = HttpClientUtil.doPostSSL(ConfigInterface.MSG_BASE_URL+"/biz-push-web/push",json); - if (StringUtils.isNotEmpty(result)) - { - Map map = JsonUtil.str2Obj(result, Map.class); - if ("0".equals(String.valueOf(map.get("errorcode")))) + String result = null; + try { + result = https.doPost(ConfigInterface.MSG_BASE_URL + "/biz-push-web/push", json, null); + + if (StringUtils.isNotEmpty(result)) { - return true; + Map map = JsonUtil.str2Obj(result, Map.class); + if ("0".equals(String.valueOf(map.get("errorcode")))) + { + return true; + } } + } catch (Exception e) { + logger.error("save msg is error",e); } return false; } @@ -66,16 +79,21 @@ public class SaveMessageService { param.put("limit","10"); param.put("patientId",patientId); param.put("tempId",tempId); - String result = HttpClientUtil.doGet(ConfigInterface.MSG_BASE_URL + "/biz-push-web/push", param,"utf-8",null); - JSONObject jsonObject = JsonUtil.getObj(result); - if (jsonObject != null && jsonObject.getJSONObject("pageInfo") != null) - { - JSONObject jsonObject1 = jsonObject.getJSONObject("pageInfo"); - int count = jsonObject1.getInt("count"); - if (count > 0) + String result = null; + try { + result = https.doGet(ConfigInterface.MSG_BASE_URL + "/biz-push-web/push", param,null); + JSONObject jsonObject = JsonUtil.getObj(result); + if (jsonObject != null && jsonObject.getJSONObject("pageInfo") != null) { - return true; + JSONObject jsonObject1 = jsonObject.getJSONObject("pageInfo"); + int count = jsonObject1.getInt("count"); + if (count > 0) + { + return true; + } } + } catch (Exception e) { + logger.error("get msg is exist error",e); } return false; } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java index 091afdc..f01494d 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/service/impl/MsgGenerateServiceImpl.java @@ -64,7 +64,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { logger.info("The generatePatAmsMsg configs hospital size is {}",configModels.size()); if (CollectionUtils.isNotEmpty(configModels)) { - int batchSize = 5; + int batchSize = 10; int end = 0; for (int i = 0; i < configModels.size(); i += batchSize) { end = (end + batchSize); @@ -90,7 +90,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { logger.info("The generateBabyAmsMsg configs hospital size is {}",configModels.size()); if (CollectionUtils.isNotEmpty(configModels)) { - int batchSize = 5; + int batchSize = 10; int end = 0; for (int i = 0; i < configModels.size(); i += batchSize) { end = (end + batchSize); @@ -116,7 +116,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { logger.info("The generateChanAmsMsg configs hospital size is {}",configModels.size()); if (CollectionUtils.isNotEmpty(configModels)) { - int batchSize = 5; + int batchSize = 10; int end = 0; for (int i = 0; i < configModels.size(); i += batchSize) { end = (end + batchSize); @@ -142,7 +142,7 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { logger.info("The generateChanAmsMsg configs hospital size is {}",configModels.size()); if (CollectionUtils.isNotEmpty(configModels)) { - int batchSize = 5; + int batchSize = 10; int end = 0; for (int i = 0; i < configModels.size(); i += batchSize) { end = (end + batchSize); @@ -162,21 +162,9 @@ public class MsgGenerateServiceImpl implements IMsgGenerateService { */ @Override public void generaterAllMsg() { - logger.info("generater all msg starting."); - new Thread(new Runnable() { - @Override - public void run() { - generateTemplateMsg(null); - } - }).start(); - - new Thread(new Runnable() { - @Override - public void run() { - generateChanAmsMsg(null); - generateBabyAmsMsg(null); - generatePatAmsMsg(null); - } - }).start(); + generateTemplateMsg(null); + generateChanAmsMsg(null); + generateBabyAmsMsg(null); + generatePatAmsMsg(null); } } diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HttpsClientManager.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HttpsClientManager.java new file mode 100644 index 0000000..ac9dab6 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/HttpsClientManager.java @@ -0,0 +1,165 @@ +package com.lyms.platform.msg.utils; + +import com.lyms.platform.common.utils.StringUtils; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpMethod; +import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; +import org.apache.commons.httpclient.methods.ByteArrayRequestEntity; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.params.HttpConnectionManagerParams; +import org.apache.commons.httpclient.protocol.Protocol; +import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.InputStream; +import java.util.Iterator; +import java.util.Map; + +public final class HttpsClientManager +{ + private static final Logger LOGGER = LoggerFactory.getLogger(HttpsClientManager.class); + private static HttpClient client = null; + + //http.param.maxconnection.perhost=50 + private int maxConnectionsPerHost = 50; + //http.param.maxTotalConnections=200 + private int maxTotalConnections=200; + //http.param.connTimeout=2000 + private int connTimeout=2000; + //http.param.soTimeout=2000 + private int soTimeout=2000; + + private void init() + { + ProtocolSocketFactory fcty = new MySecureProtocolSocketFactory(); + Protocol.registerProtocol("https", new Protocol("https", fcty, 443)); + + MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager(); + + HttpConnectionManagerParams params = new HttpConnectionManagerParams(); + + params.setDefaultMaxConnectionsPerHost(maxConnectionsPerHost); + + params.setMaxTotalConnections(maxTotalConnections); + + params.setConnectionTimeout(connTimeout); + + params.setSoTimeout(soTimeout); + + manager.setParams(params); + + client = new HttpClient(manager); + } + + + public HttpClient getClient() { + if (null == client) { + synchronized (HttpsClientManager.class) { + if (null == client) { + init(); + } + } + } + return client; + } + + public void setMaxConnectionsPerHost(int maxConnectionsPerHost) + { + this.maxConnectionsPerHost = maxConnectionsPerHost; + } + + public void setMaxTotalConnections(int maxTotalConnections) + { + this.maxTotalConnections = maxTotalConnections; + } + + + public void setConnTimeout(int connTimeout) + { + this.connTimeout = connTimeout; + } + + public void setSoTimeout(int soTimeout) + { + this.soTimeout = soTimeout; + } + + public String execute(HttpMethod method) + throws Exception { + if (null == method) { + LOGGER.warn("invalid method,method is null"); + return null; + } + String result = null; + HttpClient hc = getClient(); + try { + hc.executeMethod(method); + int status = method.getStatusCode(); + result = method.getResponseBodyAsString(); + if (status == 304) { + LOGGER.warn("hit cache,result=" + result); + } + } finally { + method.releaseConnection(); + } + return result; + } + + public String doGet(String url,Map params,Map header) + throws Exception { + + StringBuffer sb = new StringBuffer(); + if(params!=null && !params.isEmpty()) { + Iterator keys = params.keySet().iterator(); + while(keys.hasNext()){ + String key = keys.next(); + String value = params.get(key); + if (!StringUtils.isNotEmpty(value)) + { + continue; + } + if(sb.length()==0)sb.append("?"); + else sb.append("&"); + sb.append(key+"="+value); + } + } + + GetMethod getMethod = new GetMethod(url+sb.toString()); + if (null!=header) + { + Iterator> it = header.entrySet().iterator(); + while(it.hasNext()){ + Map.Entry entry =it.next(); + entry.getKey(); + entry.getValue(); + getMethod.addRequestHeader(entry.getKey(), entry.getValue().toString()); + } + } + return execute(getMethod); + } + + public String doPost(String url, String postData,Map header) + throws Exception { + PostMethod postMethod = new PostMethod(url); + if (postData != null) { + + if (header != null) + { + Iterator> it = header.entrySet().iterator(); + while(it.hasNext()){ + Map.Entry entry =it.next(); + entry.getKey(); + entry.getValue(); + postMethod.addRequestHeader(entry.getKey(), entry.getValue().toString()); + } + } + byte[] reqBytes = postData.getBytes(); + RequestEntity requestEntity = new ByteArrayRequestEntity(reqBytes); + postMethod.setRequestEntity(requestEntity); + } + return execute(postMethod); + } +} \ No newline at end of file diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/MySecureProtocolSocketFactory.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/MySecureProtocolSocketFactory.java new file mode 100644 index 0000000..2c1c7f5 --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/MySecureProtocolSocketFactory.java @@ -0,0 +1,97 @@ +package com.lyms.platform.msg.utils; + + +import org.apache.commons.httpclient.ConnectTimeoutException; +import org.apache.commons.httpclient.HttpClientError; +import org.apache.commons.httpclient.params.HttpConnectionParams; +import org.apache.commons.httpclient.protocol.ControllerThreadSocketFactory; +import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; + +public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory { + + private SSLContext sslContext = null; + + /** + * Constructor for MySecureProtocolSocketFactory. + */ + public MySecureProtocolSocketFactory() { + } + + /** + * @return + */ + private static SSLContext createEasySSLContext() { + try { + SSLContext context = SSLContext.getInstance("SSL"); + context.init(null, new TrustManager[] {new MyX509TrustManager()}, null); + return context; + } catch (Exception e) { + throw new HttpClientError(e.toString()); + } + } + + /** + * @return + */ + private SSLContext getSSLContext() { + if (this.sslContext == null) { + this.sslContext = createEasySSLContext(); + } + return this.sslContext; + } + + /* + * (non-Javadoc) + * @see + * org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String, + * int, java.net.InetAddress, int) + */ + public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, + UnknownHostException { + + return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort); + } + + /* + * (non-Javadoc) + * @see + * org.apache.commons.httpclient.protocol.ProtocolSocketFactory#createSocket(java.lang.String, + * int, java.net.InetAddress, int, org.apache.commons.httpclient.params.HttpConnectionParams) + */ + public Socket createSocket(final String host, final int port, final InetAddress localAddress, final int localPort, + final HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException { + if (params == null) { + throw new IllegalArgumentException("Parameters may not be null"); + } + int timeout = params.getConnectionTimeout(); + if (timeout == 0) { + return createSocket(host, port, localAddress, localPort); + } else { + return ControllerThreadSocketFactory.createSocket(this, host, port, localAddress, localPort, timeout); + } + } + + /* + * (non-Javadoc) + * @see SecureProtocolSocketFactory#createSocket(java.lang.String,int) + */ + public Socket createSocket(String host, int port) throws IOException, UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(host, port); + } + + /* + * (non-Javadoc) + * @see SecureProtocolSocketFactory#createSocket(java.net.Socket,java.lang.String,int,boolean) + */ + public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, + UnknownHostException { + return getSSLContext().getSocketFactory().createSocket(socket, host, port, autoClose); + } +} \ No newline at end of file diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/MyX509TrustManager.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/MyX509TrustManager.java new file mode 100644 index 0000000..710cd8e --- /dev/null +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/utils/MyX509TrustManager.java @@ -0,0 +1,36 @@ +package com.lyms.platform.msg.utils; + + +import javax.net.ssl.X509TrustManager; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +public class MyX509TrustManager implements X509TrustManager { + + /* + * (non-Javadoc) + * @see javax.net.ssl.X509TrustManager#checkClientTrusted(java.security.cert.X509Certificate[], + * java.lang.String) + */ + public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + + } + + /* + * (non-Javadoc) + * @see javax.net.ssl.X509TrustManager#checkServerTrusted(java.security.cert.X509Certificate[], + * java.lang.String) + */ + public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { + + } + + /* + * (non-Javadoc) + * @see javax.net.ssl.X509TrustManager#getAcceptedIssuers() + */ + public X509Certificate[] getAcceptedIssuers() { + return null; + } + +} \ No newline at end of file diff --git a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java index e1725a7..85b6b7e 100644 --- a/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java +++ b/platform-msg-generate/src/main/java/com/lyms/platform/msg/worker/TempleteMsgGenerateWorker.java @@ -91,7 +91,7 @@ public class TempleteMsgGenerateWorker implements Runnable { } try { - int batchSize = 8; + int batchSize = 10; int end = 0; for (int i = 0; i < templates.size(); i += batchSize) { end = (end + batchSize);