项目名称:KOCA
KOCA版本 :5.2.0
KOCA模块 :BexClient
模块版本 :5.2.0
场景 :在应用启动时,在自己实现的AppLoader中调用bex本地接口
问题 :bex业务异常,api编号:[kocaSampleBexUserQueryAll],错误码:[100311],错误信息:[未找到接口【kocaSampleBexUserQueryAll】对应的执行器]
报错细节 :
Caused by: com.szkingdom.koca.client.bex.BexCallException: bex业务异常,api编号:[kocaSampleBexUserQueryAll],错误码:[100311],错误信息:[未找到接口【kocaSampleBexUserQueryAll】对应的执行器]
at com.szkingdom.koca.client.rpc.client.RpcClient.getResultBodyList(RpcClient.java:135)
at com.szkingdom.koca.client.bex.BexClient.invokeBexForList(BexClient.java:308)
at com.szkingdom.koca.client.bex.BexClient.invokeBexForList(BexClient.java:232)
at com.szkingdom.example.init.PortalDataInit.load(PortalDataInit.java:18)
at com.szkingdom.koca.core.context.AppLoadListener.contextLoaded(AppLoadListener.java:100)
at com.szkingdom.koca.core.context.AppLoadListener.start(AppLoadListener.java:132)
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178)
... 12 common frames omitted
尝试解决方案:
自己实现的AppLoader代码
@Component
public class PortalDataInit implements AppLoader {
@Override
public void load() {
KocaSampleBexCompany kocaSampleBexCompany = new KocaSampleBexCompany();
List<KocaSampleBexCompany> list = BexClient.invokeBexForList(null,null,"kocaSampleBexUserQueryAll", kocaSampleBexCompany , KocaSampleBexCompany.class);
return;
}
@Override
public int getOrder() {
return 1;
}
}
由于Order是1,
BexExecutorLoader也是1,可能是AppLoader加载顺序问题
可以看到自己的AppLoader初始化顺序确实在BexExecutorLoader前面,导致找不到BEX执行器
解决方案:
自己定义的AppLoader,order最好是从100开始,保证KOCA框架的AppLoader先加载