2009-03-31 7 views
1

J'utilise persevere pour une application que j'écris qui contrôle à distance hardwere. Persevere est écrit en Java et ne fournit pas d'API alternative. J'utilise une interface graphique basée sur le Web comme panneau de contrôle. Jusqu'ici tout va bien.J'utilise un serveur de comète et je veux qu'il interagisse avec C++

Je peux obtenir et définir des données en utilisant des canaux REST comme le dojo, mais le problème est que je ne sais pas vraiment comment utiliser les canaux REST. Quelle bibliothèque dois-je utiliser pour le faire?

+0

Juste pour clarifier. Je demande si curllib ++ est une solution acceptable pour envoyer des en-têtes REST ou devrais-je utiliser une autre bibliothèque? –

+0

Vous devez préciser votre question. Le serveur Persevere fonctionne-t-il sur le matériel distant? Si vous utilisez une interface graphique Web, pourquoi avez-vous besoin d'une autre bibliothèque pour envoyer les en-têtes REST? Une topologie de votre système clarifierait les choses. – kgiannakakis

+0

Persevere s'exécute sur le serveur principal qui contrôle le matériel distant. L'interface graphique Web a une interface pour interagir directement avec Persevere. Je parle de dojox.data.PersevereStore. Maintenant, le programme qui contrôle le matériel distant est écrit en C++ et par conséquent je voudrais voir la meilleure façon de gérer les canaux REST en C++. On m'a également parlé de boost.asio. Cela ressemble à une meilleure option car le code est plus clair. –

Répondre

1

Si vous utilisez gcc comme chaîne d'outils, vous pouvez intégrer une JVM avec GCJ pour persévérer dans votre application. GCJ, il est facile d'appeler C++ à partir de Java avec son interface CNI (beaucoup plus facile que JNI). J'ai utilisé cette méthode pour utiliser Java scripting dans notre application C++. Vous pouvez même compiler le pot Persevere dans une bibliothèque native et le lier à votre application avec GCJ.

La meilleure référence est la GCJ Documentation.
Il ya aussi un journal Linux contient l'article Embedded Java with GCJ que vous pouvez lire.
Vous pouvez également étudier applications that use gcj.

+0

Hmm idée sympa et ensuite j'interfère directement avec persevere? Est-il plus efficace que d'utiliser les canaux REST? Je sais que vous pouvez passer 10 Go/s si vous envoyez une socket interne. –

+0

Il devrait être aussi rapide que possible car il se résume à des appels de fonction. Avec GCJ vous implémentez efficacement vos classes Java en C++ et laissez simplement persévérer les appeler. J'ai fini par créer des implémentations wrapper C++ (encapsulant la gestion des exceptions C++) que j'ai appelées depuis les parties du code GCJ, comme on ne peut pas encore mixer les exceptions Java et C++ dans GCJ (encore). Mais sinon, c'était une expérience relativement indolore. – lothar

+0

Depuis que je cours sur linux correspond à G ++. Avez-vous un exemple courant que je peux lire? Avez-vous également un didacticiel sur la chaîne d'outils nécessaire pour appeler GCJ et G ++? –

Questions connexes