提交 41f54a58 编写于 作者: O o2sword

自建表编译优化,支持集群同时编译

上级 6f401796
......@@ -165,8 +165,6 @@ class ActionCover extends BaseAction {
if(!wi.getTableList().isEmpty()){
CacheManager.notify(Table.class);
CacheManager.notify(Statement.class);
business.buildAllTable();
}else if(!wi.getStatementList().isEmpty()){
CacheManager.notify(Statement.class);
}
......
......@@ -112,8 +112,6 @@ class ActionCreate extends BaseAction {
if(!wi.getTableList().isEmpty()){
CacheManager.notify(Table.class);
CacheManager.notify(Statement.class);
business.buildAllTable();
}else if(!wi.getStatementList().isEmpty()){
CacheManager.notify(Statement.class);
}
......
package com.x.query.assemble.designer.jaxrs.table;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WrapBoolean;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.query.assemble.designer.Business;
class ActionBuild extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionBuild.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>();
Wo wo = new Wo();
Business business = new Business(emc);
if (!business.controllable(effectivePerson)) {
throw new ExceptionAccessDenied(effectivePerson);
}
wo.setValue(business.buildAllTable());
logger.print("build table complete!");
result.setData(wo);
return result;
}
}
public static class Wo extends WrapBoolean {
}
}
\ No newline at end of file
......@@ -2,13 +2,21 @@ package com.x.query.assemble.designer.jaxrs.table;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.project.Application;
import com.x.base.core.project.connection.CipherConnectionAction;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WrapBoolean;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.x_query_assemble_designer;
import com.x.query.assemble.designer.Business;
import com.x.query.assemble.designer.ThisApplication;
import java.util.Date;
import java.util.List;
class ActionBuildAll extends BaseAction {
......@@ -22,8 +30,19 @@ class ActionBuildAll extends BaseAction {
if (!business.controllable(effectivePerson)) {
throw new ExceptionAccessDenied(effectivePerson);
}
wo.setValue(business.buildAllTable());
List<Application> apps = ThisApplication.context().applications().get(x_query_assemble_designer.class);
if (ListTools.isNotEmpty(apps)) {
apps.stream().forEach(o -> {
String url = o.getUrlJaxrsRoot() + "table/build?tt="+new Date().getTime();
logger.print("{} do dispatch build table request to : {}", effectivePerson.getDistinguishedName(), url);
try {
CipherConnectionAction.get(effectivePerson.getDebugger(), url);
} catch (Exception e) {
e.printStackTrace();
}
});
}
wo.setValue(true);
result.setData(wo);
......
......@@ -53,12 +53,12 @@ public class TableAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "编译表对象生成实体类进行数据库建表,执行后需要重新启动.", action = ActionBuildAll.class)
@JaxrsMethodDescribe(value = "编译表对象生成实体类进行数据库建表,执行后需要重新启动,支持集群环境.", action = ActionBuildAll.class)
@GET
@Path("build/all")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void buildAll(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
public synchronized void buildAll(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
ActionResult<ActionBuildAll.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
......@@ -70,6 +70,23 @@ public class TableAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "编译表对象生成实体类进行数据库建表,执行后需要重新启动,仅对当前服务器.", action = ActionBuild.class)
@GET
@Path("build")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void build(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request) {
ActionResult<ActionBuild.Wo> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionBuild().execute(effectivePerson);
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "根据标识获取表.", action = ActionGet.class)
@GET
@Path("{flag}")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册