diff --git a/caf-boot-starters/caf-boot-starter-application-context/src/main/java/io/iec/edp/caf/context/filter/CAFContextFilter.java b/caf-boot-starters/caf-boot-starter-application-context/src/main/java/io/iec/edp/caf/context/filter/CAFContextFilter.java index 415cfea920313bb117c12532eaadc694d875837d..844d39bafc1af9127171f8b87d28d2ec89fc615a 100644 --- a/caf-boot-starters/caf-boot-starter-application-context/src/main/java/io/iec/edp/caf/context/filter/CAFContextFilter.java +++ b/caf-boot-starters/caf-boot-starter-application-context/src/main/java/io/iec/edp/caf/context/filter/CAFContextFilter.java @@ -98,10 +98,7 @@ public class CAFContextFilter extends OncePerRequestFilter { @Override protected boolean shouldNotFilter(HttpServletRequest request) { - String path = request.getRequestURI(); - String basepath = CafEnvironment.getBaseApiPath(); -// return !path.startsWith("/api/"); - return !path.startsWith(basepath); + return !request.getRequestURI().startsWith(CafEnvironment.getBaseApiPath()); } @Override @@ -133,8 +130,7 @@ public class CAFContextFilter extends OncePerRequestFilter { //服务单元处理 String suName = this.getServiceUnitName(path); var service = CAFContext.current.getService(); - if (service != null) - ((CafContextServiceImpl) service).setCurrentSU(suName); + if (service != null) service.setCurrentSU(suName); if (properties.isLazyInitialization()) { String pathInfo = request.getPathInfo() == null ? "" : request.getPathInfo(); @@ -217,21 +213,20 @@ public class CAFContextFilter extends OncePerRequestFilter { } private String getServiceUnitName(String url) { - // /api/gsp/communication/v1.0/test/test - Integer index = url.indexOf("/api/"); + // 请求URL: /{server.servlet.context-path}/{cxf.path}/gsp/communication/v1.0/test/test + // BaseApiPath: /{server.servlet.context-path}/{cxf.path} + String baseApiPath = CafEnvironment.getBaseApiPath() + "/"; + int index = url.indexOf(baseApiPath); if (index < 0) return null; - String subStr = url.substring(index + 5); - if (subStr == null || "".equals(subStr)) + String subStr = url.substring(index + baseApiPath.length()); + if ("".equals(subStr)) return null; String[] strArray = subStr.split("/"); String suName = strArray[1]; String suNameLowerCase = suName.toLowerCase(); -// var list = GspConfigurationPathService.Current.ConfigPathList; -// //暂时忽略大小写,1909再按照规范 -// return list.Keys.ToList().Find(x => x.Equals(suName, StringComparison.OrdinalIgnoreCase)); if (this.suNames.containsKey(suNameLowerCase)) return this.suNames.get(suNameLowerCase); diff --git a/caf-boot-starters/caf-boot-starter-data/src/main/java/io/iec/edp/caf/data/filter/CAFDataFilter.java b/caf-boot-starters/caf-boot-starter-data/src/main/java/io/iec/edp/caf/data/filter/CAFDataFilter.java index 101773f2bda0e9852710dfaf837ac241424d38e8..4428dc162f484bac739577729d06c5a367d9ee34 100644 --- a/caf-boot-starters/caf-boot-starter-data/src/main/java/io/iec/edp/caf/data/filter/CAFDataFilter.java +++ b/caf-boot-starters/caf-boot-starter-data/src/main/java/io/iec/edp/caf/data/filter/CAFDataFilter.java @@ -18,6 +18,7 @@ package io.iec.edp.caf.data.filter; import io.iec.edp.caf.commons.exception.CAFRuntimeException; +import io.iec.edp.caf.commons.runtime.CafEnvironment; import io.iec.edp.caf.commons.runtime.msu.ServiceUnitConfigService; import io.iec.edp.caf.commons.transaction.service.DBTransactionService; import io.iec.edp.caf.data.orm.jpa.DynamicTableContext; @@ -50,7 +51,6 @@ public class CAFDataFilter extends OncePerRequestFilter { public CAFDataFilter(DBTransactionService dbTransactionService){ - this.dbTransactionService = dbTransactionService; suNames = new HashMap<>(); for (String name : ServiceUnitConfigService.getEnableSu()) { @@ -72,7 +72,6 @@ public class CAFDataFilter extends OncePerRequestFilter { DynamticTableInfo contextMap = dtc.getDynamicTableInfo(); //检测到年度表上下文 if(contextMap!=null&&contextMap.getDynamicTableNames()!=null&&!contextMap.getDynamicTableNames().isEmpty()){ - String path = httpServletRequest.getRequestURI(); //throw new ServletException("系统检测到未关闭的年度表上下文,已强制关闭。涉及su名称:"+this.getServiceUnitName(path)); logger.info("系统检测到未关闭的年度表上下文,已强制清除。"); } @@ -88,7 +87,6 @@ public class CAFDataFilter extends OncePerRequestFilter { throw new CAFRuntimeException("caf",e.getMessage(),"ECP_CAF_FILTER_0001",e); }finally { filterChain.doFilter(httpServletRequest, httpServletResponse); - //this.filterInvokeEventBroker.fireAfterFilterInvokeEvent(httpServletRequest, httpServletResponse); String path = httpServletRequest.getRequestURI(); @@ -123,8 +121,7 @@ public class CAFDataFilter extends OncePerRequestFilter { */ @Override protected boolean shouldNotFilter(HttpServletRequest request) { - String path = request.getRequestURI(); - return !path.startsWith("/api/"); + return !request.getRequestURI().startsWith(CafEnvironment.getBaseApiPath()); } /** @@ -162,12 +159,15 @@ public class CAFDataFilter extends OncePerRequestFilter { //通过url获取su private String getServiceUnitName(String url) { - Integer index = url.indexOf("/api/"); + // 请求URL: /{server.servlet.context-path}/{cxf.path}/gsp/communication/v1.0/test/test + // BaseApiPath: /{server.servlet.context-path}/{cxf.path} + String baseApiPath = CafEnvironment.getBaseApiPath() + "/"; + int index = url.indexOf(baseApiPath); if (index < 0) return null; - String subStr = url.substring(index + 5); - if (subStr == null || "".equals(subStr)) + String subStr = url.substring(index + baseApiPath.length()); + if ("".equals(subStr)) return null; String[] strArray = subStr.split("/"); String suName = strArray[1];