a6b19f3a80b319de4e1278fc8a9df20d34c71e79
\345\275\223\345\211\215\344\270\212\344\270\213\346\226\207token\345\206\205\345\256\271\344\270\272\347\251\272\357\274\214\344\270\215\346\224\257\346\214\201\350\277\234\347\250\213\350\260\203\347\224\250!.md
... | ... | @@ -1,40 +1,103 @@ |
1 | 1 | # 当前上下文token内容为空,不支持远程调用! |
2 | 2 | |
3 | 3 | |
4 | -`2024-07-25 10:51:14 911 /alarm |
|
5 | -om.sie.snest.engine.exception.Modelexception: |
|
6 | -当前上下文token内容为空,不支持远程调用! |
|
7 | -.invoke(Methodmeta.java:190) |
|
8 | -RpcInvocation.invoke(RpcInvocation.java:184) |
|
9 | -cal1(Recordset.java:295) |
|
10 | -cketclientHandlerService.sendMes(AlarmwebSocketclientHandlerService.java:1219) |
|
11 | -etclientHandlerService,lambda$getuserPushprocessing$16(AlarmlebsocketclientHandlerService.java:1106) |
|
12 | -oolutil.lambdasexecutesa(Threadpoolutil.java:50) |
|
13 | -awa .ut |
|
14 | -runworker(ThreadpoolExecutor.java:1149) |
|
15 | -rker.run(Threadpoolexecutor .java:624) |
|
16 | -当前上下文token内容为空,不支持远程调用! |
|
17 | -com.sie.snest.engine.api.distributed.RpcInvocation.getToken(RpcInvocation.java:64) |
|
18 | -d.RpcInvocation.getHeaderAndBody(RpcInvocation.java:51) |
|
19 | -com.sie.snest.engine.api.distributed.RpcInvocation.invoke(RpcInvocation.java:125) |
|
20 | -com.sie.snest.engine.data.Recordset.cal1(Recordset.java:295) |
|
21 | -comstesnestengin |
|
22 | -com.sie.pipmes .avwx |
|
23 | -becordSet searchlRecordset java:185 |
|
24 | -.Mobilesenderservice.obtainchannelinfo(Mobilesenderservice.java:217) |
|
25 | -comstebibmes |
|
26 | -Mobite |
|
27 | -.sender(Mobilesenderservice.java:65) |
|
28 | -rBVCGLIB$$93162c76.CGLIBssenderso(<generated>) |
|
29 | -ncerByCGLIB$$93162c76$$FastclassByCGLIB$$93a58f.invoke(<generated>) |
|
30 | -v.java:228 |
|
31 | -pt(Modelinterceptor.java:84) |
|
32 | -ervice$$EnhancerByCGLIB$$93162c76.sender(<generated>) |
|
33 | -Method |
|
34 | -ke(NativeMethodAccessorImpl.java:62) |
|
35 | -ccessorimplinvoke(DelegatingmethodAccessorimpl.ava:43) |
|
36 | -ethod .java:498 |
|
37 | -com.sie.snest |
|
38 | -I.Methodmeta.execute(Methodmeta.java:226) |
|
39 | -l.MethodMeta.invoke(MethodMeta.java:179) |
|
40 | -com.sie.snest.engine` |
|
... | ... | \ No newline at end of file |
0 | +``` |
|
1 | +2024-07-25 10:51:14.911[alarm-1-thread-2]ERROR mesLog -企业微信推送失败:当前上下文token内容为空,不支持远程调用! |
|
2 | +com.sie.snest.engine.exception.ModelException:当前上下文token内容为空,不支持远程调用! |
|
3 | +at com.sie.snest.engine.model.MethodMeta.invoke(MethodMeta.java:190) |
|
4 | +at com.sie.snest.engine.api.distributed.RpcInvocation.invoke(RpcInvocation.java:184) |
|
5 | +at com.sie.snest.engine.data.Recordset.call(Recordset.java:295) |
|
6 | +at com.sie.pip.mes.alarm.service.AlarmwebSocketclientHandlerService.sendMes(AlarmwebSocketclientHandlerService.java:1219) |
|
7 | +at com.sie.pip.mes.alarm.service.AlarmwebSocketclientHandlerService.lambda$getUserPushProcessings$16(AlarmwebSocketclientHandlerService.java:1106) |
|
8 | +at com.sie.pip.mes.common.utils.ThreadPoolUtil.lambda$executeSo$0(ThreadPoolUtil.java:50) |
|
9 | +at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) |
|
10 | +at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) |
|
11 | +at java.lang.Thread.run(Thread.java:748) |
|
12 | +Caused by:com.sie.snest.engine.exception.CallException:当前上下文token内容为空,不支持远程调用! |
|
13 | +at com.sie.snest.engine.api.distributed.RpcInvocation.getToken(RpcInvocation.java:64) |
|
14 | +at com.sie.snest.engine.api.distributed.RpcInvocation.getHeaderAndBody(RpcInvocation.java:51) |
|
15 | +at com.sie.snest.engine.api.distributed.RpcInvocation.invoke(RpcInvocation.java:125) |
|
16 | +at com.sie.snest.engine.data.Recordset.call(Recordset.java:295) |
|
17 | +at com.sie.snest.engine.data.Recordset.search(Recordset.java:185) |
|
18 | +at com.sie.pip.mes.qywx.service.MobileSenderService.obtainChannelInfo(MobileSenderService.java:217) |
|
19 | +at com.sie.pip.mes.qywx.service.MobileSenderService.sender(MobileSenderService.java:65) |
|
20 | +at com.sie.pip.mes.qywx.service.MobileSenderService$$EnhancerByCGLIB$$93162c76.CGLIB$sender$0(<generated>) |
|
21 | +at com.sie.pip.mes.qywx.service.MobileSenderService$$EnhancerByCGLIB$$93162c76$$FastClassByCGLIB$$93a581f.invoke(<generated>) |
|
22 | +at net.sf.cglib.proxy.MethodProxy.invokesuper(MethodProxy.java:228) |
|
23 | +at com.sie.snest.engine.model.ModelInterceptor.intercept(ModelInterceptor.java:84) |
|
24 | +at com.sie.pip.mes.qywx.service.MobileSenderService$$EnhancerByCGLIB$$93162c76.sender(<generated>) |
|
25 | +at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) |
|
26 | +at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) |
|
27 | +at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) |
|
28 | +at java.lang.reflect.Method.invoke(Method.java:498) |
|
29 | +at com.sie.snest.engine.model.MethodMeta.execute(MethodMeta.java:226) |
|
30 | +at com.sie.snest.engine.model.MethodMeta.invoke(MethodMeta.java:179) |
|
31 | +``` |
|
32 | + |
|
33 | +## 解决方案 |
|
34 | + |
|
35 | + |
|
36 | + |
|
37 | + |
|
38 | + |
|
39 | + |
|
40 | +检查如下示例代码: |
|
41 | +``` |
|
42 | + try (Meta meta1 = new Meta(null, new HashMap<>())){ |
|
43 | + |
|
44 | + |
|
45 | +} |
|
46 | +``` |
|
47 | + |
|
48 | +new HashMap() 需要调整如下所示: |
|
49 | + |
|
50 | +``` |
|
51 | +try (Meta meta1 = new Meta(null, BaseContextHandler.getMeta().getContext())){ |
|
52 | + |
|
53 | +} |
|
54 | + |
|
55 | +``` |
|
56 | + |
|
57 | + |
|
58 | + |
|
59 | + |
|
60 | + |
|
61 | +## 为什么需要自己new Meta() |
|
62 | + |
|
63 | +场景1 : 服务是异步的情况,不是通过页面的API接口,以及启动事件触发! |
|
64 | + |
|
65 | +平台提供了执行异步服务 |
|
66 | + |
|
67 | +示例代码如下所示: |
|
68 | + |
|
69 | +``` |
|
70 | + @MethodService(description = "发送消息") |
|
71 | + public void sendMsg(RecordSet rs){ |
|
72 | + rs.callAsync("openWebSocket", 9999 ); |
|
73 | + } |
|
74 | + |
|
75 | + @MethodService(description = "打开websocket端口") |
|
76 | + public void openWebSocket(int port){ |
|
77 | + |
|
78 | + } |
|
79 | + |
|
80 | +``` |
|
81 | + |
|
82 | + |
|
83 | + |
|
84 | +场景2: 消费事件执行服务的情况! |
|
85 | + |
|
86 | +异步服务并不是通过引擎触发,提供如下代码所示: |
|
87 | + |
|
88 | +BaseContextHandler.getMeta().getContext() 需要把同步的数据传递给新创建的Meta类。 |
|
89 | +如果实在没有,可以通过查库获取token内容。 |
|
90 | + |
|
91 | + |
|
92 | +``` |
|
93 | + |
|
94 | + |
|
95 | +try (Meta meta1 = new Meta(null, BaseContextHandler.getMeta().getContext())){ |
|
96 | + |
|
97 | +} |
|
98 | + |
|
99 | +``` |
|
... | ... | \ No newline at end of file |