提交 7d761bf4 编写于 作者: R Ray

update max thread pool

上级 2dfa56d4
......@@ -29,6 +29,7 @@ import com.x.base.core.entity.annotation.CheckPersist;
import com.x.base.core.entity.annotation.CheckRemove;
import com.x.base.core.entity.annotation.Flag;
import com.x.base.core.entity.annotation.RestrictFlag;
import com.x.base.core.entity.dynamic.DynamicEntity;
public abstract class SliceEntityManagerContainerFactory {
......@@ -76,7 +77,14 @@ public abstract class SliceEntityManagerContainerFactory {
flagMap.put(clz, Collections.unmodifiableList(flagFields));
restrictFlagMap.put(clz, Collections.unmodifiableList(restrictFlagFields));
}
if (null != classLoader) {
boolean hasDynamicEntityClass = false;
for (String className : classNames) {
if (StringUtils.startsWith(className, DynamicEntity.CLASS_PACKAGE)) {
hasDynamicEntityClass = true;
break;
}
}
if ((null != classLoader) && hasDynamicEntityClass) {
clz = (Class<? extends JpaObject>) cl.loadClass("com.x.base.core.entity.dynamic.DynamicBaseEntity");
checkPersistFieldMap.put(clz, new HashMap<>());
checkRemoveFieldMap.put(clz, new HashMap<>());
......
......@@ -9,6 +9,8 @@ import com.x.base.core.project.annotation.FieldDescribe;
public class ApplicationServer extends ConfigObject {
private static final long serialVersionUID = 4182216855396608843L;
public static ApplicationServer defaultInstance() {
return new ApplicationServer();
}
......@@ -22,7 +24,7 @@ public class ApplicationServer extends ConfigObject {
private static final Integer DEFAULT_MAXFORMCONTENT = 20;
private static final Boolean DEFAULT_EXPOSEJEST = true;
private static final Boolean DEFAULT_PERSISTENTCONNECTIONSENABLE = true;
private static final Integer DEFAULT_MAXTHREAD = 500;
private static final Integer DEFAULT_MAXTHREAD = 2000;
private static final Boolean DEFAULT_REQUESTLOGENABLE = false;
private static final String DEFAULT_REQUESTLOGFORMAT = "";
private static final Integer DEFAULT_REQUESTLOGRETAINDAYS = 7;
......@@ -36,10 +38,10 @@ public class ApplicationServer extends ConfigObject {
this.proxyPort = DEFAULT_PORT;
this.redeploy = true;
this.scanInterval = DEFAULT_SCANINTERVAL;
this.includes = new CopyOnWriteArrayList<String>();
this.excludes = new CopyOnWriteArrayList<String>();
this.weights = new CopyOnWriteArrayList<NameWeightPair>();
this.scheduleWeights = new CopyOnWriteArrayList<NameWeightPair>();
this.includes = new CopyOnWriteArrayList<>();
this.excludes = new CopyOnWriteArrayList<>();
this.weights = new CopyOnWriteArrayList<>();
this.scheduleWeights = new CopyOnWriteArrayList<>();
this.statEnable = DEFAULT_STATENABLE;
this.statExclusions = DEFAULT_STATEXCLUSIONS;
this.maxFormContent = DEFAULT_MAXFORMCONTENT;
......
......@@ -9,6 +9,8 @@ import com.x.base.core.project.gson.GsonPropertyObject;
public class Message extends GsonPropertyObject {
private static final long serialVersionUID = 2536141863287117519L;
public Message() {
}
......@@ -19,22 +21,21 @@ public class Message extends GsonPropertyObject {
public Message(List<String> list, Map<String, String> map) {
this.consumers.addAll(list);
if(map!=null) {
if (map != null) {
this.consumersV2.putAll(map);
}
}
public Message(String... args) {
if(args!=null){
for (String arg : args){
this.consumersV2.put(arg,"");
if (args != null) {
for (String arg : args) {
this.consumersV2.put(arg, "");
}
}
//this.consumers.addAll(ListTools.toList(args));
}
public Message(Map<String, String> map){
if(map!=null) {
public Message(Map<String, String> map) {
if (map != null) {
this.consumersV2.putAll(map);
}
}
......@@ -45,7 +46,7 @@ public class Message extends GsonPropertyObject {
private List<String> consumers = new ArrayList<>();
private Map<String,String> consumersV2 = new HashMap<>();
private Map<String, String> consumersV2 = new HashMap<>();
public List<String> getConsumers() {
return consumers;
......
......@@ -14,153 +14,130 @@ public class Messages extends ConcurrentSkipListMap<String, Message> {
public static final Boolean DEFAULT_WEBSOCKETENABLE = true;
public Messages() throws Exception {
public Messages() {
super();
}
public static Messages defaultInstance() throws Exception {
public static Messages defaultInstance() {
Messages o = new Messages();
/* 示例 */
Map<String,String> map = new HashMap<>();
// 示例
Map<String, String> map = new HashMap<>();
map.put(MessageConnector.CONSUME_QIYEWEIXIN, "excute");
map.put("describe","excute表示脚本messageSendRule.js中的方法名称,该js文件需放在与messages.json同目录下,更改脚本需重启服务");
map.put("describe", "excute表示脚本messageSendRule.js中的方法名称,该js文件需放在与messages.json同目录下,更改脚本需重启服务");
o.put("##sample##", new Message(map));
/* 文件通知 */
// 文件通知
o.put(MessageConnector.TYPE_ATTACHMENT_SHARE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_ATTACHMENT_EDITOR,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_ATTACHMENT_SHARECANCEL,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_ATTACHMENT_EDITORCANCEL,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_ATTACHMENT_EDITORMODIFY,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
/* 文件通知结束 */
/* 会议通知 */
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
// 会议通知
o.put(MessageConnector.TYPE_MEETING_INVITE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_MEETING_DELETE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
/* 会议通知结束 */
/* 待办已办通知 */
o.put(MessageConnector.TYPE_TASK_CREATE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
/* 待办转已办通知 */
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
// 待办已办通知
o.put(MessageConnector.TYPE_TASK_CREATE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK, MessageConnector.CONSUME_MQ));
// 待办转已办通知
o.put(MessageConnector.TYPE_TASK_TO_TASKCOMPLETED,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
/* 待办提醒通知 */
o.put(MessageConnector.TYPE_TASK_PRESS,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
// 待办提醒通知
o.put(MessageConnector.TYPE_TASK_PRESS, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK, MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_TASK_DELETE, new Message());
o.put(MessageConnector.TYPE_TASKCOMPLETED_CREATE, new Message());
o.put(MessageConnector.TYPE_TASKCOMPLETED_DELETE, new Message());
/* 待办已办通知结束 */
/* 待阅已阅通知 */
o.put(MessageConnector.TYPE_READ_CREATE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
/* 待阅转已阅通知 */
// 待阅已阅通知
o.put(MessageConnector.TYPE_READ_CREATE, new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK, MessageConnector.CONSUME_MQ));
// 待阅转已阅通知
o.put(MessageConnector.TYPE_READ_TO_READCOMPLETED,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,MessageConnector.CONSUME_MQ));
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK,
MessageConnector.CONSUME_MQ));
o.put(MessageConnector.TYPE_READ_DELETE, new Message());
o.put(MessageConnector.TYPE_READCOMPLETED_CREATE, new Message());
o.put(MessageConnector.TYPE_READCOMPLETED_DELETE, new Message());
/* 待阅已阅通知结束 */
/* 日程管理消息通知 */
// 日程管理消息通知
o.put(MessageConnector.TYPE_CALENDAR_ALARM,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS,
MessageConnector.CONSUME_DINGDING, MessageConnector.CONSUME_ZHENGWUDINGDING,
MessageConnector.CONSUME_QIYEWEIXIN, MessageConnector.CONSUME_WELINK));
/* 文档发布消息通知 */
// o.put(MessageConnector.TYPE_CMS_PUBLISH,
// new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS ));
/* 社区新贴发布消息通知 */
// 社区新贴发布消息通知
o.put(MessageConnector.TYPE_BBS_SUBJECTCREATE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS));
/* 社区新回复发布消息通知 */
// 社区新回复发布消息通知
o.put(MessageConnector.TYPE_BBS_REPLYCREATE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS));
/* 脑图分享消息通知 */
// 脑图分享消息通知
o.put(MessageConnector.TYPE_MIND_FILESHARE,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS));
/* 脑图发送消息通知 */
// 脑图发送消息通知
o.put(MessageConnector.TYPE_MIND_FILESEND,
new Message(MessageConnector.CONSUME_WS, MessageConnector.CONSUME_PMS));
/* im聊天消息发送 */
o.put(MessageConnector.TYPE_IM_CREATE,
new Message(MessageConnector.CONSUME_WS));
// im聊天消息发送
o.put(MessageConnector.TYPE_IM_CREATE, new Message(MessageConnector.CONSUME_WS));
return o;
}
public List<String> getConsumers(String type) {
Message o = this.get(type);
if (o != null) {
/* 这里必须复制内容,在消息处理中会对列表进行删除操作 */
// 这里必须复制内容,在消息处理中会对列表进行删除操作
List<String> list = new ArrayList<>();
list.addAll(o.getConsumers());
return list;
}
return new ArrayList<String>();
return new ArrayList<>();
}
public Map<String,String> getConsumersV2(String type) {
public Map<String, String> getConsumersV2(String type) {
Message o = this.get(type);
Map<String,String> map = new HashMap<>();
if (o != null) {
/* 这里必须复制内容,在消息处理中会对列表进行删除操作 */
if(o.getConsumersV2()!=null){
map.putAll(o.getConsumersV2());
}
Map<String, String> map = new HashMap<>();
// 这里必须复制内容,在消息处理中会对列表进行删除操作
if ((o != null) && (o.getConsumersV2() != null)) {
map.putAll(o.getConsumersV2());
}
return map;
}
......
......@@ -143,6 +143,8 @@ public class MessageConnector {
public static final String CONSUME_MQ = "mq";
public static final String CONSUME_QUERY = "query";
private static Context context;
private static LinkedBlockingQueue<Wrap> connectQueue = new LinkedBlockingQueue<>(10000);
......@@ -157,8 +159,9 @@ public class MessageConnector {
public static void stop() {
try {
connectQueue.put(new StopSignal());
} catch (Exception e) {
} catch (InterruptedException e) {
e.printStackTrace();
Thread.currentThread().interrupt();
}
}
......@@ -172,6 +175,7 @@ public class MessageConnector {
}
public static class ConnectorThread extends Thread {
@Override
public void run() {
while (true) {
try {
......
......@@ -48,7 +48,7 @@ public class CenterServerTools extends JettySeverTools {
private static Logger logger = LoggerFactory.getLogger(CenterServerTools.class);
private static final int CENTERSERVER_THREAD_POOL_SIZE_MIN = 20;
private static final int CENTERSERVER_THREAD_POOL_SIZE_MAX = 500;
private static final int CENTERSERVER_THREAD_POOL_SIZE_MAX = 2000;
public static Server start(CenterServer centerServer) throws Exception {
......
......@@ -43,7 +43,7 @@ public class WebServerTools extends JettySeverTools {
private static Logger logger = LoggerFactory.getLogger(WebServerTools.class);
private static final int WEBSERVER_THREAD_POOL_SIZE_MIN = 20;
private static final int WEBSERVER_THREAD_POOL_SIZE_MAX = 500;
private static final int WEBSERVER_THREAD_POOL_SIZE_MAX = 2000;
public static Server start(WebServer webServer) throws Exception {
......
......@@ -40,16 +40,18 @@ class ActionCreate extends BaseAction {
private static ConcurrentMap<String, CompiledScript> scriptMap = new ConcurrentHashMap<>();
ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
LOGGER.debug(effectivePerson.getDistinguishedName());
LOGGER.debug("execute:{}, jsonElement:{}.", effectivePerson::getDistinguishedName, () -> jsonElement);
ActionResult<Wo> result = new ActionResult<>();
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
List<String> consumers = Config.messages().getConsumers(wi.getType());
// List<String> consumers = Config.messages().getConsumers(wi.getType());
Map<String, String> consumersV2 = Config.messages().getConsumersV2(wi.getType());
for (String consumer : consumers) {
if (!consumersV2.containsKey(consumer)) {
consumersV2.put(consumer, "");
}
}
// for (String consumer : consumers) {
// if (BooleanUtils.isFalse(consumersV2.containsKey(consumer))) {
// consumersV2.put(consumer, "");
// }
// }
Instant instant = this.instant(wi, new ArrayList<>(consumersV2.keySet()));
List<Message> messages = new ArrayList<>();
assemble(wi, consumersV2, instant, messages);
......@@ -159,6 +161,9 @@ class ActionCreate extends BaseAction {
case MessageConnector.CONSUME_MPWEIXIN:
message = this.mpweixinMessage(cpWi, instant);
break;
// case MessageConnector.CONSUME_MPWEIXtN:
// message = this.mpweixinMessage(cpWi, instant);
// break;
default:
if (consumer.startsWith(MessageConnector.CONSUME_MQ)) {
message = this.mqMessage(cpWi, instant, consumer);
......
{
"name": "林玲",
"mail": "linling@zoneland.net",
"employee": "001"
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/x_organization_assemble_authentication</Set>
<Set name="war">d:/o2server/store/x_organization_assemble_authentication.war
</Set>
<Set name="extraClasspath">d:/o2server/commons/ext/slf4j-api-1.7.21.jar;d:/o2server/commons/ext/slf4j-simple-1.7.21.jar;d:/o2server/commons/ext/openjpa-all-2.4.2-SNAPSHOT.jar;d:/o2server/commons/ext/ehcache-2.10.1.jar;d:/o2server/store/jars/x_base_core_foundation-4.0.0.jar;d:/o2server/store/jars/x_base_core_project-4.0.0.jar;d:/o2server/store/jars/x_organization_core_entity-4.0.0.jar
</Set>
<Set name="tempDirectory">d:/o2server/temp/aaa</Set>
<!-- Get name="classLoader"> <Call name="addClassPath"> <Arg>d:/lib/ehcache-2.10.1.jar</Arg>
</Call> <Call name="addClassPath"> <Arg>d:/lib/openjpa-all-2.4.2-SNAPSHOT.jar</Arg>
</Call> <Call name="addClassPath"> <Arg>d:/lib/slf4j-api-1.7.21.jar</Arg>
</Call> <Call name="addClassPath"> <Arg>d:/lib/slf4j-simple-1.7.21.jar</Arg>
</Call> <Call name="addClassPath"> <Arg>d:/lib/x_base_core_foundation-4.0.0.jar</Arg>
</Call> <Call name="addClassPath"> <Arg>d:/lib/x_base_core_project-4.0.0.jar</Arg>
</Call> <Call name="addClassPath"> <Arg>d:/lib/x_organization_core_entity-4.0.0.jar</Arg>
</Call> </Get -->
</Configure>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册