Blacknight91titi
Messages postés1732Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 9 mars 2015
-
19 juil. 2011 à 18:08
Utilisateur anonyme -
25 juil. 2011 à 19:44
Bonjour,
Oula, cela faisait un bon moment que je n'étais pas retourné sur Codes-Sources. Et pourtant que de choses apprises grâce à ce site !
Je me permets aujourd'hui de vous exposer mon problème, espérant ainsi un point de vu éclairé de développeurs java expérimentés !
Introduction
J'ai pour mission de réaliser une application, qui tournera en continue sur un serveur ; alimentant ainsi une base de donnée en donnée, par la suite lues depuis un site web.
(la phrase paraît compliqué... mais j'espère que c'est compréhensible)
Souhaitant une gestion des threads (pour effectuer plusieurs tâches en même temps), une certaine puissance de calcul et fiabilité, c'est donc vers Java que je me suis tourné.
API Java
Initialement, l'application disposant une interface graphique, j'avais prévu certains contrôles liés aux fonctionnements de l'application ; permettant de la guider dans ses tâches et surtout de disposer de statistiques sur celles effectuées.
Malheureusement, l'application Java ne pourra disposer d'interface graphique, car exécuter sur un serveur distant (sans serveur x).
Un contrôle de l'application étant nécessaire malgré tout, j'envisage donc de créer une interface web (dont l'accès sera bien entendu restreint) dont le rôle sera de piloter cette application Java.
La question est donc : Comment piloter mon application Java depuis une interface web ?
En effectuant quelques recherches, j'ai crû comprendre que les web services répondraient à cette question.
Web-service
N'ayant qu'un expérience de client sur les web-services, il va donc me falloir en créer un cette fois-ci.
Il semble qu'un Web-service basé sur SOAP soit une bonne alternative, d'autant que Javascript le supporte, ce qui assurerait ma liaison entre les deux technologies.
Quelques questions se posent malgré tout :
- Vais-je dans la bonne direction ?
- Mon application Java étant un client lourd, peux-t'il héberger un web-service ?
Bref, autant d'interrogations à résoudre avant de se lancer dans le code !
La solution vous semble-t'elle réalisable ?
Existe-t'il une solution plus appropriée ?
Blacknight91titi
Messages postés1732Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 9 mars 20152 23 juil. 2011 à 10:39
Bonjour,
De ce que j'ai pu comprendre du tutoriel en l'analysant, c'est qu'il permet à une application Java d'appeler une page web.
Hors dans mon cas, ce n'est pas dans ce sens que je souhaites procéder mais dans l'autre.
À savoir que c'est le serveur web qui devra contrôler l'application Java.
Plus précisément, un utilisateur accèdera à une page web, lui permettant de suivre en direct les statistiques sur l'application Java (tournant sur le serveur) et lui permettant également de la contrôler.
En résumé, c'est la page web (ou le serveur apache) qui initie la requête.
Page web ---------> App Java
send data
Page web <--------- App Java
return data
Penses-tu que ce soit possible ?
Osteres
[www.osteres.com www.osteres.com]
Vous n’avez pas trouvé la réponse que vous recherchez ?
Tu peux tout à fait adapter l'exemple que je t'ai donné à ton cas, tu peux envoyer des requêtes HTTP dans les deux sens. C'est quelque chose qui se fait couramment dans les jeux vidéo en Java qui souhaitent échanger de l'information en passant à travers les firewalls, en utilisant le port 80. Dans ton cas, c'est l'application cliente qui va attendre des requêtes HTTP venant du serveur dans un premier temps. Cordialement.
Blacknight91titi
Messages postés1732Date d'inscriptionjeudi 17 juin 2004StatutMembreDernière intervention 9 mars 20152 25 juil. 2011 à 16:07
Je n'arrive pas à visualiser comment cela pourrai se faire.
D'après le lien que tu m'as passé, les requêtes partent du client lourd (en Java) et arrivent sur le serveur web (apache) qui répond ensuite.
Tu expliques ensuite qu'il est possible pour le serveur d'initier une requête vers le client lourd (Java) ?
À moins d'ouvrir un socket ou quelque chose de similaire, cela me semble impossible. À moins que je me trompe.
En admettant que ce soit possible, pourrai-tu m'en dire davantage ?
Dans cette situation, c'est le serveur web (apache) qui initierai la requête.
Pour simplifier, serai-ce possible que ce soit le client web (via un navigateur) qui communique directement avec le client lourd (Java) ? Via Javascript par exemple. On gagnerait un intermédiaire.
Passer par le serveur ne pose pas de problème en soit.
Le mécanisme de connection est plus général que tu le penses. L'exemple que je t'ai donné est centré sur le protocole HTTP et l'utilisation de servlets. Si tu as du mal à t'en servir, tu peux en effet t'orienter vers des appels distants (RMI, Corba, RPC), des webservices ou des sockets (UDP, TCP). Tu peux utiliser l'API WebSocket en JavaScript (pas encore largement supportée pour le moment) et les sockets Java de base depuis un client lourd.