2017-05-08 47 views
0

我是库拉的新手,我一直试图使用Amit的MQTT application远程卸载部署软件包,但我无法这样做。这是请求负载我从应用程序 -kura - 无法远程卸载部署软件包(deploy-v2)

dp.name = hello_osgi

job.id = 12345891011L

dp.version发送= 1.0.0

我得到以下错误topic-

-- 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 

继响应库拉控制台 -

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 

是否有其他方式发送请求有效载荷?

回答

0

快速浏览一下DeploymentPackageUninstallOptions表明您发送job.id字符串而不是

而不是

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

的代码应该做

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

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

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

+0

我已经知道'job.id'需要很长时间,而库拉会将它作为String来处理,因此会出现错误。我的目标是使Web应用程序能够通过MQTT消息远程安装,卸载,启动和停止一个包,如[这里](http://eclipse.github.io/kura/ref/mqtt-namespace.html)所示。我不知道我是否可以在Web应用程序中使用Kura API,我认为我不能,所以我应该如何发送这些指标? – Amir

+0

检查MQTT实用程序如何发送数据包并执行相同操作。我上次检查(〜1年前)KuraPayload基本上是一个使用Protobuf库序列化的Map。 –