2009-05-24 9 views
2

Je crée une application Rails et sur celle-ci, il devrait y avoir une applet Java.Communication par applet Java avec l'application Rails

Ma question et mon problème est que l'applet doit être étroitement intégré avec les pièces Rails. Je dois pouvoir obtenir une liste de tous les utilisateurs, mettre à jour une image, etc ... Et il y a une quantité étonnamment petite d'informations disponibles sur Internet pour savoir comment utiliser les applets avec Rails. Alors s'il vous plaît donnez-moi quelques indices. Quelle est la meilleure façon de le faire?

  1. Envoyer les paramètres à l'applet?
  2. Utiliser l'interface Rails REST de l'applet?
  3. Utilisez JRuby en quelque sorte?
  4. Autre ....?

Merci!

Répondre

2

Pouvez-vous fournir plus de détails? En attendant, voici mon avis sur vos questions:

  1. paramètres Envoyer à l'applet?

application Votre rails sera en mesure de servir l'applet, mais une fois servi, je don pense que vous serez en mesure d'envoyer des messages à ce (mais vous serez en mesure de répondre à des messages, ce qui est peut-être ce que vous demandez).

  1. Utiliser l'interface Rails REST à partir de l'applet?

Vous ai répondu que genre de vous-même. REST est une conception d'interface et peut donc être accessible à partir de tout ce qui peut émettre une requête HTTP. L'astuce consiste à construire correctement l'URL pour que les rails sachent ce que vous voulez faire. Il y a de bonnes informations sur la configuration des rails routes (REST et non REST) ​​ici http://guides.rubyonrails.org/routing.html

  1. Utilisez JRuby en quelque sorte?

Vous pouvez utiliser jruby pour cela, mais vous n'avez pas besoin de le faire. Votre serveur (rails) et votre client (navigateur/applet) communiquent entre eux via http et n'ont donc pas besoin d'être la même langue ou de s'exécuter sur la même machine virtuelle.

espoir qui aide ....

1

Je pense que la raison pour laquelle vous avez probablement rien trouvé précis sur Applets et Rails est qu'ils fonctionnent un peu à différents niveaux et ne sont pas vraiment dépendants l'un de l'autre. On dirait que Rob essayait de clarifier certaines choses, alors je vais faire un pas de plus juste pour être sûr que nous sommes tous sur la même page.

Le rôle de Rails est de générer et de diffuser des images HTML/XML/Javascript/images via un serveur Web vers le navigateur Web de l'utilisateur pour le rendu. Une partie de ce code HTML sera une balise APPLET (ou éventuellement OBJECT), qui indique au navigateur de charger l'applet. Habituellement, cela demande au navigateur d'appeler le plug-in Java et lui permet de gérer le chargement de l'applet.Une fois chargé et en cours d'exécution, cependant, même si l'applet est affichée sur la page Web actuelle dans le navigateur (ou peut-être même dans une autre fenêtre), il n'est pas très conscient de la page Web dans laquelle il est assis. , les applets ne se soucient pas du navigateur ou de la page dont ils font partie. Ainsi, si une applet a besoin de plus d'informations ou a besoin de demander des données, elle enverra généralement une requête HTTP au serveur d'où elle provient. Il analyserait ensuite les données et se mettrait à jour.

Je suppose que ce dont vous avez probablement besoin est que quelque chose soit cliqué ou entré dans l'applet, et que ces données soient utilisées pour mettre à jour la page web que Rails sert au navigateur. Avec une applet, vous avez à peu près 2 options:

  1. Utilisez l'application serveur Web pour partager des informations d'état
  2. Utilisez la communication Java à Javascript en utilisant JSObject comme indiqué à http://java.sun.com/products/plugin/1.3/docs/jsobject.html

Honnêtement , l'option numéro 2 contient tellement de mises en garde, que je ne l'utiliserais jamais à moins d'avoir un contrôle total sur les versions de navigateur et Java sur tous les systèmes des utilisateurs potentiels. Même alors, je serais préoccupé par une mise à jour de quelque chose qui le brise. Fondamentalement, l'option numéro 1 vous laisse l'Applet et le Javascript/HTML interroger périodiquement le serveur Web (Rails) pour voir s'il y a des mises à jour ou des demandes auxquelles ils doivent répondre pour l'échange de données. Si l'applet est mise à jour par l'utilisateur, il envoie un message au serveur via une requête/post d'URL et la requête suivante (probablement via un appel de type AJAX) par la page Web verra les nouvelles données et la page Web être mis à jour avec.

J'espère que cela aide.

0

Deux très bonnes réponses. Je les apprécie beaucoup, merci! En lisant vos messages, j'ai réalisé que le meilleur choix est d'utiliser l'interface HTTP-Rails REST REST. Cependant, je vois des inconvénients avec cette approche. Mais je ne vois pas de meilleure solution. Une fonctionnalité que l'applet devrait avoir, est de pouvoir parcourir et rechercher dans tous les produits, ce qui peut être assez. L'envoi d'une requête HTTP pour chaque recherche sera coûteux. Peut-être que je pourrais résoudre ceci en chargeant tous les produits quand l'applet commence. Ensuite, la navigation et la recherche seraient rapides. Ou peut-être faire une bonne mise en cache. Donc, une fois qu'ils sont trouvés, je ne les récupère plus. A propos de ne pas trouver beaucoup d'informations à ce sujet sur le net. Je vois ton point monceaux. Mais ... je pense toujours qu'il devrait y en avoir plus. Je veux dire, dans ma situation, je voudrais vraiment une bibliothèque spécifique Rails qui m'a aidé à envoyer des demandes pour corriger les URL. Mauvais Java n'est pas si dynamique que ça. C'est un peu difficile de faire des choses automatiquement, comme dans Ruby and Rails. Peut-être que je vais écrire une petite bibliothèque pour ça. Je veux dire, je dois l'écrire quand même. Alors pourquoi ne pas en faire une bibliothèque? Certaines personnes pourraient en avoir besoin.