2017-05-08 2 views
0

Je suis nouveau sur kura et j'ai essayé de désinstaller à distance un paquet de déploiement en utilisant MQTT application d'Amit, mais je suis incapable de le faire. Ceci est la charge utile de demande que j'envoie du application-kura - impossible de désinstaller à distance le paquet de déploiement (deploy-v2)

dp.name = hello_osgi

job.id = 12345891011L

dp.version = 1.0.0

Je reçois l'erreur suivante dans la réponse sujet-

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

ci-après le Console- 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 

Existe-t-il un autre moyen d'envoyer la charge utile de demande?

Répondre

0

Un rapide coup d'oeil à DeploymentPackageUninstallOptions révèle que vous envoyez job.id comme chaîne au lieu d'un long .

Au lieu de

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

le code doit faire

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

Ou mieux, utiliser KuraUninstallPayload qui met déjà en œuvre toutes les méthodes avec le bon type. Je ne connais pas le MQTT UTility d'Amit, mais je pense que vous pouvez définir le type de la variable d'une façon ou d'une autre (ou changer son application pour définir le type correct et ensuite envoyer une demande de traction).

+0

J'avais compris que 'job.id' doit être long et que kura l'obtient en tant que String, d'où l'erreur. Mon but est de faire une application web capable d'installer, de désinstaller, de démarrer, d'arrêter à distance un paquet via des messages MQTT comme indiqué [ici] (http://eclipse.github.io/kura/ref/mqtt-namespace.html). Je ne sais pas si je peux utiliser l'API Kura dans l'application web, je ne pense pas que je peux, alors comment envoyer ces métriques? – Amir

+0

Vérifiez comment l'utilitaire MQTT envoie les paquets et fait de même. La dernière fois que j'ai vérifié (~ 1 an auparavant) KuraPayload était fondamentalement une carte qui a été sérialisée en utilisant la bibliothèque de Protobuf. –