2009-11-24 8 views
1

J'ai créé un service Web en utilisant import javax.xml.ws.Endpoint et un client qui s'y connecte en utilisant Service.create et service.getPort. Maintenant, tout fonctionne parfaitement bien quand seulement en utilisant une petite quantité de connexions ...Un point de terminaison publié a-t-il un nombre limité de connexions? [Java 1.6.0_16]

Mais - si je lance permet de dire que 1000 connexions simultanées (clients) à mes services Web que je reçois ce qui suit « parfois »

com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect 
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect 
... then it works ... 
... works again ... 
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect 
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.ConnectException: Connection refused: connect 
... works ... 
... works ... 

(vous avez l'idée)

Mais ce n'est pas cohérent ... alors je me demande ... y at-il une limite? (J'utilise le serveur HTTP léger fourni par le JDK)

+0

Les serveurs Web peuvent gérer un nombre limité de connexions simultanées. Normalement, la limite est très élevée. Vérifiez la limite du serveur HTTP léger et voyez si c'est configurable. Je n'ai jamais utilisé ce serveur. –

+0

Quel est le système d'exploitation inclus? – Jherico

Répondre

1

Il n'y a pas de limite stricte mais le nombre de connexions est certainement limité. Selon votre matériel et votre système d'exploitation, la limite peut varier de centaines de connexions simultanées à des milliers. Lorsque vous vous connectez au point de terminaison, le serveur HTTPS intégré accepte les connexions et les transmet aux gestionnaires. Si les demandes entrantes arrivent trop vite, le serveur HTTPS doit mettre ces connexions dans une file d'attente créant un backlog. L'arriéré est limité. Lorsque cette limite est atteinte, la nouvelle connexion est rejetée et vous voyez l'erreur sur le client.

Vous pouvez augmenter l'arriéré en faisant quelque chose comme ça,

server = HttpServer.create(address, 128); 

Cela peut retarder l'erreur, mais vous finirez par obtenir si vous envoyez la demande plus rapide que le serveur peut digérer.

Questions connexes