我正在尝试执行远程操作,这意味着另一个CArtAgO工件的操作。执行以下@LINK操作后,正在发生异常:
@LINK
void reply() throws OperationException {
try {
log("received keepalive back!");
}
}
CArtAgO提供以下错误消息:
错误:(ArtifactC)没有参数的execLinkedOp错误! cartago.OperationException:execLinkedOp失败 java.lang.IllegalArgumentException:INTERNAL ERROR:Op Exec Context 无法恢复。在 cartago.Artifact.execLinkedOp(Artifact.java:964)at camelartifact.CamelArtifact.receiveMsg(CamelArtifact.java:112)at at camelartifact.CamelArtifact.access $ 200(CamelArtifact.java:48)at camelartifact.CamelArtifact $ ReadCmd.exec(CamelArtifact.java:207)at at cartago.Artifact.await(Artifact.java:831)at camelartifact.CamelArtifact.listenRoutes(CamelArtifact.java:68)at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(母语 方法)at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.base / java.lang.reflect.Method.invoke(Method.java:564)at cartago.ArtifactOpMethod.exec(ArtifactOpMethod.java:39)at cartago.Artifact.doOperation(Artifact.java:407)at cartago.Artifact.access $ 200(Artifact.java:32)at cartago.Artifact $ ArtifactAdapter.doOperation(Artifact.java:1275)at cartago.WorkspaceKernel.serveOperation(WorkspaceKernel.java:1136)at cartago.WorkspaceKernel.access $ 000(WorkspaceKernel.java:48)at cartago.WorkspaceKernel $ EnvironmentController.run(WorkspaceKernel.java:1477)
这个错误究竟是什么“op exec context无法恢复”以及如何修复它?
答案 0 :(得分:2)
当您在不作为CArtAgO内部线程的情况下调用execLinkedOp时,通常会发生此错误,例如,直接来自某些外部Java线程,您应该使用 IBlockingCmd 和等待方法。您可以关注this示例。
另一个建议: