【问题标题】:kura - cannot uninstall deployment package remotely(deploy-v2)kura - 无法远程卸载部署包(deploy-v2)
【发布时间】:2017-05-08 06:31:12
【问题描述】:

我是 kura 的新手,我一直在尝试使用 Amit 的 MQTT application 远程卸载部署包,但我无法这样做。这是我从应用程序发送的请求负载-

dp.name=hello_osgi

job.id=12345891011L

dp.version=1.0.0

我在响应主题中收到以下错误-

    -- listing properties --
    response.code=500
    response.exception.message=java.lang.String cannot be cast to java.lang.Long,
    response.exception.stack=java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Long           
            at org.eclipse.kura.core.deployment.uninstall.DeploymentPackageUninstallOptions.
            <init>(DeploymentPackageUninstallOptions.java:38)     
            at org.eclipse.kura.core.deployment.CloudDeploymentHandlerV2.doExecUninstall(CloudDeploymentHandlerV2.java:594)                
            at org.eclipse.kura.core.deployment.CloudDeploymentHandlerV2.doExec(CloudDeploymentHandlerV2.java:343)                
            at org.eclipse.kura.cloud.MessageHandlerCallable.call(Cloudlet.java:270)            
            at org.eclipse.kura.cloud.MessageHandlerCallable.call(Cloudlet.java:1)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)      
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)               
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)               
            at java.lang.Thread.run(Thread.java:745) ,
            response.code=500

         Malformed uninstall request

下面是kura控制台-

16:12:04,707 [MQTT Call: test-client] INFO  CloudServiceImpl:440  -               Message arrived on topic: $EDC/amir-kura/test-client/DEPLOY-V2/EXEC/uninstall
16:12:04,709 [pool-3-thread-2] ERROR CloudDeploymentHandlerV2:597  - Malformed uninstall request!
16:12:04,710 [pool-3-thread-2] INFO  DataServiceImpl:441  - Storing message on topic :$EDC/#account-name/CLIENT_QED0U1F74NLHA7M0Q5KI606QAU/DEPLOY-V2/REPLY/REQUEST_OTFGFHBKFSCVOI156408A4SU26, priority: 1
16:12:04,733 [DataServiceImpl:Submit] INFO  MqttDataTransport:512  - Publishing message on topic: $EDC/amir-kura/CLIENT_QED0U1F74NLHA7M0Q5KI606QAU/DEPLOY-V2/REPLY/REQUEST_OTFGFHBKFSCVOI156408A4SU26 with QoS: 0
16:12:04,745 [pool-3-thread-2] INFO  DataServiceImpl:444  - Stored message on topic :$EDC/#account-name/CLIENT_QED0U1F74NLHA7M0Q5KI606QAU/DEPLOY-V2/REPLY/REQUEST_OTFGFHBKFSCVOI156408A4SU26, priority: 1

还有其他方式发送请求载荷吗?

【问题讨论】:

    标签: osgi mqtt kura


    【解决方案1】:

    快速查看DeploymentPackageUninstallOptions 会发现您将job.id 作为String 而不是Long 发送。

    代替

    String reqId = "12345891011L";
    payload.addMetric("job.id", reqId);
    

    代码应该做的

    long reqId = 12345891011L;
    payload.addMetric("job.id", reqId);
    

    或者更好的是,使用KuraUninstallPayload,它已经实现了具有正确类型的所有方法。

    我不知道 Amit 的 MQTT UTility,但我认为您可以通过某种方式设置变量的类型(或更改他的应用程序以设置正确的类型,然后发送拉取请求)。

    【讨论】:

    • 我发现job.id 需要很长,而 kura 将它作为字符串获取,因此出现错误。我的目标是使 Web 应用程序能够通过 MQTT 消息远程安装、卸载、启动、停止捆绑包,如 here 所示。我不知道我是否可以在我认为不能的 Web 应用程序中使用 Kura API,那么我应该如何发送这些指标?
    • 检查 MQTT Utility 如何发送数据包并执行相同操作。上次我检查(大约 1 年前)KuraPayload 基本上是一个使用 Protobuf 库序列化的 Map。
    猜你喜欢
    • 2017-10-15
    • 1970-01-01
    • 2019-07-14
    • 2017-11-24
    • 2019-12-19
    • 2021-10-03
    • 1970-01-01
    • 2023-03-14
    • 2022-01-07
    相关资源
    最近更新 更多