首页 文章

CArtAgO“execLinkedOp failed java.lang.IllegalArgumentException:INTERNAL ERROR:Op Exec Context无法恢复 . ”

提问于
浏览
-1

我正在尝试执行远程操作,这意味着另一个CArtAgO工件的操作 . 执行以下@LINK操作后,发生异常:

@LINK 
void reply() throws OperationException {
    try {
        log("received keepalive back!");
    }
}

CArtAgO给出以下错误消息:

错误:(ArtifactC)没有参数的execLinkedOp错误! cartago.OperationException:execLinkedOp failed java.lang.IllegalArgumentException:INTERNAL ERROR:无法恢复Op Exec Context . at camelartifact.CamelArtifact.receiveMsg(CamelArtifact.java:112)at camelartifact.CamelArtifact.access $ 200(CamelArtifact.java:48)at camelartifact.CamelArtifact $ ReadCmd.exec(CamelArtifact)的cartago.Artifact.execLinkedOp(Artifact.java:964) .java:207)at cartago.Artifact.await(Artifact.java:831)at camelartifact.CamelArtifact.listenRoutes(CamelArtifact.java:68)at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at at在java.base / java.lang上的java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中的java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) . 反射.Method.invoke(Method.java:564)位于cartago.Artifact.doOperation(Artifact.java:407)的cartago.ArtifactOpMethod.exec(ArtifactOpMethod.java:39),位于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无法恢复”以及如何修复它?

1 回答

  • 2

    当您在不是CArtAgO内部线程的情况下调用execLinkedOp时,通常会发生此错误,例如,直接从某些外部Java线程,您应该使用 IBlockingCmdawait 方法 . 您可以按照this示例进行操作 .

    另一个建议:

    • 在外部方法上使用@LINK注释(被称为remotelly的方法)

    • 使用@INTERNAL_OPERATION表示本地方法,使用execInternalOp()调用它们 .

相关问题