CommonService.cs

本文介绍了一个用于处理ASP.NET DataGrid控件的方法集合,包括分页、数据绑定、导航文本更新等功能。通过这些方法可以实现DataGrid的初始化、重新绑定及导航控制等操作。

using System;
using System.Reflection;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using com.unicafe.common;
using com.unicafe.workflow;


namespace com.ascs.plp.publics
{
/// <summary>
/// DataGridPager 的摘要说明。
/// </summary>
public class CommonService
{
/// **************************************************************************
/// BEIGIN
/// <summary>
/// 构造函数
/// </summary>
/// **************************************************************************
public CommonService()
{
}
/// **************************************************************************
/// END
/// **************************************************************************


//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
//以下是对主页面的处理方法集
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 对首次加载的页面进行处理
/// </summary>
/// <param name="thePage">调用此方法的页面对象,建议直接使用this关键字</param>
/// <param name="sql">用于生成绑定DataGrid的数据集的SQL语句</param>
/// <param name="theDG">被绑定的DataGrid控件对象</param>
/// <param name="SessionName">用于与服务器进行交互的Session名称,值为"Data"或"Data1"</param>
/// <param name="PreviousText">“上一页”文本控件</param>
/// <param name="NextText">“下一页”文本控件</param>
/// <param name="PageInfo">“当前第m页/共n页”文本控件</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool HandleDataGrid( System.Web.UI.Page thePage,
string sql,
System.Web.UI.WebControls.DataGrid theDG,
string SessionName,
System.Web.UI.WebControls.Label PreviousText,
System.Web.UI.WebControls.Label NextText,
System.Web.UI.WebControls.Label PageInfo)
{
//绑定DataGrid控件
if(BindDataGrid(thePage, sql, theDG, SessionName, false) == false) return false;

//检查是否需要定位
if(LocationDataGrid(thePage, theDG, SessionName) == false) return false;

//给导航文本赋值
if(PageNavigatorText(theDG, PreviousText, NextText, PageInfo) == false) return false;

return true;
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 改变查询条件后,重新查询数据库并重新绑定
/// </summary>
/// <param name="thePage">调用此方法的页面对象,建议直接使用this关键字</param>
/// <param name="sql">用于生成绑定DataGrid的数据集的SQL语句</param>
/// <param name="theDG">被绑定的DataGrid控件对象</param>
/// <param name="SessionName">用于与服务器进行交互的Session名称,值为"Data"或"Data1"</param>
/// <param name="PreviousText">“上一页”文本控件</param>
/// <param name="NextText">“下一页”文本控件</param>
/// <param name="PageInfo">“当前第m页/共n页”文本控件</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool ReBindDataGrid( System.Web.UI.Page thePage,
string sql,
System.Web.UI.WebControls.DataGrid theDG,
string SessionName,
System.Web.UI.WebControls.Label PreviousText,
System.Web.UI.WebControls.Label NextText,
System.Web.UI.WebControls.Label PageInfo)
{
//绑定DataGrid控件
if(BindDataGrid(thePage, sql, theDG, SessionName, false) == false) return false;

//给导航文本赋值
if(PageNavigatorText(theDG, PreviousText, NextText, PageInfo) == false) return false;

return true;
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 对DataGrid控件的分页导航链接文本进行赋值
/// </summary>
/// <param name="theDG">DataGrid控件对象</param>
/// <param name="PreviousText">“上一页”文本控件</param>
/// <param name="NextText">“下一页”文本控件</param>
/// <param name="PageInfo">“当前第m页/共n页”文本控件</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool PageNavigatorText(DataGrid theDG, Label PreviousText, Label NextText, Label PageInfo)
{
try
{
//给上一页赋值
if (theDG.CurrentPageIndex == 0)
{
PreviousText.Text = "上一页";
}
else
{
PreviousText.Text = "<a href=\"javascript:__doPostBack('" + PreviousText.ClientID +"','')\">上一页</a>";
}

//给下一页赋值
if ((theDG.CurrentPageIndex + 1) == theDG.PageCount)
{
NextText.Text = "下一页";
}
else
{
NextText.Text = "<a href=\"javascript:__doPostBack('" + NextText.ClientID +"','')\">下一页</a>";
}

//给当前第M页/第N页赋值
PageInfo.Text = "当前第<font id=\"PageIndex\">" + Convert.ToString((theDG.CurrentPageIndex + 1)) + "</font>页 / 共" + theDG.PageCount.ToString() + "页";
return true;
}
catch(Exception e)
{
LogService.Write ("PageNavigatorText(DataGrid theDG, Label PreviousText, Label NextText, Label PageInfo, Label TotalText)");
LogService.Write ("在对DataGrid控件的分页导航链接进行处理时发生错误。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将DataGrid控件与数据查询结果集进行绑定
/// </summary>
/// <param name="thePage">调用此方法的页面对象,建议直接使用this关键字</param>
/// <param name="SqlStatement">用于生成绑定DataGrid的数据集的SQL语句</param>
/// <param name="theDG">被绑定的DataGrid控件对象</param>
/// <param name="SessionName">与服务器相交互的Session名称,值为"Data"或"Data1"</param>
/// <param name="ChangePage">是否需要进行当前页的定位</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool BindDataGrid(System.Web.UI.Page thePage, string SqlStatement, System.Web.UI.WebControls.DataGrid theDG, string SessionName, bool ChangePage)
{
//声明并创建一个SqlConnection对象的实例
SqlConnection Connection = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());
try
{
//声明一个用于存储DataGrid对象总页数的整型变量
int PageCount;

//声明并创建一个用于保存数据的DataSet对象
DataSet ds = new DataSet();

SqlDataAdapter SqlDA = new SqlDataAdapter(SqlStatement, Connection);
SqlDA.Fill(ds, "TempDataTable");

DataTable theDT;
theDT = ds.Tables["TempDataTable"];


//判断是否要进行分页调整操作,如果不调整,则将当前页定为第一页
if (ChangePage == true)
{
//计算总页数
if (theDT.Rows.Count % theDG.PageSize == 0)
{
PageCount = theDT.Rows.Count / theDG.PageSize;
}
else
{
PageCount = theDT.Rows.Count / theDG.PageSize + 1;
}
//如果总页数为零,则当前页设为第一页;如果当前页不为零,且当前页超过了总页数,则将当前页置为总页数;其它情况不予处理
if (PageCount == 0)
{
theDG.CurrentPageIndex = 0;
}
else if (theDG.CurrentPageIndex >= PageCount)
{
theDG.CurrentPageIndex = PageCount - 1;
}
else
{
//其它情况不予处理
}
}
else
{
//将当前页定为第一页
theDG.CurrentPageIndex = 0;
}

//将theDG与查询结果集进行绑定
//声明一个用于存储数据集的DataView对象
System.Data.DataView theDV = new DataView(theDT);
theDG.DataSource= theDV;
theDG.DataBind();

//如果总行数为0,则显示页脚,否则不显示
if(theDG.Items.Count == 0)
{
theDG.ShowFooter = true;
theDG.FooterStyle.CopyFrom(theDG.ItemStyle);
}
else
{
theDG.ShowFooter = false;
}

//添加响应鼠标移动的代码行
MouseMoveOnDataGrid(theDG);

//对目标页面的Session变量赋值
thePage.Session[SessionName] = theDT;

//关闭数据库连接对象
Connection.Close();
return true;
}
catch(Exception e)
{
if(Connection.State.ToString() == "Open") Connection.Close();
LogService.Write ("BindDataGrid(System.Web.UI.Page thePage, string SqlStatement, System.Web.UI.WebControls.DataGrid theDG, string SessionName, bool ChangePage)");
LogService.Write ("在将DataGrid控件与数据查询结果集进行绑定时发生错误。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************





/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将DataGrid控件与数据查询结果集进行绑定
/// </summary>
/// <param name="thePage">调用此方法的页面对象,建议直接使用this关键字</param>
/// <param name="SqlCmd">用于生成绑定DataGrid的数据集的SqlCommand对象</param>
/// <param name="theDG">被绑定的DataGrid控件对象</param>
/// <param name="SessionName">与服务器相交互的Session名称,值为"Data"或"Data1"</param>
/// <param name="ChangePage">是否需要进行当前页的定位</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool BindDataGrid(System.Web.UI.Page thePage, System.Data.SqlClient.SqlCommand SqlCmd, System.Web.UI.WebControls.DataGrid theDG, string SessionName, bool ChangePage)
{
//声明并创建一个SqlConnection对象的实例
SqlConnection Connection = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());
try
{
//声明一个用于存储DataGrid对象总页数的整型变量
int PageCount;

//声明并创建一个用于保存数据的DataSet对象
DataSet ds = new DataSet();

SqlDataAdapter SqlDA = new SqlDataAdapter(SqlCmd);
SqlDA.Fill(ds, "TempDataTable");

//输出到XML文件中
//ds.WriteXml("c:\\data.xml",System.Data.XmlWriteMode.WriteSchema);

DataTable theDT;
theDT = ds.Tables["TempDataTable"];


//判断是否要进行分页调整操作,如果不调整,则将当前页定为第一页
if (ChangePage == true)
{
//计算总页数
if (theDT.Rows.Count % theDG.PageSize == 0)
{
PageCount = theDT.Rows.Count / theDG.PageSize;
}
else
{
PageCount = theDT.Rows.Count / theDG.PageSize + 1;
}
//如果总页数为零,则当前页设为第一页;如果当前页不为零,且当前页超过了总页数,则将当前页置为总页数;其它情况不予处理
if (PageCount == 0)
{
theDG.CurrentPageIndex = 0;
}
else if (theDG.CurrentPageIndex >= PageCount)
{
theDG.CurrentPageIndex = PageCount - 1;
}
else
{
//其它情况不予处理
}
}
else
{
//将当前页定为第一页
theDG.CurrentPageIndex = 0;
}

//将theDG与查询结果集进行绑定
//声明一个用于存储数据集的DataView对象
System.Data.DataView theDV = new DataView(theDT);
theDG.DataSource= theDV;
theDG.DataBind();

//如果总行数为0,则显示页脚,否则不显示
if(theDG.Items.Count == 0)
{
theDG.ShowFooter = true;
theDG.FooterStyle.CopyFrom(theDG.ItemStyle);
}
else
{
theDG.ShowFooter = false;
}

//添加响应鼠标移动的代码行
CommonService.MouseMoveOnDataGrid(theDG);

//对目标页面的Session变量赋值
thePage.Session[SessionName] = theDT;

//关闭数据库连接对象
Connection.Close();
return true;
}
catch(Exception e)
{
if(Connection.State.ToString() == "Open") Connection.Close();
LogService.Write ("BindDataGrid(System.Web.UI.Page thePage, System.Data.SqlClient.SqlCommand SqlCmd, System.Web.UI.WebControls.DataGrid theDG, string SessionName, bool ChangePage)");
LogService.Write ("在将DataGrid控件与数据查询结果集进行绑定时发生错误。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 响应DataGrid控件页面索引改变的方法<br/>
/// </summary>
/// <param name="thePage">调用此方法的页面对象,建议直接使用this关键字</param>
/// <param name="theDG">进行分页导航的DataGrid对象</param>
/// <param name="SessionName">与服务器相交互的Session名称,值为"Data"或"Data1"</param>
/// <param name="PreviousText">“上一页”文本</param>
/// <param name="NextText">“下一页”文本</param>
/// <param name="PageInfo">“当前第m页”文本</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool PageNavigate(System.Web.UI.Page thePage, DataGrid theDG, string SessionName, Label PreviousText, Label NextText, Label PageInfo)
{
System.Data.DataTable theDT;
System.Data.DataView theDV;
try
{
if (thePage.Request.Form["__EVENTTARGET"].ToString() == PreviousText.ID)
{
//转到上一页
theDG.CurrentPageIndex --;
theDT = (DataTable)thePage.Session[SessionName];
theDV = new DataView(theDT);
theDG.DataSource = theDV;
theDG.DataBind();

//添加响应鼠标移动的代码行
MouseMoveOnDataGrid(theDG);

//为导航文本赋值
CommonService.PageNavigatorText(theDG, PreviousText, NextText, PageInfo);
}
else if (thePage.Request.Form["__EVENTTARGET"].ToString() == NextText.ID)
{
//转到下一页
theDG.CurrentPageIndex ++;
theDT = (DataTable)thePage.Session[SessionName];
theDV = new DataView(theDT);
theDG.DataSource = theDV;
theDG.DataBind();

//添加响应鼠标移动的代码行
MouseMoveOnDataGrid(theDG);

//为导航文本赋值
CommonService.PageNavigatorText(theDG, PreviousText, NextText, PageInfo);
}
else
{
}
return true;
}
catch(Exception e)
{
LogService.Write ("PageNavigate(System.Web.UI.Page thePage, DataGrid theDG, string SessionName, Label PreviousText, Label NextText, Label PageInfo)");
LogService.Write ("响应DataGrid控件页面索引改变的方法发生错误。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将DataGrid定位到特定的索引页上
/// </summary>
/// <param name="thePage">调用此方法的页面对象,建议使用this关键字</param>
/// <param name="theDG">被定位的DataGrid对象</param>
/// <param name="SessionName">用于和服务器进行交互的Session名称,建议使用"Data"和"Data1"两者中的一个</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool LocationDataGrid(System.Web.UI.Page thePage, System.Web.UI.WebControls.DataGrid theDG, string SessionName)
{
System.Data.DataTable theDT;
System.Data.DataView theDV;
int PageIndex;

try
{
try
{
PageIndex = int.Parse(thePage.Request.QueryString["PageIndex"]) - 1;
}
catch
{
return true;
}
if(PageIndex >= theDG.PageCount)
{
theDG.CurrentPageIndex = theDG.PageCount - 1;
}
else
{
theDG.CurrentPageIndex = PageIndex;
}
theDT = (DataTable)thePage.Session[SessionName];
theDV = new DataView(theDT);
theDG.DataSource = theDV;
theDG.DataBind();

//添加响应鼠标移动的代码行
MouseMoveOnDataGrid(theDG);

return true;
}
catch(Exception e)
{
//不用定位
LogService.Write ("LocationDataGrid(System.Web.UI.Page thePage, DataGrid theDG, string SessionName)");
LogService.Write ("在将DataGrid定位到特定的索引页上时发生错误。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************




/// **************************************************************************
/// BEIGIN
/// <summary>
/// 为DataGrid添加响应鼠标移动的代码
/// </summary>
/// <param name="theDG">被添加鼠标移动响应代码的DataGrid控件</param>
/// **************************************************************************
public static void MouseMoveOnDataGrid(System.Web.UI.WebControls.DataGrid theDG)
{
for (int i=0; i<theDG.Items.Count; i++)
{
theDG.Items[i].Attributes["onMouseOver"] = "javascript:this.bgColor='LemonChiffon'; ";
theDG.Items[i].Attributes["onMouseOut"] = "javascript:this.bgColor='white';";
theDG.Items[i].Attributes["ondblclick"] = "javascript:Select(this);";
//theDG.Items[i].Attributes["style"] = "cursor:hand";
}
}
/// **************************************************************************
/// END
/// **************************************************************************









/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据不同的删除方法进行不同的调用,对选中的数据进行删除(二期老版本)
/// </summary>
/// <param name="thePage">调用此方法的页面对象</param>
/// <param name="theDG">存储数据的DataGrid控件对象</param>
/// <param name="sql">删除之后重新绑定数据时所用的SQL语句,用ViewState["sql"].ToString()作为参数即可</param>
/// <param name="SessionName">用于和服务器进行交互的Session名称,建议使用"Data"和"Data1"两者中的一个</param>
/// <param name="CheckBoxName">存储选中标志的CheckBox控件的ID</param>
/// <param name="DataTypes">主关键字列表的数据类型组成的字符型数组,一定要按删除方法的参数的先后顺序排列</param>
/// <param name="Pk">存储主关键字的Hidden控件对象名组成的字符型数组,一定要按删除方法的参数的先后顺序排列</param>
/// <param name="ClassName">定义删除方法的类名称(需要给出完整路径)</param>
/// <param name="MethodName">删除方法的名称</param>
/// <param name="PathLevel">出错页面与当前页面的相对路径关系</param>
/// <param name="ErrorMessage">出错信息文本</param>
/// <returns>布尔型返回值,成功执行返回true,发生错误返回false</returns>
/// **************************************************************************
public static bool DelSelectRecord( System.Web.UI.Page thePage,
System.Web.UI.WebControls.DataGrid theDG,
string sql,
string SessionName,
string CheckBoxName,
string[] DataTypes,
string[] Pk,
string ClassName,
string MethodName,
int PathLevel,
string ErrorMessage)
{
//生成错误页面的路径
string path = "";

//获取当前的流程ID(FlowId)
string FlowId = "";

for(int k=0; k<PathLevel; k++)
{
path = path + "../";
}

//打开数据库连接
SqlConnection SqlCn = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());
SqlCn.Open();

try
{
//开始事务
//SqlTransaction SqlTrans = SqlCn.BeginTransaction();
//声明存储主关键字的变量
object[] obj = new object[DataTypes.Length];

//对本页上DataGrid的所有行进行遍历
for (int i=0; i<theDG.Items.Count; i++)
{
//将当前行赋值给一个DataGridItem对象
DataGridItem _item = theDG.Items[i];

//判断当前行上的CheckBox控件赋值给一个CheckBox对象
CheckBox CheckFlag = (CheckBox)_item.FindControl(CheckBoxName);

//判断当前行上的复选框是否被选中,如果被选中则进行删除处理,否则不予处理
if(CheckFlag.Checked == true)
{
//获取关键字的值,逐个加入对象数组obj
for (int j=0; j<Pk.Length; j++)
{
obj[j] = ((System.Web.UI.HtmlControls.HtmlInputHidden)_item.FindControl(Pk[j].ToString())).Value; //取各项主关键字
}

//调用删除方法进行删除处理,如果没有成功删除则回滚事务并进入错误页面
if(Reflection(ClassName, MethodName, DataTypes, obj, SqlCn) == false)
{
//SqlTrans.Rollback();
//path = path + "publics/Error.aspx?errmsg=" + ErrorMessage;
//定向到错误页面
//thePage.Response.Redirect(path);
//打开错误信息提示页面
Prompt.PromptError(thePage, ErrorMessage);
return false;
}
}
}

//提交数据库修改
//SqlTrans.Commit();

//重新绑定DataGrid控件
if(CommonService.BindDataGrid(thePage,sql,theDG,SessionName,true) == false)
{
//打开错误信息提示页面
Prompt.PromptError(thePage, "已经成功删除选定的数据,但在重新绑定数据时发生错误。");
return false;
}
else
{
//判断此记录是否在某工作流中
FlowId = thePage.Request.QueryString["flowid"];
//LogService.Write("现在要删除的流程ID:" + FlowId);
if (FlowId != null)
{
WorkflowMgr wMgr = new WorkflowMgr();
wMgr.DelMessage(FlowId);
thePage.Response.Write("<script>");
thePage.Response.Write("window.parent.refreshOpener();");
thePage.Response.Write("window.parent.close();");
thePage.Response.Write("</script>");
}
}
return true;
}
catch(Exception e)
{
//打开错误信息提示页面
Prompt.PromptError(thePage, ErrorMessage);
LogService.Write(e.Message);
return false;
}
finally
{
SqlCn.Close();
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据不同的情况调用不同的删除方法(二期老版本)
/// </summary>
/// <param name="ClassName">定义该删除方法的类名</param>
/// <param name="MethodName">删除方法名</param>
/// <param name="DataType">主关键字字段数据类型组成的数组</param>
/// <param name="pk">主关键字字段组成的数组</param>
/// **************************************************************************
public static bool Reflection(string ClassName, string MethodName, string[] DataTypes, object[] pk, SqlConnection SqlCn)
{
try
{
Assembly[] asm = AppDomain.CurrentDomain.GetAssemblies();
Type t=null;
int i=0;
do
{
t = asm[i].GetType(ClassName);
i++;
} while (t == null && i<asm.Length);

object obj = Activator.CreateInstance(t);

//将传入的数据类型字符串转化为数据类型数组
Type[] types = ConvertDataType(SqlCn, DataTypes);
//根据方法名和数据类型数组获取方法
MethodInfo m = t.GetMethod(MethodName,types);
//根据数据类型转化数据
object[] aryObj = ConvertData(SqlCn, DataTypes, pk);
//如果转化成功则调用查找到的方法执行
if (aryObj == null)
{
LogService.Write("public static bool reflection(string ClassName, string MethodName, string[] DataType, object[] pk)");
LogService.Write("对主关键字进行特定数据类型转换的操作不成功。");
return false;
}
else
{
object result = m.Invoke(obj,aryObj);
return (bool)result;
}
}
catch(Exception e)
{
LogService.Write("public static bool Reflection(string ClassName, string MethodName, string[] DataTypes, object[] pk)");
LogService.Write("反射函数执行失败。ClassName:" + ClassName + "; MethodName:" + MethodName);
LogService.Write(e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将对象数组按照给定的数据类型进行转换(二期老版本)
/// </summary>
/// <param name="DataType">对象数组对应的数据类型数组</param>
/// <param name="pk">主关键字字段组成的数组</param>
/// **************************************************************************
/// BEIGIN
/// <returns>返回转化后的对象数组</returns>
public static object[] ConvertData(SqlConnection SqlCn, string[] DataType, object[] pk)
{
try
{
object[] obj = new object[DataType.Length + 1];
obj[0] = SqlCn;

for(int i=0; i<DataType.Length; i++)
{
if (DataType[i].ToLower() == "int") //整型
{
obj[i+1] = int.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "double") //双精度浮点型
{
obj[i+1] = double.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "datetime") //日期型
{
obj[i+1] = System.DateTime.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "float") //单精度浮点型
{
obj[i+1] = float.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "decimal") //十进制小数型
{
obj[i+1] = decimal.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "long") //长整型
{
obj[i+1] = long.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "short") //短整型
{
obj[i+1] = short.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "bool") //布尔型
{
obj[i+1] = bool.Parse(pk[i].ToString());
}
else //不处理
{
obj[i+1] = pk[i].ToString();
}
}
return obj;
}
catch(Exception e)
{
LogService.Write("public static void ConvertDataType(SqlConnection SqlCn, string[] DataType, object[] pk)");
LogService.Write(e.Message);
return null;
}

}
/// **************************************************************************
/// END
/// **************************************************************************





/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将数据类型名称数组转化为数据类型数组(二期老版本)
/// </summary>
/// <param name="DataTypes">数据类型名称数组</param>
/// <returns></returns>
/// **************************************************************************
public static Type[] ConvertDataType(SqlConnection SqlCn, string[] DataTypes)
{
try
{
Type[] types = new Type[DataTypes.Length + 1];
types[0] = typeof(SqlConnection);
for(int i=0; i<DataTypes.Length; i++)
{
if(DataTypes[i]=="int")
{
types[i+1] = typeof(int);
}
else if(DataTypes[i]=="string")
{
types[i+1] = typeof(string);
}
else if(DataTypes[i]=="float")
{
types[i+1] = typeof(float);
}
else if(DataTypes[i]=="long")
{
types[i+1] = typeof(long);
}
else if(DataTypes[i]=="short")
{
types[i+1] = typeof(short);
}
else if(DataTypes[i]=="bool")
{
types[i+1] = typeof(bool);
}
else if(DataTypes[i]=="decimal")
{
types[i+1] = typeof(decimal);
}
else if(DataTypes[i]=="double")
{
types[i+1] = typeof(double);
}
else if(DataTypes[i]=="DateTime")
{
types[i+1] = typeof(DateTime);
}
else
{
return null;
}
}
return types;
}
catch(Exception e)
{
LogService.Write("public static Type[] ConvertDataType(SqlConnection SqlCn, string[] DataTypes)");
LogService.Write(e.Message);
return null;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据不同的删除方法进行不同的调用,对选中的数据进行删除(三期新版本)
/// </summary>
/// <param name="thePage">调用此方法的页面对象</param>
/// <param name="theDG">存储数据的DataGrid控件对象</param>
/// <param name="sql">删除之后重新绑定数据时所用的SQL语句,用ViewState["sql"].ToString()作为参数即可</param>
/// <param name="SessionName">用于和服务器进行交互的Session名称,建议使用"Data"和"Data1"两者中的一个</param>
/// <param name="CheckBoxName">存储选中标志的CheckBox控件的ID</param>
/// <param name="DataTypes">主关键字列表的数据类型组成的字符型数组,一定要按删除方法的参数的先后顺序排列</param>
/// <param name="Pk">存储主关键字的Hidden控件对象名组成的字符型数组,一定要按删除方法的参数的先后顺序排列</param>
/// <param name="ClassName">定义删除方法的类名称(需要给出完整路径)</param>
/// <param name="MethodName">删除方法的名称</param>
/// <param name="ErrorMessage">出错信息文本</param>
/// <returns>布尔型返回值,成功执行返回true,发生错误返回false</returns>
/// **************************************************************************
public static bool DelSelectRecord( System.Web.UI.Page thePage,
System.Web.UI.WebControls.DataGrid theDG,
string sql,
string SessionName,
string CheckBoxName,
string[] DataTypes,
string[] Pk,
string ClassName,
string MethodName,
string ErrorMessage)
{
//获取当前的流程ID(FlowId)
string FlowId = "";

//打开数据库连接
SqlConnection SqlCn = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());
SqlCn.Open();
SqlCommand cmd = SqlCn.CreateCommand();

try
{
//开始事务
SqlTransaction SqlTrans = SqlCn.BeginTransaction();
cmd.Transaction = SqlTrans;

//声明存储主关键字的变量
object[] obj = new object[DataTypes.Length];

//对本页上DataGrid的所有行进行遍历
for (int i=0; i<theDG.Items.Count; i++)
{
//将当前行赋值给一个DataGridItem对象
DataGridItem _item = theDG.Items[i];

//判断当前行上的CheckBox控件赋值给一个CheckBox对象
CheckBox CheckFlag = (CheckBox)_item.FindControl(CheckBoxName);

//判断当前行上的复选框是否被选中,如果被选中则进行删除处理,否则不予处理
if(CheckFlag.Checked == true)
{
//获取关键字的值,逐个加入对象数组obj
for (int j=0; j<Pk.Length; j++)
{
obj[j] = ((System.Web.UI.HtmlControls.HtmlInputHidden)_item.FindControl(Pk[j].ToString())).Value; //取各项主关键字
}

//调用删除方法进行删除处理,如果没有成功删除则回滚事务并打开错误提示页面
if(Reflection(ClassName, MethodName, DataTypes, obj, cmd) == false)
{
SqlTrans.Rollback();

//打开错误信息提示页面
Prompt.PromptError(thePage, ErrorMessage);
return false;
}
}
}

//提交数据库修改
SqlTrans.Commit();

//重新绑定DataGrid控件
if(CommonService.BindDataGrid(thePage,sql,theDG,SessionName,true) == false)
{
//打开错误信息提示页面
Prompt.PromptError(thePage, "已经成功删除选定的数据,但在重新绑定数据时发生错误。");
return false;
}
else
{
//判断此记录是否在某工作流中
FlowId = thePage.Request.QueryString["flowid"];
//LogService.Write("现在要删除的流程ID:" + FlowId);
if (FlowId != null)
{
WorkflowMgr wMgr = new WorkflowMgr();
wMgr.DelMessage(FlowId);
thePage.Response.Write("<script>");
thePage.Response.Write("window.parent.refreshOpener();");
thePage.Response.Write("window.parent.close();");
thePage.Response.Write("</script>");
}
}
return true;
}
catch(Exception e)
{
//打开错误信息提示页面
Prompt.PromptError(thePage, ErrorMessage);
LogService.Write(e.Message);
return false;
}
finally
{
SqlCn.Close();
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据不同的情况调用不同的删除方法(三期新版本)
/// </summary>
/// <param name="ClassName">定义该删除方法的类名</param>
/// <param name="MethodName">删除方法名</param>
/// <param name="DataType">主关键字字段数据类型组成的数组</param>
/// <param name="pk">主关键字字段组成的数组</param>
/// <param name="SqlCmd">SqlCommand对象</param>
/// <returns>布尔型返回值,成功执行返回true,发生错误返回false</returns>
/// **************************************************************************
public static bool Reflection(string ClassName, string MethodName, string[] DataTypes, object[] pk, SqlCommand SqlCmd)
{
//删除SqlCommand对象的所有参数
SqlCmd.Parameters.Clear();

try
{
Assembly[] asm = AppDomain.CurrentDomain.GetAssemblies();
Type t=null;
int i=0;
do
{
t = asm[i].GetType(ClassName);
i++;
} while (t == null && i<asm.Length);

object obj = Activator.CreateInstance(t);

//将传入的数据类型字符串转化为数据类型数组
Type[] types = ConvertDataType(SqlCmd, DataTypes);
//根据方法名和数据类型数组获取方法
MethodInfo m = t.GetMethod(MethodName,types);
//根据数据类型转化数据
object[] aryObj = ConvertData(SqlCmd, DataTypes, pk);
//如果转化成功则调用查找到的方法执行
if (aryObj == null)
{
LogService.Write("public static bool reflection(string ClassName, string MethodName, string[] DataType, object[] pk)");
LogService.Write("对主关键字进行特定数据类型转换的操作不成功。");
return false;
}
else
{
object result = m.Invoke(obj,aryObj);
return (bool)result;
}
}
catch(Exception e)
{
LogService.Write("public static bool Reflection(string ClassName, string MethodName, string[] DataTypes, object[] pk)");
LogService.Write("反射函数执行失败。ClassName:" + ClassName + "; MethodName:" + MethodName);
LogService.Write(e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************



/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将对象数组按照给定的数据类型进行转换(三期新版本)
/// </summary>
/// <param name="SqlCmd">SqlCommand对象</param>
/// <param name="DataType">对象数组对应的数据类型数组</param>
/// <param name="pk">主关键字字段组成的数组</param>
/// <returns>返回转化后的对象数组</returns>
/// **************************************************************************
public static object[] ConvertData(SqlCommand SqlCmd, string[] DataType, object[] pk)
{
try
{
object[] obj = new object[DataType.Length + 1];
obj[0] = SqlCmd;

for(int i=0; i<DataType.Length; i++)
{
if (DataType[i].ToLower() == "int") //整型
{
obj[i+1] = int.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "double") //双精度浮点型
{
obj[i+1] = double.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "datetime") //日期型
{
obj[i+1] = System.DateTime.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "float") //单精度浮点型
{
obj[i+1] = float.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "decimal") //十进制小数型
{
obj[i+1] = decimal.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "long") //长整型
{
obj[i+1] = long.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "short") //短整型
{
obj[i+1] = short.Parse(pk[i].ToString());
}
else if(DataType[i].ToLower() == "bool") //布尔型
{
obj[i+1] = bool.Parse(pk[i].ToString());
}
else //不处理
{
obj[i+1] = pk[i].ToString();
}
}
return obj;
}
catch(Exception e)
{
LogService.Write("public static void ConvertDataType(SqlConnection SqlCmd, string[] DataType, object[] pk)");
LogService.Write(e.Message);
return null;
}

}
/// **************************************************************************
/// END
/// **************************************************************************





/// **************************************************************************
/// BEIGIN
/// <summary>
/// 将数据类型名称数组转化为数据类型数组(三期新版本)
/// </summary>
/// <param name="SqlCmd">SqlCommand对象</param>
/// <param name="DataTypes">数据类型名称数组</param>
/// <returns></returns>
/// **************************************************************************
public static Type[] ConvertDataType(SqlCommand SqlCmd, string[] DataTypes)
{
try
{
Type[] types = new Type[DataTypes.Length + 1];
types[0] = typeof(SqlCommand);
for(int i=0; i<DataTypes.Length; i++)
{
if(DataTypes[i]=="int")
{
types[i+1] = typeof(int);
}
else if(DataTypes[i]=="string")
{
types[i+1] = typeof(string);
}
else if(DataTypes[i]=="float")
{
types[i+1] = typeof(float);
}
else if(DataTypes[i]=="long")
{
types[i+1] = typeof(long);
}
else if(DataTypes[i]=="short")
{
types[i+1] = typeof(short);
}
else if(DataTypes[i]=="bool")
{
types[i+1] = typeof(bool);
}
else if(DataTypes[i]=="decimal")
{
types[i+1] = typeof(decimal);
}
else if(DataTypes[i]=="double")
{
types[i+1] = typeof(double);
}
else if(DataTypes[i]=="DateTime")
{
types[i+1] = typeof(DateTime);
}
else
{
return null;
}
}
return types;
}
catch(Exception e)
{
LogService.Write("public static Type[] ConvertDataType(SqlCommand SqlCmd, string[] DataTypes)");
LogService.Write(e.Message);
return null;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
//以下是对子窗口的处理方法集
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 通过父页面的URL获得主关键字
/// </summary>
/// <param name="thePage">调用此方法的Web页面对象</param>
/// <returns>主关键字数组</returns>
/// **************************************************************************
public static string[] GetPks(System.Web.UI.Page thePage)
{
//获得父页面的完整URL并通过“|”进行分解
string[] pks = thePage.Request.QueryString["ParentURL"].Split('|');
//将分解后的字符串进行处理,获得主关键字数组
for (int i=0; i<pks.Length; i++)
{
pks[i] = pks[i].Substring(pks[i].LastIndexOf("=") + 1);
}
return pks;
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 通过页面的URL获得主关键字
/// </summary>
/// <param name="thePage">调用此方法的Web页面对象</param>
/// <returns>主关键字数组</returns>
/// **************************************************************************
public static string[] GetCurrentPks(System.Web.UI.Page thePage)
{
//把页面的完整URL通过“&”进行分解
string[] original_pks = thePage.Request.RawUrl.Split('&');
string[] pks = new string[original_pks.Length - 2];
//将分解后的字符串进行处理,获得主关键字数组
for (int i=2; i<original_pks.Length; i++)
{
pks[i-2] = original_pks[i].Substring(original_pks[i].LastIndexOf("=") + 1);
}
return pks;
}
/// **************************************************************************
/// END
/// **************************************************************************



/// **************************************************************************
/// BEIGIN
/// <summary>
/// 在弹出窗口中生成返回时父页面的完整URL
/// </summary>
/// <param name="thePage">弹出窗口的Web页面对象</param>
/// <returns>父页面的完整URL</returns>
/// **************************************************************************
public static string CreatReturnURL(System.Web.UI.Page thePage)
{
//获取父页面的当前页索引
string PageIndex = thePage.Request.QueryString["PageIndex"];
//获取父页面的URL
string ParentURL = thePage.Request.QueryString["ParentURL"];

//将父页面的URL进行还原
ParentURL = ParentURL.Replace("|","&");

//检查父页面的URL中是否含有页面信息,分别进行不同的生成处理
if(ParentURL.LastIndexOf("PageIndex") == -1)
{
string LinkChar;
if (ParentURL.IndexOf("?") != -1)
{
LinkChar = "&";
}
else
{
LinkChar = "?";
}
return(ParentURL + LinkChar + "PageIndex=" + PageIndex);
}
else
{
return(ParentURL.Substring(0,ParentURL.LastIndexOf("=") + 1) + PageIndex);
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 关闭窗口页面,返回父页面
/// </summary>
/// <param name="thePage">子页面的Page对象</param>
/// **************************************************************************
public static void Return(System.Web.UI.Page thePage)
{
string ReturnURL;
ReturnURL = CommonService.CreatReturnURL(thePage);
thePage.Response.Write("<script language=javascript>window.opener.location='" + ReturnURL + "';window.close();</script>");
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 返回特定的父页面
/// </summary>
/// <param name="thePage">子页面的Page对象</param>
/// <param name="ReturnURL">父页面的URL,如果参数为null,表示由系统来取得父页面的URL</param>
/// <param name="Flag">是否关闭子窗口的开关标记,true表示关闭子窗口,false表示不关闭子窗口</param>
/// **************************************************************************
public static void Return(System.Web.UI.Page thePage, string ReturnURL, bool Flag)
{
string script;
if(ReturnURL == null)
{
ReturnURL = CommonService.CreatReturnURL(thePage);
}
script = "<script language=javascript>window.opener.location='" + ReturnURL + "';";
if(Flag == true)
{
script = script + "window.close();";
}
script =script + "</script>";
thePage.Response.Write(script);
}
/// **************************************************************************
/// END
/// **************************************************************************


//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
//以下是对下拉列表框的处理方法集
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据查询语句对下拉列表框控件与数据记录集进行绑定<br/>
/// 注意事项:ValueField和TextField必须是SqlStatement查询结果集中的两个字段
/// </summary>
/// <param name="theDDL">DropDownList控件对象</param>
/// <param name="SqlStatement">检索数据的SQL语句</param>
/// <param name="ValueField">DropDownList的值域</param>
/// <param name="TextField">DropDownList的文本域</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool BindDropDownList( System.Web.UI.WebControls.DropDownList theDDL,
string SqlStatement,
string ValueField,
string TextField)
{
//声明并创建一个SqlConnection对象的实例
SqlConnection Connection = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());

try
{
//声明并创建一个SqlCommand对象的实例
System.Data.SqlClient.SqlCommand SqlCmd = Connection.CreateCommand();

//给SqlCommand对象指定到某个SQL语句
SqlCmd.CommandText = SqlStatement;

//打开数据库连接对象
Connection.Open();

//声明并使用SqlCommand的ExecuteReader方法创建一个SqlDataReader对象的实例
System.Data.SqlClient.SqlDataReader SqlDR = SqlCmd.ExecuteReader();

//将查询结果集与下拉列表框控件进行绑定
theDDL.DataSource = SqlDR;
theDDL.DataValueField = ValueField;
theDDL.DataTextField = TextField;
theDDL.DataBind();

//关闭数据库连接对象
Connection.Close();
return true;
}
catch(Exception e)
{
if(Connection.State.ToString() == "Open") Connection.Close();
LogService.Write ("BindDropDownList(System.Web.UI.WebControls.DropDownList theDDL,string SqlStatement,string ValueField,string TextField)");
LogService.Write ("在根据查询语句对下拉列表框控件与数据记录集进行绑定时发生错误。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************





/// **************************************************************************
/// BEIGIN
/// <summary>
/// 对DropDownList控件中某个特定的值进行定位
/// </summary>
/// <param name="theDDL">下拉列表控件对象(传递值)</param>
/// <param name="selectvalue">要定位的项的Value值(传递值)</param>
/// <returns>布尔型返回值,执行成功返回true,执行失败返回false,并将错误信息写入错误日志</returns>
/// **************************************************************************
public static bool LocateDropDownList(System.Web.UI.WebControls.DropDownList theDDL, string SelectValue)
{
try
{
for(int i=0; i<theDDL.Items.Count; i++)
{
if (theDDL.Items[i].Value == SelectValue)
{
theDDL.SelectedIndex = i;
return true;
}
}
LogService.Write ("LocateDropDownList(" + theDDL.ID + ", " + SelectValue +")");
LogService.Write ("没有在DropDownList中查找到所要定位的特定值。");
return false;
}
catch(Exception e)
{
LogService.Write ("LocateDropDownList(System.Web.UI.WebControls.DropDownList theDDL, string SelectValue)");
LogService.Write ("在对DropDownList中的特定值进行定位时发生异常。");
LogService.Write (e.Message);
return false;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------
//以下是数据库通用查询结果方法集
//---------------------------------------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------------------------------------


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据SqlCommand对象查询执行数据库查询并返回结果
/// </summary>
/// <param name="sql">执行数据库查询的查询结果</param>
/// <param name="i">为1时表示执行ExecuteNonQuery(),为2时表示执行ExecuteReader(),为3时表示执行ExecuteScalar(),其它情况返回null,发生异常也返回null</param>
/// <returns>查询结果</returns>
/// **************************************************************************
public static object ExecQuery(SqlCommand SqlCmd, int i)
{
object result;

try
{
//打开数据库连接对象
SqlCmd.Connection.Open();

if(i == 1)
{
//执行数据库查询,成功后返回true
SqlCmd.ExecuteNonQuery();
result = true;
}
else if(i == 2)
{
//声明并使用SqlCommand的ExecuteReader方法创建一个SqlDataReader对象的实例,返回结果集
System.Data.SqlClient.SqlDataReader SqlDR = SqlCmd.ExecuteReader();
result = SqlDR;
}
else if(i == 3)
{
//执行数据库查询返回查询结果
result = SqlCmd.ExecuteScalar();
}
else
{
result = null;
}
SqlCmd.Connection.Close();
return result;
}
catch(Exception e)
{
if(SqlCmd.Connection.State.ToString() == "Open") SqlCmd.Connection.Close();
LogService.Write ("ExecQuery(SqlCommand SqlCmd, int i)");
LogService.Write ("在执行数据库查询时发生错误。");
LogService.Write (e.Message);
return null;
}
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据SQL语句查询执行数据库查询并返回结果
/// </summary>
/// <param name="sql">执行数据库查询的查询结果</param>
/// <param name="i">为1时表示执行ExecuteNonQuery(),为2时表示执行ExecuteReader(),为3时表示执行ExecuteScalar(),其它情况返回null,发生异常也返回null</param>
/// <returns>查询结果</returns>
/// **************************************************************************
public static object ExecQuery(string sql, int i)
{
//声明并创建一个SqlConnection对象的实例
SqlConnection Connection = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());

//声明并创建一个SqlCommand对象的实例
System.Data.SqlClient.SqlCommand SqlCmd = Connection.CreateCommand();

//给SqlCommand对象指定到某个SQL语句
SqlCmd.CommandText = sql;

return ExecQuery(SqlCmd, i);
}
/// **************************************************************************
/// END
/// **************************************************************************


/// **************************************************************************
/// BEIGIN
/// <summary>
/// 根据带参数的SQL语句查询执行数据库查询并返回结果
/// </summary>
/// <param name="sql">执行数据库查询的查询结果</param>
/// <param name="i">为1时表示执行ExecuteNonQuery(),为2时表示执行ExecuteReader(),为3时表示执行ExecuteScalar(),其它情况返回null,发生异常也返回null</param>
/// <returns>查询结果</returns>
/// **************************************************************************
public static object ExecQuery(string sql, string[]ParaTypes, string[] ParaNames, object[] ParaValues, int i)
{
//声明并创建一个SqlConnection对象的实例
SqlConnection Connection = new SqlConnection (com.unicafe.common.Configuration.GetDBConnectionString());

//声明并创建一个SqlCommand对象的实例
System.Data.SqlClient.SqlCommand SqlCmd = Connection.CreateCommand();

//给SqlCommand对象指定到某个SQL语句
SqlCmd.CommandText = sql;
SqlCmd.Parameters.Clear();
for(int j=0; j<ParaNames.Length; i++)
{
SqlCmd.Parameters.Add(ParaNames[j], ParaValues[j]);
}

return ExecQuery(SqlCmd, i);
}
/// **************************************************************************
/// END
/// **************************************************************************

}
}

2025-10-27 10:47:02.249 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@2f64f99f; com.huawei.cube.core.env.CubeEnvConfigResolver@16c1d11; com.huawei.foundation.commons.config.DefaultConfigResolver@123d0816 2025-10-27 10:47:02.324 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-10-27 10:47:03.757 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [uat] 2025-10-27 10:47:03.785 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-10-27 10:47:04.380 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.45] incident reporter is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentPinpointTraceIdReporter,com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter 2025-10-27 10:47:04.423 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.66] incident reporter predicate is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentReportRatePredicate 2025-10-27 10:47:04.787 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [uat] 2025-10-27 10:47:04.806 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = true , regex = true, sensitive= true, exception=true 2025-10-27 10:47:05.279 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.91] HAE config center is enabled 2025-10-27 10:47:05.316 [main] INFO [][com.huawei.foundation.commons.utils.VmIPUtils.101] current is docker env 2025-10-27 10:47:05.364 [main] INFO [][com.huawei.cube.rt.hae.crypto.HuaweiSecurity2CryptoImpl.228] root key file path is /opt/security/CBG_IT_TREE/rbitreeservice/kwe_uat/keys/rootkeys/ 2025-10-27 10:47:06.502 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [http://oauth2-beta.huawei.com] 2025-10-27 10:47:06.504 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'haeSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:06.984 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpService.47] begin to connect to hae config center http://appconfig-beta.huawei.com/ConfigCenter/services/saasConfigcenterGetConfig?application_id=com.huawei.cbg.it.tree&sub_application_id=rbitreeservice&environment=kwe_uat&region=cn-west-hcd-1&version=1.0&client_ip_port=7.186.15.36:55988 using sgov 2025-10-27 10:47:07.551 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=hae-config-center 2025-10-27 10:47:07.551 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=hae-config-center 2025-10-27 10:47:07.556 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'hae-config-center' have been created successfully! 2025-10-27 10:47:07.983 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpRequestUtils.86] success to get config from com.huawei.cbg.it.tree:rbitreeservice in env: kwe_uat, region: cn-west-hcd-1 2025-10-27 10:47:08.042 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.76] begin to parse hae config map 2025-10-27 10:47:08.043 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.207] success to parse hae app config 16 2025-10-27 10:47:08.043 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.215] begin to parse hae j2c config map 13 2025-10-27 10:47:08.102 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c security_publickey 2025-10-27 10:47:08.173 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c clouddragonKey 2025-10-27 10:47:08.232 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovTokenPro 2025-10-27 10:47:08.298 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c iam.token.appSecret 2025-10-27 10:47:08.356 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_redis 2025-10-27 10:47:08.418 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c cubeSecret 2025-10-27 10:47:08.453 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Ak 2025-10-27 10:47:08.481 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovToken 2025-10-27 10:47:08.509 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c pbi_systemId 2025-10-27 10:47:08.536 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_tree_uat 2025-10-27 10:47:08.568 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c application.Token.pro 2025-10-27 10:47:08.593 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c appReqProKey 2025-10-27 10:47:08.618 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Sk 2025-10-27 10:47:08.619 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for listen_port size= 0 2025-10-27 10:47:08.620 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for datasource size= 1 2025-10-27 10:47:08.649 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.171] success to decrypt datasource for prefix 1 2025-10-27 10:47:08.650 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for client_strategy size= 0 2025-10-27 10:47:08.650 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for message size= 0 2025-10-27 10:47:08.650 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.103] success to parse hae config properties 98 2025-10-27 10:47:08.651 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigPropertySource.175] HAE config is loaded to spring environment! 2025-10-27 10:47:08.651 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.94] success to get hae config and cost 3371ms 2025-10-27 10:47:08.943 [background-preinit] INFO [][org.hibernate.validator.internal.util.Version.21] HV000001: Hibernate Validator 8.0.2.Final 2025-10-27 10:47:09.504 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.EnvironmentConfigLoader 2025-10-27 10:47:09.671 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commandClient 2025-10-27 10:47:09.671 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commandClient 2025-10-27 10:47:09.672 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commandClient' have been created successfully! 2025-10-27 10:47:09.781 [main] INFO [][c.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader.49] The config from cube center [com.huawei.cbg.it.tree:rbitreeservice:uat] is null 2025-10-27 10:47:09.782 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader 2025-10-27 10:47:09.785 [main] INFO [][com.huawei.foundation.commons.props.SystemEnvUtils.69] active environment is not changed 2025-10-27 10:47:09.785 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.172] CurrentApplicationContext is set 2025-10-27 10:47:09.868 [main] INFO [][com.huawei.cbgit.tree.MainApplication.53] Starting MainApplication v1.0.0-SNAPSHOT using Java 21.0.7 with PID 371 (/rbi-tree-app-1.0.0-SNAPSHOT/libs/rbi-tree-app-1.0.0-SNAPSHOT.jar started by clouder in /rbi-tree-app-1.0.0-SNAPSHOT/bin) 2025-10-27 10:47:09.869 [main] INFO [][com.huawei.cbgit.tree.MainApplication.658] The following 1 profile is active: \"uat\" 2025-10-27 10:47:11.455 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.59] foundation.autoconfigure.excludes is org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-10-27 10:47:11.456 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.63] foundation.autoconfigure.includes is com.huawei.cbgit.tree.MainApplication,com.huawei.cbgit.tree.* 2025-10-27 10:47:11.834 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.118] configurations are excluded: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-10-27 10:47:14.122 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.audit.writer.cs in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@795faad cost 10ms 2025-10-27 10:47:14.123 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.audit.writer.cs cost 1ms 2025-10-27 10:47:14.534 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.excel.core.task.cs in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@795faad cost 6ms 2025-10-27 10:47:14.535 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.excel.core.task.cs cost 0ms 2025-10-27 10:47:14.908 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.rt.cs.client in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@795faad cost 7ms 2025-10-27 10:47:14.909 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.rt.cs.client cost 0ms 2025-10-27 10:47:16.514 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.296] Multiple Spring Data modules found, entering strict repository configuration mode 2025-10-27 10:47:16.530 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.147] Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-10-27 10:47:16.756 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.215] Finished Spring Data repository scanning in 131 ms. Found 0 Redis repository interfaces. 2025-10-27 10:47:17.235 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.181] CurrentApplicationContext is not changed 2025-10-27 10:47:17.277 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemAppList is register*****#*#***** 2025-10-27 10:47:17.279 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemModuleList is register*****#*#***** 2025-10-27 10:47:17.279 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemProductList is register*****#*#***** 2025-10-27 10:47:17.280 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSoftwareUnit is register*****#*#***** 2025-10-27 10:47:17.280 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSubList is register*****#*#***** 2025-10-27 10:47:17.281 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemWarehouseList is register*****#*#***** 2025-10-27 10:47:17.281 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeEmployee is register*****#*#***** 2025-10-27 10:47:17.281 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeWxEmployee is register*****#*#***** 2025-10-27 10:47:17.288 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelImportSupport.employeeBaseInfo is register*****#*#***** 2025-10-27 10:47:17.562 [main] INFO [][com.huawei.cube.rt.datasource.DefaultDataSourceFactory.143] The primary datasource is 'dataSource' 2025-10-27 10:47:17.602 [main] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSourceRegistry.36] success to register*****#*#*****ubeDataSource : dataSource 2025-10-27 10:47:18.656 [DruidDataSourceInit-dataSource-1] INFO [][com.alibaba.druid.pool.DruidDataSource.1002] {dataSource-1,dataSource} inited 2025-10-27 10:47:18.657 [DruidDataSourceInit-dataSource-1] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSource.122] The dataSource 'dataSource' init successfully! cost '868'ms 2025-10-27 10:47:18.749 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.97] create mapping factory cost 165ms 2025-10-27 10:47:20.727 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.214] datasource dataSource type handlers package is com.huawei.cube.das.handler.date,com.huawei.cube.das.handler.bool 2025-10-27 10:47:20.862 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.185] 4 mybatis interceptors are loaded to datasource dataSource : class com.huawei.cube.das.interceptor.LongtimeSqlInterceptor,class com.huawei.cube.das.interceptor.MybatisPageableInterceptor,class com.huawei.cube.privilege.program.DataPrivilegeInterceptor,class com.huawei.cube.das.interceptor.OptimisticLockerInterceptor 2025-10-27 10:47:21.468 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.129] [classpath*:/mapper/dynamic/*.xml, classpath*:com.huawei.cbgit.tree.infrastructure.*.xml, classpath*:/mapper/*.xml] : 4 mybatis mapper xml are loaded to dataSource 2025-10-27 10:47:22.063 [main] INFO [][com.huawei.cube.das.core.DefaultCubeDASRegister.166] data source [dataSource] register*****#*#*****se package : com.huawei.cube.audit.writer.database.mapper,com.huawei.cbgit.tree.infrastructure.*,com.huawei.cube.logging.writer.database.mapper,com.huawei.cube.das.sequence.mapper,com.huawei.cube.idempotent.mapper 2025-10-27 10:47:23.314 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.429] Bean 'com.huawei.cube.rt.refresh.ConfigChangeConfiguration' of type [com.huawei.cube.rt.refresh.ConfigChangeConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor] is declared through a non-static factory method on that class; consider declaring it as static instead. 2025-10-27 10:47:23.345 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigRefreshMatcher' of type [com.huawei.cube.rt.refresh.ConfigRefreshMatcher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-10-27 10:47:23.364 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeSpringValueBeanConfigRefresher' of type [com.huawei.cube.rt.refresh.SpringValueBeanConfigRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-10-27 10:47:23.378 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigChangeEventRefresher' of type [com.huawei.cube.rt.refresh.ConfigChangeEventRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-10-27 10:47:24.699 [main] INFO [][o.springframework.boot.web.embedded.tomcat.TomcatWebServer.111] Tomcat initialized with port 8003 (http) 2025-10-27 10:47:25.042 [main] INFO [][org.apache.coyote.http11.Http11NioProtocol.168] Initializing ProtocolHandler [\"http-nio-8003\"] 2025-10-27 10:47:25.074 [main] INFO [][org.apache.catalina.core.StandardService.168] Starting service [Tomcat] 2025-10-27 10:47:25.075 [main] INFO [][org.apache.catalina.core.StandardEngine.168] Starting Servlet engine: [Apache Tomcat/10.1.44] 2025-10-27 10:47:25.238 [main] INFO [][o.a.c.c.C.[Tomcat].[localhost].[/rbi-tree/gateway].168] Initializing Spring embedded WebApplicationContext 2025-10-27 10:47:25.238 [main] INFO [][o.s.b.web.servlet.context.ServletWebServerApplicationContext.301] Root WebApplicationContext: initialization completed in 14996 ms 2025-10-27 10:47:25.519 [main] INFO [][com.huawei.cube.rt.sgov.SgovAuthConfig.172] sgov setSgovAuth*****#*#*****e config center [cloud.sgov.appId, cloud.sgov.token*****#*#***** 2025-10-27 10:47:25.531 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuth*****#*#*****dpoints is: [http://oauth*****#*#***** 2025-10-27 10:47:25.531 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'envSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:25.532 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuth*****#*#*****dpoints is: [http://oauth*****#*#***** 2025-10-27 10:47:25.533 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'defaultSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:25.533 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuth*****#*#*****dpoints is: [https://oauth*****#*#***** 2025-10-27 10:47:25.542 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'proSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-10-27 10:47:25.705 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.50] >>> auth*****#*#*****ter register*****#*#***** 2025-10-27 10:47:25.744 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.61] >>> accountTypeWebFilter register*****#*#***** 2025-10-27 10:47:25.761 [main] INFO [][c.huawei.cube.rt.context.web.RequestContextWebConfiguration.41] >>> requestContextHolderFilter register*****#*#***** 2025-10-27 10:47:26.883 [main] INFO [][org.redisson.Version.43] Redisson 3.51.0 2025-10-27 10:47:28.565 [main] INFO [][org.redisson.connection.ClusterConnectionManager.122] Redis cluster nodes configuration got from 7.193.49.81/7.193.49.81:6379:\n76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 7.193.50.120:6379@12709 master - 0 1761533247149 3 connected 10923-16383\n4dbe4460b63b64d4fc34616d83c45340a9afe6ed 7.193.49.191:6379@13562 slave 76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 0 1761533248149 3 connected\nd14995cad01a7a98829ce3a9c4f7237233d8683f 7.193.49.81:6379@12870 myself,master - 0 1761533245000 1 connected 0-5460\n5ad91d3191eecf8201b757a6899c0f187a628634 7.193.51.7:6379@12467 slave d14995cad01a7a98829ce3a9c4f7237233d8683f 0 1761533246000 1 connected\nf603a93be27c1f5f0c01d2b471c55a04822be8db 7.193.50.91:6379@12430 slave 45d1676d933a3242712d4214a4194fd970bc06dd 0 1761533246000 2 connected\n45d1676d933a3242712d4214a4194fd970bc06dd 7.193.50.85:6379@13880 master - 0 1761533246147 2 connected 5461-10922 2025-10-27 10:47:28.762 [redisson-netty-1-14] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-10-27 10:47:28.842 [redisson-netty-1-26] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-10-27 10:47:28.844 [redisson-netty-1-27] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-10-27 10:47:29.080 [redisson-netty-1-19] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-10-27 10:47:29.085 [redisson-netty-1-24] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-10-27 10:47:29.094 [redisson-netty-1-2] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-10-27 10:47:29.167 [redisson-netty-1-19] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-10-27 10:47:29.168 [redisson-netty-1-20] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-10-27 10:47:29.178 [redisson-netty-1-5] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-10-27 10:47:29.353 [redisson-netty-1-22] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-10-27 10:47:29.353 [redisson-netty-1-20] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-10-27 10:47:29.353 [redisson-netty-1-21] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-10-27 10:47:29.355 [redisson-netty-1-20] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.49.191:6379] added for master: redis://7.193.50.120:6379 slot ranges: [[10923-16383]] 2025-10-27 10:47:29.355 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.50.91:6379] added for master: redis://7.193.50.85:6379 slot ranges: [[5461-10922]] 2025-10-27 10:47:29.355 [redisson-netty-1-21] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.51.7:6379] added for master: redis://7.193.49.81:6379 slot ranges: [[0-5460]] 2025-10-27 10:47:29.356 [redisson-netty-1-20] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.120:6379 added for slot ranges: [[10923-16383]] 2025-10-27 10:47:29.356 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.85:6379 added for slot ranges: [[5461-10922]] 2025-10-27 10:47:29.356 [redisson-netty-1-21] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.49.81:6379 added for slot ranges: [[0-5460]] 2025-10-27 10:47:30.475 [main] INFO [][com.huawei.cube.rt.redis.CubeRedissonClient.66] The redisson client have been created successfully! 2025-10-27 10:47:32.845 [main] INFO [][com.obs.services.internal.utils.RestUtils.103] use Default Dns 2025-10-27 10:47:32.863 [main] INFO [][com.obs.services.AbstractClient.103] Storage|1|HTTP+XML|ObsClient||||2025-10-27 10:47:32|2025-10-27 10:47:32|||0| 2025-10-27 10:47:32.865 [main] WARN [][com.obs.services.AbstractClient.103] [OBS SDK Version=3.25.4];[Endpoint=http://s3-kp-kwe.his-beta.huawei.com:80/];[Access Mode=Path] 2025-10-27 10:47:33.034 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=defaultRestClient 2025-10-27 10:47:33.042 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=defaultRestClient 2025-10-27 10:47:33.042 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'defaultRestClient' have been created successfully! 2025-10-27 10:47:33.072 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commonService 2025-10-27 10:47:33.072 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commonService 2025-10-27 10:47:33.073 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commonService' have been created successfully! 2025-10-27 10:47:33.173 [main] INFO [][com.huawei.cube.rt.gray.discovery.GrayTagConfigReader.80] Gray tag config file path /opt/ads/CBG_IT_TREE/rbitreeservice/kwe_uat/clustertype 2025-10-27 10:47:33.193 [main] INFO [][com.huawei.cube.rt.discovery.ApplicationManager.60] current ipinfo,ip=7.186.15.36,port=55988 2025-10-27 10:47:33.359 [main] INFO [][com.huawei.cube.rt.discovery.eureka.LocalInstanceFactory.77] Setting initial instance status as: STARTING 2025-10-27 10:47:33.402 [main] INFO [][c.huawei.cube.rt.discovery.eureka.handler.JwtClientHandler.44] Eureka jwt verify enabled 2025-10-27 10:47:33.552 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=eurekaClient 2025-10-27 10:47:33.552 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=eurekaClient 2025-10-27 10:47:33.553 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'eurekaClient' have been created successfully! 2025-10-27 10:47:34.119 [main] INFO [][com.netflix.discovery.InstanceInfoReplicator.64] InstanceInfoReplicator onDemand update allowed rate per min is 4 2025-10-27 10:47:34.734 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.44] >>> serverNoReadyFilter register*****#*#***** 2025-10-27 10:47:34.739 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.56] >>> inboundAccessLogFilter register*****#*#***** 2025-10-27 10:47:34.742 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.67] >>> CharaterEncodingFilter register*****#*#***** 2025-10-27 10:47:34.744 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.81] >>> headerWriterFilter register*****#*#***** 2025-10-27 10:47:34.932 [main] INFO [][com.huawei.cube.rt.web.xss.XssFilter.107] init XssFilter 2025-10-27 10:47:38.895 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-10-27 10:47:39.718 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-10-27 10:47:40.258 [main] ERROR [][UmpClient.504] start client error org.apache.rocketmq.common.ext.client.MQClientException: CODE: -6 DESC: Connection refused: authorization failed, please check the consumer configuration, appId: com.huawei.cbg.it.tree (pub or sub not matched or not exist in mqs management portal) And enterprise: null ,account: null For more information, please visit the doc, mqs-document at com.huawei.his.mqs.client.AbstractClient.login(AbstractClient.java:566) at com.huawei.his.mqs.client.AbstractClient.authenticateClient(AbstractClient.java:284) at com.huawei.his.mqs.client.AbstractClient.authenticateClient(AbstractClient.java:274) at com.huawei.his.mqs.client.AbstractClient$1.authenticateClient(AbstractClient.java:879) at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl.start(MQClientAPIImpl.java:307) at org.apache.rocketmq.client.ext.impl.factory.MQClientInstance.start(MQClientInstance.java:411) at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.start(DefaultMQPushConsumerImpl.java:917) at org.apache.rocketmq.client.ext.consumer.DefaultMQPushConsumer.start(DefaultMQPushConsumer.java:919) at com.huawei.his.mqs.client.consumer.Consumer.startClient(Consumer.java:369) at com.huawei.his.mqs.client.AbstractClient.start(AbstractClient.java:498) at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:37) at com.huawei.cube.api.mq.MqBaseClient.start(MqBaseClient.java:21) at com.huawei.cbgit.tree.service.assettree.label.LabelUpdateMqConsumerService.start(LabelUpdateMqConsumerService.java:85) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 10:47:40.269 [main] ERROR [][RocketmqClient.155] group: com-huawei-cbg-it-tree_T_devops_TagManagement_label_dev_label_uat persistConsumerOffset exception org.apache.rocketmq.common.ext.client.MQClientException: The consumer service state not OK, START_FAILED See mqs-document for further details. at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.makeSureStateOK(DefaultMQPushConsumerImpl.java:622) at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.persistConsumerOffset(DefaultMQPushConsumerImpl.java:1377) at org.apache.rocketmq.client.ext.impl.consumer.DefaultMQPushConsumerImpl.shutdown(DefaultMQPushConsumerImpl.java:798) at org.apache.rocketmq.client.ext.consumer.DefaultMQPushConsumer.shutdown(DefaultMQPushConsumer.java:934) at com.huawei.his.mqs.client.consumer.Consumer.shutdownClient(Consumer.java:377) at com.huawei.his.mqs.client.AbstractClient.start(AbstractClient.java:507) at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:37) at com.huawei.cube.api.mq.MqBaseClient.start(MqBaseClient.java:21) at com.huawei.cbgit.tree.service.assettree.label.LabelUpdateMqConsumerService.start(LabelUpdateMqConsumerService.java:85) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) 2025-10-27 10:47:40.331 [main] WARN [][o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext.635] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'init' defined in class path resource [com/huawei/cbgit/tree/service/assettree/config/MqConfig.class]: fail to start mqs consumer T_devops_TagManagement_label_dev 2025-10-27 10:47:43.362 [main] INFO [][c.huawei.foundation.commons.startup.event.ContainerComponent.643] begin to destroy component dataSourceStartup 2025-10-27 10:47:43.363 [main] INFO [][c.huawei.foundation.commons.startup.event.ContainerComponent.643] begin to destroy component RedisClient 2025-10-27 10:47:43.363 [main] INFO [][c.h.c.rt.loadbalancer.supplier.HealthCheckInstanceSupplier.81] LoadBalancer-HealthCheck is closed! 2025-10-27 10:47:43.364 [main] INFO [][c.h.c.r.loadbalancer.client.DefaultLoadBalancerClientFactory.84] The loadblancerClient 'disoveryClientLoadBalancer' is closed 2025-10-27 10:47:43.364 [main] WARN [][com.obs.services.AbstractClient.103] client closing 2025-10-27 10:47:43.365 [main] INFO [][com.obs.log.AccessLogger.103] 2025-10-27 10:47:32 853|main|info|com.obs.services.internal.utils.RestUtils$DefaultObsDns|<init>|line:490|use Default Dns\n2025-10-27 10:47:32 864|main|info|com.obs.services.AbstractClient|init|line:78|Storage|1|HTTP+XML|ObsClient||||2025-10-27 10:47:32|2025-10-27 10:47:32|||0|\n2025-10-27 10:47:32 866|main|warn|com.obs.services.AbstractClient|init|line:97|[OBS SDK Version=3.25.4];[Endpoint=http://s3-kp-kwe.his-beta.huawei.com:80/];[Access Mode=Path]\n2025-10-27 10:47:43 364|main|warn|com.obs.services.AbstractClient|close|line:448|client closing 2025-10-27 10:47:43.370 [main] WARN [][com.obs.services.AbstractClient.103] client closed 2025-10-27 10:47:43.371 [main] INFO [][com.obs.log.AccessLogger.103] 2025-10-27 10:47:43 371|main|warn|com.obs.services.AbstractClient|close|line:451|client closed 2025-10-27 10:47:43.445 [main] INFO [][com.huawei.cube.rt.redis.CubeRedissonClient.109] The redisson client have been shutdown! 2025-10-27 10:47:43.464 [main] INFO [][org.apache.catalina.core.StandardService.168] Stopping service [Tomcat] 2025-10-27 10:47:43.468 [main] INFO [][com.huawei.cube.rt.web.xss.XssFilter.112] destroy XssFilter 2025-10-27 10:47:43.475 [main] INFO [][com.huawei.cube.api.context.RequestContextHolder.204] RequestContextFactory is 'class com.huawei.cube.rt.context.DefaultRequestContextFactory' 2025-10-27 10:47:43.490 [main] WARN [][org.apache.catalina.loader.WebappClassLoaderBase.168] The web application [rbi-tree#gateway] appears to have started a thread named [spectator-gauge-polling-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:\n java.base/jdk.internal.misc.Unsafe.park(Native Method)\n java.base/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:269)\n java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1763)\n java.base/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1182)\n java.base/java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:899)\n java.base/java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1070)\n java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)\n java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)\n java.base/java.lang.Thread.run(Thread.java:1583) 2025-10-27 10:47:43.543 [main] INFO [][o.s.b.autoconfigure.logging.ConditionEvaluationReportLogger.82] \n\nError starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-10-27 10:47:43.701 [main] ERROR [][org.springframework.boot.SpringApplication.858] Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'init' defined in class path resource [com/huawei/cbgit/tree/service/assettree/config/MqConfig.class]: fail to start mqs consumer T_devops_TagManagement_label_dev at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1826) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:373) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1228) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1130) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:990) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351) at com.huawei.cbgit.tree.MainApplication.main(MainApplication.java:34) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) Caused by: com.huawei.cube.api.mq.UmpException: fail to start mqs consumer T_devops_TagManagement_label_dev at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:39) at com.huawei.cube.api.mq.MqBaseClient.start(MqBaseClient.java:21) at com.huawei.cbgit.tree.service.assettree.label.LabelUpdateMqConsumerService.start(LabelUpdateMqConsumerService.java:85) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1930) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1822) ... 23 common frames omitted Caused by: com.huawei.his.mqs.common.exception.UmpException: Failed to start consumer, [ERROR INFO] is: CODE: -6 DESC: Connection refused: authorization failed, please check the consumer configuration, appId: com.huawei.cbg.it.tree (pub or sub not matched or not exist in mqs management portal) And enterprise: null ,account: null For more information, please visit the doc, mqs-document .[CONFIG SETTINGS] is: Consumer [messageModel=CLUSTERING, consumeFromWhere=CONSUME_FROM_FIRST_OFFSET, consumeThreadMin=8, consumeThreadMax=32, groupWithTags=true, consumeTimestamp=20251027101738, subGroup=null, consumeTimeoutMinutes=0, isDisableConsumeLaterRetry=false, isConsumeTimeoutWithRetry=true, isConsumeTimeoutConsumeThreadCancel=false, consumerAllocateQueueStrategy=AVG, propertyFilter='', ClientConfig{account='null', enterprise='null', appId='com.huawei.cbg.it.tree', appSecret=******, topic='T_devops_TagManagement_label_dev', clientIp='12.11.0.135', instanceName='ump_default', umpNamesrvUrls='mqs-dg02-01.his.huawei.com:9776;mqs-dg02-02.his.huawei.com:9776', dc='null', zone='null', encryptTransport=true, tags='label_uat', fileServiceUrl='null', compressLargeBody=false, umpConnectorUrls='null', loginTimeoutMillis=10000, heartBeatIntervalMillis=30000, reChanneIntervalMillis=120000, reChanneFailedRatio=0.1, heartBeatTimeoutMills=12000, rebalanceIntervalMills=40000, pollNameServerIntervalMills=30000, heartbeatBrokerIntervalMills=30000, persistConsumerOffsetIntervalMills=5000, pullTimeDelayMillsWhenException=1000, enableRequestReply=false, sharedConfig=null}] at com.huawei.his.mqs.client.AbstractClient.start(AbstractClient.java:519) at com.huawei.cube.rt.mqs.consumer.MqsConsumer.start(MqsConsumer.java:37) ... 30 common frames omitted
10-28
2025-12-03 10:40:58.304 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.219] Config resolver is com.huawei.foundation.commons.props.SystemEnvConfigResolver@677274e7; com.huawei.cube.core.env.CubeEnvConfigResolver@54c17a2b; com.huawei.foundation.commons.config.DefaultConfigResolver@16279a5d 2025-12-03 10:40:58.622 [main] INFO [][com.huawei.foundation.commons.config.ConfigUtils.42] Control param factory is not exist, and use default control param factory 2025-12-03 10:40:59.759 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [dev] 2025-12-03 10:40:59.806 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationUtils.55] All config item list [foundation-application, foundation-bootstrap, foundation, cube-app, hae-config, cube-rt-sgov, cube-rt-sso, commons-ops, console, cube-rt-web, cube-rt-security, cube-rt-cs, cube-rt-privilege, cube-privilege-program, cube-rt-http, cube-rt-discovery, cube-rt-health, cube-rt-mqs, cube-das, cube-asynctask, cube-excel, commons-boot] 2025-12-03 10:41:00.556 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.45] incident reporter is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentPinpointTraceIdReporter,com.huawei.foundation.commons.tracing.reporting.IncidentTracingReporter 2025-12-03 10:41:00.624 [main] INFO [][com.huawei.foundation.commons.reporting.ReporterFactory.66] incident reporter predicate is com.huawei.foundation.commons.console.incident.ConsoleIncidentReporter,com.huawei.foundation.commons.incident.reporting.IncidentReportRatePredicate 2025-12-03 10:41:00.911 [main] INFO [][com.huawei.foundation.commons.props.ConfigurationLoader.85] foundation component configuration is load for profiles [dev] 2025-12-03 10:41:00.945 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = false , regex = false, sensitive= false, exception=false 2025-12-03 10:41:01.903 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.91] HAE config center is enabled 2025-12-03 10:41:02.001 [main] INFO [][com.huawei.foundation.commons.utils.VmIPUtils.101] current is docker env 2025-12-03 10:41:02.108 [main] INFO [][com.huawei.cube.rt.hae.crypto.HuaweiSecurity2CryptoImpl.228] root key file path is /opt/security/CBG_IT_TREE/rbitreeservice/kwe_dev/keys/rootkeys/ 2025-12-03 10:41:04.415 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [http://oauth2-beta.huawei.com] 2025-12-03 10:41:04.418 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'haeSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:05.624 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpService.47] begin to connect to hae config center http://appconfig-beta.huawei.com/ConfigCenter/services/saasConfigcenterGetConfig?application_id=com.huawei.cbg.it.tree&sub_application_id=rbitreeservice&environment=kwe_dev&region=cn-west-hcd-1&version=1.0&client_ip_port=7.186.12.109:63072 using sgov 2025-12-03 10:41:06.131 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=hae-config-center 2025-12-03 10:41:06.131 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=hae-config-center 2025-12-03 10:41:06.137 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'hae-config-center' have been created successfully! 2025-12-03 10:41:06.727 [main] INFO [][com.huawei.cube.rt.hae.HaeHttpRequestUtils.86] success to get config from com.huawei.cbg.it.tree:rbitreeservice in env: kwe_dev, region: cn-west-hcd-1 2025-12-03 10:41:06.787 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.76] begin to parse hae config map 2025-12-03 10:41:06.787 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.207] success to parse hae app config 13 2025-12-03 10:41:06.788 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.215] begin to parse hae j2c config map 14 2025-12-03 10:41:06.903 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c pbi_systemId 2025-12-03 10:41:07.007 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c application.Token.pro 2025-12-03 10:41:07.216 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c security_publickey 2025-12-03 10:41:07.283 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovToken 2025-12-03 10:41:07.341 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c cloudreqAppkey 2025-12-03 10:41:07.414 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c iam.token.appSecret 2025-12-03 10:41:07.487 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_tree_dev 2025-12-03 10:41:07.525 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c sgovTokenPro 2025-12-03 10:41:07.612 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Sk 2025-12-03 10:41:07.697 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c clouddragonKey 2025-12-03 10:41:07.786 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c appReqProKey 2025-12-03 10:41:07.825 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c cubeSecret 2025-12-03 10:41:07.919 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c rbi_redis 2025-12-03 10:41:08.006 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.227] success to decrypt j2c s3Ak 2025-12-03 10:41:08.007 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for listen_port size= 0 2025-12-03 10:41:08.007 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for datasource size= 1 2025-12-03 10:41:08.102 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.171] success to decrypt datasource for prefix 1 2025-12-03 10:41:08.103 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for client_strategy size= 0 2025-12-03 10:41:08.103 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.147] begin to parse config list for message size= 0 2025-12-03 10:41:08.103 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigMapParser.103] success to parse hae config properties 97 2025-12-03 10:41:08.104 [main] INFO [][com.huawei.cube.rt.hae.HaeConfigPropertySource.175] HAE config is loaded to spring environment! 2025-12-03 10:41:08.104 [main] INFO [][com.huawei.cube.rt.hae.spring.HaeConfigCenterInitializer.94] success to get hae config and cost 6200ms 2025-12-03 10:41:08.525 [background-preinit] INFO [][org.hibernate.validator.internal.util.Version.21] HV000001: Hibernate Validator 8.0.2.Final 2025-12-03 10:41:09.211 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.EnvironmentConfigLoader 2025-12-03 10:41:09.503 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commandClient 2025-12-03 10:41:09.503 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commandClient 2025-12-03 10:41:09.504 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commandClient' have been created successfully! 2025-12-03 10:41:09.691 [main] INFO [][c.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader.49] The config from cube center [com.huawei.cbg.it.tree:rbitreeservice:dev] is null 2025-12-03 10:41:09.692 [main] INFO [][com.huawei.cube.rt.configcenter.CubeCenterConfigInitializer.51] cube config definition is empty from class com.huawei.cube.rt.configcenter.loader.CubeCenterConfigLoader 2025-12-03 10:41:09.693 [main] INFO [][com.huawei.foundation.commons.props.SystemEnvUtils.69] active environment is not changed 2025-12-03 10:41:09.693 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.172] CurrentApplicationContext is set 2025-12-03 10:41:09.711 [main] INFO [][com.huawei.cbgit.tree.MainApplication.53] Starting MainApplication v1.0.0-SNAPSHOT using Java 21.0.7 with PID 448 (/rbi-tree-app-1.0.0-SNAPSHOT/libs/rbi-tree-app-1.0.0-SNAPSHOT.jar started by clouder in /rbi-tree-app-1.0.0-SNAPSHOT/bin) 2025-12-03 10:41:09.716 [main] INFO [][com.huawei.cbgit.tree.MainApplication.658] The following 1 profile is active: "dev" 2025-12-03 10:41:12.613 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.87] exclude key jdbcTemplate is disabled 2025-12-03 10:41:12.613 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.87] exclude key hikari is disabled 2025-12-03 10:41:12.613 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.87] exclude key springTx is disabled 2025-12-03 10:41:12.614 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.59] foundation.autoconfigure.excludes is org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-12-03 10:41:12.614 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.63] foundation.autoconfigure.includes is com.huawei.cbgit.tree.MainApplication,com.huawei.cbgit.tree.* 2025-12-03 10:41:13.995 [main] INFO [][c.h.f.commons.exclude.FndAutoConfigurationImportFilter.118] configurations are excluded: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 2025-12-03 10:41:18.955 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.audit.writer.cs in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@4c7f2fdb cost 9ms 2025-12-03 10:41:18.956 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.audit.writer.cs cost 0ms 2025-12-03 10:41:20.980 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei.cube.rt.cs.client in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@4c7f2fdb cost 8ms 2025-12-03 10:41:20.981 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations CubeClient from com.huawei.cube.rt.cs.client cost 0ms 2025-12-03 10:41:24.715 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.296] Multiple Spring Data modules found, entering strict repository configuration mode 2025-12-03 10:41:24.725 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.147] Bootstrapping Spring Data Redis repositories in DEFAULT mode. 2025-12-03 10:41:24.963 [main] INFO [][o.s.data.repository.config.RepositoryConfigurationDelegate.215] Finished Spring Data repository scanning in 151 ms. Found 0 Redis repository interfaces. 2025-12-03 10:41:25.298 [main] INFO [][c.huawei.foundation.commons.service.discovery.ServiceLocator.181] CurrentApplicationContext is not changed 2025-12-03 10:41:25.345 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemAppList is registered 2025-12-03 10:41:25.345 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemModuleList is registered 2025-12-03 10:41:25.345 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemProductList is registered 2025-12-03 10:41:25.346 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSoftwareUnit is registered 2025-12-03 10:41:25.346 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemSubList is registered 2025-12-03 10:41:25.346 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.assetTreeSubitemWarehouseList is registered 2025-12-03 10:41:25.347 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeEmployee is registered 2025-12-03 10:41:25.347 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeEmployeeNoLabel is registered 2025-12-03 10:41:25.347 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeWxEmployee is registered 2025-12-03 10:41:25.348 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelExportSupport.orgTreeWxEmployeeNoLabel is registered 2025-12-03 10:41:25.363 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelSupportScanner.75] excel bean fdnIExcelImportSupport.employeeBaseInfo is registered 2025-12-03 10:41:25.708 [main] INFO [][com.huawei.cube.rt.datasource.DefaultDataSourceFactory.143] The primary datasource is 'dataSource' 2025-12-03 10:41:25.783 [main] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSourceRegistry.36] success to register dataSource DefaultCubeDataSource : dataSource 2025-12-03 10:41:26.805 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.97] create mapping factory cost 272ms 2025-12-03 10:41:27.089 [DruidDataSourceInit-dataSource-1] INFO [][com.alibaba.druid.pool.DruidDataSource.1002] {dataSource-1,dataSource} inited 2025-12-03 10:41:27.089 [DruidDataSourceInit-dataSource-1] INFO [][com.huawei.cube.rt.datasource.DefaultCubeDataSource.122] The dataSource 'dataSource' init successfully! cost '1049'ms 2025-12-03 10:41:29.442 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.214] datasource dataSource type handlers package is com.huawei.cube.das.handler.bool 2025-12-03 10:41:29.612 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.185] 4 mybatis interceptors are loaded to datasource dataSource : class com.huawei.cube.das.interceptor.LongtimeSqlInterceptor,class com.huawei.cube.das.interceptor.MybatisPageableInterceptor,class com.huawei.cube.privilege.program.DataPrivilegeInterceptor,class com.huawei.cube.das.interceptor.OptimisticLockerInterceptor 2025-12-03 10:41:30.232 [main] INFO [][com.huawei.cube.das.core.DefaultMyBatisConfigurator.129] [classpath*:com.huawei.cbgit.tree.infrastructure.*.xml, classpath*:mapper/id.info.*.mapper.xml, classpath*:/mapper/dynamic/*.xml, classpath*:/mapper/*.xml] : 4 mybatis mapper xml are loaded to dataSource 2025-12-03 10:41:30.734 [main] INFO [][com.huawei.cube.das.core.DefaultCubeDASRegister.61] register primary dataSource [dataSource] transaction manager 2025-12-03 10:41:30.789 [main] INFO [][com.huawei.cube.das.core.DefaultCubeDASRegister.186] primary dataSource [dataSource] registered mybatis mapper base package : com.huawei.cube.excel.core.task.db.domain.mapper,com.huawei.cube.audit.writer.database.mapper,com.huawei.cbgit.tree.infrastructure.*,com.huawei.cube.logging.writer.database.mapper,com.huawei.cube.das.sequence.mapper,com.huawei.cube.idempotent.mapper 2025-12-03 10:41:32.214 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.429] Bean 'com.huawei.cube.rt.refresh.ConfigChangeConfiguration' of type [com.huawei.cube.rt.refresh.ConfigChangeConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). The currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor] is declared through a non-static factory method on that class; consider declaring it as static instead. 2025-12-03 10:41:32.236 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigRefreshMatcher' of type [com.huawei.cube.rt.refresh.ConfigRefreshMatcher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeChangeConfigPropertiesBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-12-03 10:41:32.266 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeSpringValueBeanConfigRefresher' of type [com.huawei.cube.rt.refresh.SpringValueBeanConfigRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-12-03 10:41:32.306 [main] WARN [][o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker.437] Bean 'cubeConfigChangeEventRefresher' of type [com.huawei.cube.rt.refresh.ConfigChangeEventRefresher] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [cubeSpringValueBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. 2025-12-03 10:41:33.851 [main] INFO [][o.springframework.boot.web.embedded.tomcat.TomcatWebServer.111] Tomcat initialized with port 8003 (http) 2025-12-03 10:41:34.200 [main] INFO [][org.apache.coyote.http11.Http11NioProtocol.168] Initializing ProtocolHandler ["http-nio-8003"] 2025-12-03 10:41:34.238 [main] INFO [][org.apache.catalina.core.StandardService.168] Starting service [Tomcat] 2025-12-03 10:41:34.239 [main] INFO [][org.apache.catalina.core.StandardEngine.168] Starting Servlet engine: [Apache Tomcat/10.1.48] 2025-12-03 10:41:34.428 [main] INFO [][o.a.c.c.C.[Tomcat].[localhost].[/rbi-tree/gateway].168] Initializing Spring embedded WebApplicationContext 2025-12-03 10:41:34.428 [main] INFO [][o.s.b.web.servlet.context.ServletWebServerApplicationContext.301] Root WebApplicationContext: initialization completed in 24325 ms 2025-12-03 10:41:34.802 [main] INFO [][com.huawei.cube.rt.sgov.SgovAuthConfig.172] sgov setSgovAuth environment from hae config center [cloud.sgov.appId, cloud.sgov.token] 2025-12-03 10:41:34.819 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [https://oauth2-beta.huawei.com] 2025-12-03 10:41:34.820 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'envSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:34.820 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [http://oauth2-beta.huawei.com] 2025-12-03 10:41:34.821 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'defaultSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:34.821 [main] INFO [][com.huawei.apic.client.consumer.AbstractAuthenticator.77] init soa apiAuthenticator success,endpoints is: [https://oauth2.huawei.com] 2025-12-03 10:41:34.822 [main] INFO [][com.huawei.cube.rt.sgov.his.DefaultSgovAuth.63] The sgov 'proSgov' of '11111111111111111111111111111111-com.huawei.cbg.it.tree' init successfully! 2025-12-03 10:41:35.050 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.50] >>> authenticationRequestFilter register ok ! 2025-12-03 10:41:35.089 [main] INFO [][com.huawei.cube.rt.auth.web.WebAuthConfiguration.61] >>> accountTypeWebFilter register ok ! 2025-12-03 10:41:35.186 [main] INFO [][c.huawei.cube.rt.context.web.RequestContextWebConfiguration.41] >>> requestContextHolderFilter register ok ! 2025-12-03 10:41:36.465 [main] INFO [][org.redisson.Version.43] Redisson 3.51.0 2025-12-03 10:41:37.335 [main] INFO [][com.huawei.cube.rt.redis.dns.CubeDnsAddressResolverFactory.41] redisson netty dns is localhost:0 2025-12-03 10:41:38.105 [main] INFO [][org.redisson.connection.ClusterConnectionManager.122] Redis cluster nodes configuration got from 7.193.49.81/7.193.49.81:6379: 76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 7.193.50.120:6379@12709 master - 0 1764729695000 3 connected 10923-16383 4dbe4460b63b64d4fc34616d83c45340a9afe6ed 7.193.49.191:6379@13562 slave 76107c4d6bc43632c84da91a6b8c0bf1e8a10e9c 0 1764729697416 3 connected d14995cad01a7a98829ce3a9c4f7237233d8683f 7.193.49.81:6379@12870 myself,master - 0 1764729694000 1 connected 0-5460 5ad91d3191eecf8201b757a6899c0f187a628634 7.193.51.7:6379@12467 slave d14995cad01a7a98829ce3a9c4f7237233d8683f 0 1764729696000 1 connected f603a93be27c1f5f0c01d2b471c55a04822be8db 7.193.50.91:6379@12430 slave 45d1676d933a3242712d4214a4194fd970bc06dd 0 1764729696000 2 connected 45d1676d933a3242712d4214a4194fd970bc06dd 7.193.50.85:6379@13880 master - 0 1764729696414 2 connected 5461-10922 2025-12-03 10:41:38.196 [redisson-netty-1-17] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-12-03 10:41:38.210 [redisson-netty-1-23] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-12-03 10:41:38.211 [redisson-netty-1-26] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-12-03 10:41:38.393 [redisson-netty-1-5] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.81/7.193.49.81:6379 2025-12-03 10:41:38.421 [redisson-netty-1-19] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.120/7.193.50.120:6379 2025-12-03 10:41:38.432 [redisson-netty-1-28] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-12-03 10:41:38.435 [redisson-netty-1-29] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-12-03 10:41:38.523 [redisson-netty-1-11] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.85/7.193.50.85:6379 2025-12-03 10:41:38.538 [redisson-netty-1-22] INFO [][org.redisson.connection.ConnectionsHolder.132] 1 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-12-03 10:41:38.631 [redisson-netty-1-4] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.49.191/7.193.49.191:6379 2025-12-03 10:41:38.634 [redisson-netty-1-4] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.49.191:6379] added for master: redis://7.193.50.120:6379 slot ranges: [[10923-16383]] 2025-12-03 10:41:38.634 [redisson-netty-1-4] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.120:6379 added for slot ranges: [[10923-16383]] 2025-12-03 10:41:38.644 [redisson-netty-1-12] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.51.7/7.193.51.7:6379 2025-12-03 10:41:38.645 [redisson-netty-1-12] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.51.7:6379] added for master: redis://7.193.49.81:6379 slot ranges: [[0-5460]] 2025-12-03 10:41:38.645 [redisson-netty-1-12] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.49.81:6379 added for slot ranges: [[0-5460]] 2025-12-03 10:41:38.708 [redisson-netty-1-22] INFO [][org.redisson.connection.ConnectionsHolder.132] 24 connections initialized for 7.193.50.91/7.193.50.91:6379 2025-12-03 10:41:38.709 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.366] slaves: [redis://7.193.50.91:6379] added for master: redis://7.193.50.85:6379 slot ranges: [[5461-10922]] 2025-12-03 10:41:38.709 [redisson-netty-1-22] INFO [][org.redisson.connection.ClusterConnectionManager.374] master: redis://7.193.50.85:6379 added for slot ranges: [[5461-10922]] 2025-12-03 10:41:40.035 [main] INFO [][com.huawei.cube.rt.redis.CubeRedissonClient.66] The redisson client have been created successfully! 2025-12-03 10:41:40.810 [main] INFO [][com.huawei.cube.rt.iam.DefaultIamClientFactory.136] create iam provider defaultIAM with token-protocol=null:iam-blue,account=com.huawei.cbg.it.tree 2025-12-03 10:41:42.418 [main] INFO [][com.obs.services.internal.utils.RestUtils.103] use Default Dns 2025-12-03 10:41:42.432 [main] INFO [][com.obs.services.AbstractClient.103] Storage|1|HTTP+XML|ObsClient||||2025-12-03 10:41:42|2025-12-03 10:41:42|||0| 2025-12-03 10:41:42.434 [main] WARN [][com.obs.services.AbstractClient.103] [OBS SDK Version=3.25.4];[Endpoint=http://s3-kp-kwe.his-beta.huawei.com:80/];[Access Mode=Path] 2025-12-03 10:41:42.660 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=defaultRestClient 2025-12-03 10:41:42.661 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=defaultRestClient 2025-12-03 10:41:42.661 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'defaultRestClient' have been created successfully! 2025-12-03 10:41:42.713 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=commonService 2025-12-03 10:41:42.714 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=commonService 2025-12-03 10:41:42.715 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'commonService' have been created successfully! 2025-12-03 10:41:42.824 [main] INFO [][com.huawei.cube.rt.gray.discovery.GrayTagConfigReader.80] Gray tag config file path /opt/ads/CBG_IT_TREE/rbitreeservice/kwe_dev/clustertype 2025-12-03 10:41:42.854 [main] INFO [][com.huawei.cube.rt.discovery.ApplicationManager.61] current ipinfo,ip=7.186.12.109,port=63072 2025-12-03 10:41:43.071 [main] INFO [][com.huawei.cube.rt.discovery.eureka.LocalInstanceFactory.77] Setting initial instance status as: STARTING 2025-12-03 10:41:43.190 [main] INFO [][c.huawei.cube.rt.discovery.eureka.handler.JwtClientHandler.44] Eureka jwt verify enabled 2025-12-03 10:41:43.491 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=eurekaClient 2025-12-03 10:41:43.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=eurekaClient 2025-12-03 10:41:43.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'eurekaClient' have been created successfully! 2025-12-03 10:41:44.058 [main] INFO [][com.netflix.discovery.InstanceInfoReplicator.64] InstanceInfoReplicator onDemand update allowed rate per min is 4 2025-12-03 10:41:45.092 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.44] >>> serverNoReadyFilter register ok ! 2025-12-03 10:41:45.100 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.56] >>> inboundAccessLogFilter register ok ! 2025-12-03 10:41:45.103 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.67] >>> CharaterEncodingFilter register ok ! 2025-12-03 10:41:45.106 [main] INFO [][com.huawei.cube.rt.web.filter.WebFilterAutoConfiguration.81] >>> headerWriterFilter register ok ! 2025-12-03 10:41:45.866 [main] INFO [][com.huawei.cube.rt.web.xss.XssFilter.107] init XssFilter 2025-12-03 10:41:51.174 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:51.871 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.410 [main] INFO [][c.h.cbgit.tree.service.assettree.mqs.CcmpRepoConsumerService.96] Starting CcmpRepoConsumerService... 2025-12-03 10:41:52.417 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.431 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.516 [main] INFO [][c.h.cbgit.tree.service.assettree.mqs.CcmpRepoConsumerService.101] CcmpRepoConsumerService started successfully 2025-12-03 10:41:52.528 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.536 [main] WARN [][RocketmqRemoting.115] this file is not exists: ./conf/rmq_remoting_client_access.conf 2025-12-03 10:41:52.619 [NettyClientPublicExecutor@12.11.29.174@com-huawei-cbg-it-tree_0c0b1dae0c985f230000000000000002_3-6-6-0_1] WARN [][RocketmqClient.130] execute the pull request exception org.apache.rocketmq.client.ext.exception.MQBrokerException: CODE: 25 DESC: the consumer's subscription not latest For more information, please visit the doc, mqs-document at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl.processPullResponse(MQClientAPIImpl.java:948) at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl$2.operationComplete(MQClientAPIImpl.java:898) at org.apache.rocketmq.remoting.netty.ResponseFuture.executeInvokeCallback(ResponseFuture.java:55) at org.apache.rocketmq.common.ext.netty.UmpNettyRemotingAbstract$2.run(UmpNettyRemotingAbstract.java:293) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2025-12-03 10:41:52.619 [NettyClientPublicExecutor@12.11.29.174@com-huawei-cbg-it-tree_0c0b1dae0c985f230000000000000002_3-6-6-0_2] WARN [][RocketmqClient.130] execute the pull request exception org.apache.rocketmq.client.ext.exception.MQBrokerException: CODE: 25 DESC: the consumer's subscription not latest For more information, please visit the doc, mqs-document at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl.processPullResponse(MQClientAPIImpl.java:948) at org.apache.rocketmq.client.ext.impl.MQClientAPIImpl$2.operationComplete(MQClientAPIImpl.java:898) at org.apache.rocketmq.remoting.netty.ResponseFuture.executeInvokeCallback(ResponseFuture.java:55) at org.apache.rocketmq.common.ext.netty.UmpNettyRemotingAbstract$2.run(UmpNettyRemotingAbstract.java:293) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at java.base/java.lang.Thread.run(Thread.java:1583) 2025-12-03 10:41:55.093 [main] INFO [][com.huawei.cube.rt.redis.electleader.DefaultElectLeader.76] elect leader scope is redis-delect-leader_rbitreeservice_dev 2025-12-03 10:41:55.818 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'dataDictCache' have been created successfully! 2025-12-03 10:41:55.835 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'dataDictParentCache' have been created successfully! 2025-12-03 10:41:55.840 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'i18nCache' have been created successfully! 2025-12-03 10:41:55.845 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'lookupCache' have been created successfully! 2025-12-03 10:41:55.849 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'permissionCache' have been created successfully! 2025-12-03 10:41:55.854 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'permissionUrlCache' have been created successfully! 2025-12-03 10:41:55.859 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'userRoleProgramIdsCache' have been created successfully! 2025-12-03 10:41:55.864 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'programCache' have been created successfully! 2025-12-03 10:41:55.983 [main] INFO [][com.huawei.cube.rt.cache.second.SecondCacheManager.70] Init the dcs server defaultServer info for cache 2025-12-03 10:41:56.012 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'csrfTokenCache' have been created successfully! 2025-12-03 10:41:56.021 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultCommonService' have been created successfully! 2025-12-03 10:41:56.029 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultCsrfTokenCache' have been created successfully! 2025-12-03 10:41:56.037 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultPrivilege' have been created successfully! 2025-12-03 10:41:56.044 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'defaultSettings' have been created successfully! 2025-12-03 10:41:56.103 [main] INFO [][com.huawei.cube.rt.cache.AbstractCacheManager.51] The cache 'RequestContextUserCache' have been created successfully! 2025-12-03 10:41:57.220 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be /jalor 2025-12-03 10:41:57.403 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be /jalor/eureka 2025-12-03 10:41:57.425 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be /platform/sysmgnt 2025-12-03 10:41:57.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=cluster_rbitreeservice 2025-12-03 10:41:57.492 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=cluster_rbitreeservice 2025-12-03 10:41:57.493 [main] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'cluster_rbitreeservice' have been created successfully! 2025-12-03 10:41:58.309 [main] INFO [][com.huawei.cube.rt.uid.core.DcsMachineIDGenerator.59] Current machineId is '4', range of machineId is '0-255' 2025-12-03 10:41:58.325 [main] INFO [][com.huawei.cube.rt.uid.core.DefaultIDGenerator.25] The idGenerator is swith to class com.huawei.cube.rt.uid.core.SnowFlakeIDGenerator 2025-12-03 10:41:58.431 [main] INFO [][org.apache.cxf.endpoint.ServerImpl.95] Setting the server's publish address to be null 2025-12-03 10:41:58.557 [main] INFO [][com.huawei.foundation.commons.metrics.MemeoryMetricsClient.40] memeory metrics client created 2025-12-03 10:41:59.433 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.113] register customized converter com.huawei.cube.rt.mqs.consumer.PropertyFilterConverter 2025-12-03 10:42:00.480 [main] INFO [][c.h.foundation.commons.reflections.AnnotationMetadataReader.84] resolve class annotations from package: com.huawei in class loader org.springframework.boot.loader.launch.LaunchedClassLoader@4c7f2fdb cost 1040ms 2025-12-03 10:42:00.494 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations BeanMappings,BeanMapping,MappingConfigurations from com.huawei cost 14ms 2025-12-03 10:42:00.583 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.215] scan and register 1 bean converters for [com.huawei] and cost 1149ms 2025-12-03 10:42:00.583 [main] INFO [][com.huawei.foundation.commons.copier.factory.MappingFactory.113] register customized converter com.huawei.cube.rt.mqs.consumer.PropertyFilterConverter 2025-12-03 10:42:00.702 [main] INFO [][c.h.foundation.commons.system.sampler.RuntimeSamplerFactory.34] Current RuntimeSampler is 'com.huawei.foundation.commons.system.sampler.MXBeanRuntimeSampler' 2025-12-03 10:42:00.706 [main] INFO [][c.h.foundation.commons.system.sampler.AbstractRuntimeSampler.75] Runtime sampler started 2025-12-03 10:42:02.311 [main] INFO [][o.s.boot.actuate.endpoint.web.EndpointLinksResolver.60] Exposing 1 endpoint beneath base path '/actuator' 2025-12-03 10:42:02.367 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemAppList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.397 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemModuleList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.402 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemProductList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.407 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemSoftwareUnit.excelExport.xml , storage = edm3 2025-12-03 10:42:02.413 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemSubList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.420 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = assetTreeSubitemWarehouseList.excelExport.xml , storage = edm3 2025-12-03 10:42:02.425 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.431 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.436 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.443 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = orgTreeEmployee.excelExport.xml , storage = edm3 2025-12-03 10:42:02.450 [main] INFO [][com.huawei.cube.excel.core.utils.ExcelMetaParser.97] excel meta id = employeeBaseInfo.excelImport.xml , storage = edm3 2025-12-03 10:42:03.104 [main] INFO [][org.apache.coyote.http11.Http11NioProtocol.168] Starting ProtocolHandler ["http-nio-8003"] 2025-12-03 10:42:03.170 [main] INFO [][o.springframework.boot.web.embedded.tomcat.TomcatWebServer.243] Tomcat started on port 8003 (http) with context path '/rbi-tree/gateway' 2025-12-03 10:42:03.254 [main] INFO [][com.huawei.cbgit.tree.MainApplication.59] Started MainApplication in 63.089 seconds (process running for 92.14) 2025-12-03 10:42:03.267 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = false , regex = false, sensitive= false, exception=false 2025-12-03 10:42:03.302 [main] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations MQSMapping from com.huawei cost 14ms 2025-12-03 10:42:03.309 [main] INFO [][com.huawei.cube.mqs.consumer.MqConsumerBeanRegistrar.128] 0 MqMapping method are found and cost 15 ms, start consumer cost 7ms 2025-12-03 10:42:03.439 [main] INFO [][c.h.foundation.commons.console.client.ConsolePollingRunner.71] Console client 'com.huawei.cbg.it.tree:dev-rbitreeservice' create successfully! instanceId 'null' 2025-12-03 10:42:03.447 [main] INFO [][com.huawei.cube.boot.dcs.RedisSupportConfiguration.43] DCS client startup successfully! client is 'com.huawei.cube.rt.redis.dist.RedisDCSClient@1ea5f0de' 2025-12-03 10:42:03.504 [main] INFO [][c.h.f.commons.tracing.server.TracingServerStartupListener.78] Server Startup cost '53399' ms 2025-12-03 10:42:03.536 [main] INFO [][c.huawei.cube.rt.refresh.RefreshAnnotationBeanPostProcessor.113] scan bean annotation cost 25ms 2025-12-03 10:42:03.537 [main] INFO [][com.huawei.cube.rt.refresh.SpringValueBeanConfigRefresher.132] clear empty annotation holder cache and 0 remains 2025-12-03 10:42:03.537 [main] INFO [][com.huawei.cube.rt.refresh.ConfigChangeEventRefresher.86] clear empty annotation holder cache and 0 remains 2025-12-03 10:42:03.537 [main] INFO [][com.huawei.cube.rt.discovery.eureka.EurekaDiscoveryClient.135] Eureka discovery client have been started! 2025-12-03 10:42:03.550 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.145] refresh all level to INFO 2025-12-03 10:42:03.551 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger RocketmqRemoting level is changed to warn 2025-12-03 10:42:03.551 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger RocketmqCommon level is changed to warn 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger UmpClient level is changed to warn 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.his.framework.huaweisecurity2.plugin.dynamicsalt.cipher.aes.impl level is changed to ERROR 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.it.commons.security level is changed to WARN 2025-12-03 10:42:03.552 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.it.commons.security.cipher.aes.impl level is changed to ERROR 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger UmpCommon level is changed to warn 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.huawei.his.framework.huaweisecurity2 level is changed to WARN 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.netflix.discovery.shared.resolver.aws level is changed to warn 2025-12-03 10:42:03.553 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger com.netflix.discovery.DiscoveryClient level is changed to warn 2025-12-03 10:42:03.554 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger RocketmqClient level is changed to warn 2025-12-03 10:42:03.554 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.118] logger SdkLog level is changed to WARN 2025-12-03 10:42:03.554 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.183] inner logger level is reset to INFO 2025-12-03 10:42:03.556 [main] INFO [][com.huawei.foundation.commons.logging.LoggingRefresher.156] logging filter status: global = false , regex = false, sensitive= false, exception=false 2025-12-03 10:42:03.561 [main] INFO [][c.h.foundation.commons.service.discovery.ServiceInitializer.86] bean total count=1236, time cost=11899ms, top bean is: init=1943ms,cloudJalorServiceRest=376ms,_com.huawei.cube.audit.writer.database.mapper.AuditLogMapper#0=367ms,_com.huawei.cube.excel.core.task.db.domain.mapper.ExcelTaskMapper#0=321ms 2025-12-03 10:42:08.461 [foundation-console-client-10-thread-1] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.227] ignore server check for ssl, clientName=registerClient 2025-12-03 10:42:08.462 [foundation-console-client-10-thread-1] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.245] enabled connection pool, clientName=registerClient 2025-12-03 10:42:08.462 [foundation-console-client-10-thread-1] INFO [][c.huawei.foundation.commons.httpclient.OkHttpClientFactory.148] OK http client 'registerClient' have been created successfully! 2025-12-03 10:42:08.525 [foundation-console-client-10-thread-1] INFO [][com.huawei.foundation.commons.console.client.ConsoleClient.795] register successfully! current instanceId=2107447038576140288, versionNo=-1, namespace=com.huawei.cbg.it.tree, group=dev, appName=rbitreeservice 2025-12-03 10:42:11.032 [foundation-console-Health-Sampler-12-thread-1] INFO [][com.huawei.cube.api.context.RequestContextHolder.204] RequestContextFactory is 'class com.huawei.cube.rt.context.DefaultRequestContextFactory' 2025-12-03 10:42:11.498 [http-nio-8003-exec-7] INFO [7f8fd1c98e492508920fb13b3be970e0][com.huawei.cube.rt.privilege.loader.UserPermissionLoader.111][a******34] load user permission, client 'com.huawei.cube.rt.cs.client.DefaultCommonServiceClientFactory', user is a******34 2025-12-03 10:42:12.116 [foundation-console-Health-Sampler-12-thread-1] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations IdempotentHA from com.huawei cost 20ms 2025-12-03 10:42:12.135 [foundation-console-Health-Sampler-12-thread-1] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations IdempotentHPC from com.huawei cost 19ms 2025-12-03 10:42:12.186 [foundation-console-Health-Sampler-12-thread-1] INFO [][c.huawei.foundation.commons.reflections.AnnotationsScanner.185] scan and match annotations Operation from com.huawei cost 38ms 2025-12-03 10:42:12.503 [foundation-console-Health-Sampler-12-thread-1] ERROR [][com.huawei.foundation.commons.utils.reflect.ReflectUtils.228] Get field 'logger' value of class 'class com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter'' exception, caused by 'InaccessibleObjectException: Unable to make field private final org.apache.logging.log4j.Logger com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter.logger accessible: module pinpoint.agent does not "opens com.navercorp.pinpoint.profiler.logging" to unnamed module @779ef5cb' 2025-12-03 10:42:12.504 [foundation-console-Health-Sampler-12-thread-1] ERROR [][com.huawei.foundation.commons.utils.reflect.ReflectUtils.228] Get field 'isDebug' value of class 'class com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter'' exception, caused by 'InaccessibleObjectException: Unable to make field private final boolean com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter.isDebug accessible: module pinpoint.agent does not "opens com.navercorp.pinpoint.profiler.logging" to unnamed module @779ef5cb' 2025-12-03 10:42:12.504 [foundation-console-Health-Sampler-12-thread-1] ERROR [][com.huawei.foundation.commons.utils.reflect.ReflectUtils.228] Get field 'marker' value of class 'class com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter'' exception, caused by 'InaccessibleObjectException: Unable to make field private final org.apache.logging.log4j.Marker com.navercorp.pinpoint.profiler.logging.Log4J2PluginLoggerAdapter.marker accessible: module pinpoint.agent does not "opens com.navercorp.pinpoint.profiler.logging" to unnamed module @779ef5cb' 2025-12-03 10:42:12.622 [http-nio-8003-exec-3] INFO [12ec2b09b04964613dce8207d037e7cc][c.h.cbgit.tree.service.assettree.eamap.GetEamapTreeService.46][a******34] EamapTreeService begin 2025-12-03 10:42:12.795 [http-nio-8003-exec-3] INFO [12ec2b09b04964613dce8207d037e7cc][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79][a******34] init cache type [eamap], cacheDate: 2025-11-25 22:27:05 2025-12-03 10:42:12.795 [http-nio-8003-exec-4] INFO [354fa72bb9aaf65c82822d68a52209af][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79][a******34] init cache type [PBI], cacheDate: 2025-12-03 10:01:32 2025-12-03 10:42:13.305 [thread-RBI_CACHE_DATA-0] INFO [][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79] init cache type [product], cacheDate: 2025-12-03 10:41:22 2025-12-03 10:42:13.308 [thread-RBI_CACHE_DATA-3] INFO [][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79] init cache type [cloudinit], cacheDate: 2025-12-03 00:03:33 2025-12-03 10:42:13.312 [thread-RBI_CACHE_DATA-4] INFO [][com.huawei.cbgit.tree.service.cache.RbiCacheUtils.79] init cache type [product_relation], cacheDate: 2025-12-03 10:02:46 2025-12-03 10:42:13.315 [Load-GlobalParameters-1] INFO [][com.huawei.cube.rt.cs.datadict.DefaultIGlobalParameter.128] Load Global parameters '56' successfully!, values: {Jalor.GlobalParamters.MaxPersonalSettings=100, Jalor.GlobalParamters.EnabledLoadThirdSite=0, Jalor.GlobalParamters.IsInMaintenance=0, Jalor.GlobalParamters.CheckBrowser=0, Jalor.GlobalParamters.EnableDynamicHelp=0, Jalor.GlobalParamters.PrivilegeType=0, Jalor.GlobalParamters.AppVersion=20140627, 哪个日志导致项目健康检查不通过
12-04
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值