2010-07-08 5 views
0

J'ai écrit un serveur très simple qui accepte les connexions socket sur un port spécifique et communique avec les clients via ce socket. Maintenant, j'ai un client lib qui fonctionne parfaitement bien dans les applications J2SE. Cependant, si j'essaie d'utiliser cette bibliothèque dans une servlet (la servlet étant le client) pour communiquer avec le serveur, cela ne fonctionne pas. Malheureusement, il n'y a pas d'exception ou quelque chose qui pourrait m'aider. Au lieu d'utiliser la bibliothèque, rien ne se passe. C'est l'appel à la méthode dans laquelle le socket est ouvert bloque simplement indéfiniment alors qu'aucune connexion n'est faite au serveur. Je pense que cela pourrait être un problème général. Peut-être que des choses de ce genre ne sont pas autorisées dans une servlet? Mais même si ce n'est pas le cas, je m'attendrais au moins à ce qu'une exception soit levée.Connexion de socket ouverte sur un conteneur de servlets

Le conteneur de servlet est Tomcat à propos.

Quelqu'un at-il une idée de pourquoi cela ne fonctionne pas?

+0

pouvez-vous poster votre code –

+0

Je dois être un peu plus patient avant d'utiliser le mot indéfiniment je suppose. Je viens de recevoir une exception d'E/S: réinitialisation de la connexion. Dunno si cela aide. Oui, je peux poster un code. Je le ferai bientôt (il faut d'abord le prendre en main). – Machisuji

Répondre

0

Ok ici est là problème réel:

Il semble y avoir une différence de comportement entre Windows et Linux. J'ai développé le serveur + lib sous Linux tandis que Tomcat s'exécute sur une machine Windows.

Entre autres choses, le serveur dont je vous ai parlé exécute une commande via ProcessBuilder. Ce qui a effectivement été bloqué indéfiniment était le processus # waitFor.

Sous Windows. Sous Linux, cela fonctionne très bien et revient dès que le processus est terminé. Sous Windows, le processus # waitFor ne fonctionne que lorsque je lis InputStream du processus pour une raison quelconque.

Désolé!

Questions connexes