2009-09-29 8 views
2

Hébergement d'une application sur un serveur d'applications Web, p. JBoss apporte automatiquement de nombreuses fonctionnalités spécifiques au serveur d'applications. sécurité, mise en grappe & équilibrage de charge, etc. J'ai une situation où je dois développer une application serveur avec laquelle les applications héritées peuvent communiquer via socket TCP/IP et être hautement disponibles. Au départ, j'avais besoin d'utiliser le serveur d'applications JBoss pour tirer parti de son support de clustering pour HA. Cependant, je ne suis pas sûr qu'il soit possible de se connecter à une application Web JBoss en utilisant des sockets TCP/IP purs à partir d'applications java et non-java. Quel est le meilleur moyen d'y parvenir sans utiliser le service Web ou l'approche Http? MISE À JOUR: Je suis particulièrement intéressé de savoir comment les applications héritées se connecteront à l'application Web hébergée via le socket TCP/IP.Communication avec une application Web Java à partir d'une application non-java via une socket TCP/IP

Répondre

1

Une solution très simple pour relier les deux mondes serait d'ajouter un simple serveur Java qui mappe les anciennes requêtes TCP/IP aux requêtes HTTP. C'est probablement une tâche assez ardue, donc ce "serveur" sera simple à écrire et à maintenir. De plus, ce serveur n'aura pas besoin d'autant de puissance puisqu'il n'accepte et ne transfère que les connexions (pas de logique métier ou de code DB). Sur le serveur JBoss, vous développez comme vous le feriez normalement. Les anciennes applications se connectent au petit serveur passerelle qui transmet les requêtes à JBoss et traduit le résultat.

Cela garantit que vous construisez pour le futur: Lorsque de nouvelles applications sont développées, elles peuvent se connecter directement à JBoss et utiliser toutes les excellentes fonctionnalités HTTP.

+0

Les exigences HA vont maintenant se déplacer vers le serveur passerelle. Donc, le serveur de pont devait être tolérant aux pannes maintenant. droite! – cosmos

0

Je voudrais implémenter un client http (1.0) très simple.

+0

La question dit «sans une approche Http» :-) –

+0

Je sais, mais c'est toujours le moyen le plus simple d'aller –

1

Il n'y a aucune raison pour que vous ne puissiez pas ouvrir un socket normal dans (disons) une application de servlet hébergée dans JBoss.

Vous pouvez ensuite obtenir un flux d'octets à partir de cela. Le mal de tête consiste alors à décider d'une représentation indépendante de la plate-forme de vos messages, de sorte que votre extrémité client puisse formater et envoyer de manière à ce que l'extrémité hébergée par JBoss puisse lire. Mais tout est parfaitement faisable.

+0

Merci. En fait, je prévois de déployer une servlet hébergée dans JBoss. Plusieurs applications Java et C# se connectent à l'aide de la socket TCP/IP et des messages texte séparés par des tuyaux. Je sais comment faire cela en utilisant URLConnection/HttpURLconnection à partir d'un client Java autonome. Cependant, je dois également prendre en charge les applications Java et C# sur des sockets TCP/IP. S'il vous plaît donnez votre avis. – cosmos

+0

J'ai écrit une simple servlet qui lit à partir de la requête inputtream et l'imprime. Suppression du servlet dans le contexte ROOT de Tomcat. A écrit un client Java qui ouvre un socket sur localhost @ 80. Alors que le client se connecte réellement au serveur Tomcat sur le port 80, la servlet ne reçoit aucune entrée du client. On dirait que Tomcat mange le message. Y a-t-il une configuration spécifique que je dois faire dans Tomcat? – cosmos

Questions connexes