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

时间:2017-09-05 00:53:52

标签: java artificial-intelligence agent multi-agent

我正在尝试执行远程操作,这意味着另一个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无法恢复”以及如何修复它?

1 个答案:

答案 0 :(得分:2)

当您在不作为CArtAgO内部线程的情况下调用execLinkedOp时,通常会发生此错误,例如,直接来自某些外部Java线程,您应该使用 IBlockingCmd 等待方法。您可以关注this示例。

另一个建议:

  • 在外部方法(正在被远程调用的方法)上使用@LINK注释
  • 将@INTERNAL_OPERATION用于本地方法,使用execInternalOp()来调用它们。