# Mehrere Webservices gleichzeitig abrufen



## Robsta10 (19. Jan 2009)

Hallo Leute,

meine Aufgabe ist es, eine Suchseite zu entwickeln, die mehrere Webservices absucht. Die Antwortzeiten der verschiedenen Webservices sind sehr unterschiedlich und können bis zu 15 Sekunden lang sein, während andere Services prompt (< 1 Sekunde) antworten.

Als Ergebnis sollte eine Tabelle gezeigt werden, die pro Webservice die Anzahl der Suchresultate beinhaltet. Mein Ziel ist es, dass die Tabelle nicht erst dann eingeblendet wird, wenn das langsamste Webservice geantwortet hat. Stattdessen sollte sie jedesmal aktualisiert werden, sobald die Antwort eines Webservice eingetroffen ist.

Ich habe für dieses Szenario zwei Ideen:
1.) Pro Webservice einen asynchronen Request. So viel ich weiß, ist die Anzahl der gleichzeitigen Requests in den meisten Browsern aber auf 2 beschränkt.
2.) Einsatz von Polling. Nachteil wäre, dass man am Server die Logik für eine parallelisierte Suche implementieren muss. Mit der Anzahl von gleichzeitigen Suchen steigt auch die Anzahl der Threads, was sehr schnell sehr ressourcenfressend sein könnte.

Ich habe schon sehr lange nach möglichen Patterns gesucht, da das Problem allgemeiner Natur zu sein scheint. Meine Frage ist, ob es noch andere Lösungswege für das Problem gibt. Vielleicht hat jemand sich mit diesem Problem schon einmal befasst und kann mich auf einen hilfreichen Artikel oder so verweisen. Was haltet ihr von den beiden Ideen bzw. wie würde eure Architektur aussehen?

Viele Grüße,
Robsta


----------



## Halunken-Joe (20. Jan 2009)

Robsta10 hat gesagt.:
			
		

> Ich habe schon sehr lange nach möglichen Patterns gesucht, da das Problem allgemeiner Natur zu sein scheint. Meine Frage ist, ob es noch andere Lösungswege für das Problem gibt. Vielleicht hat jemand sich mit diesem Problem schon einmal befasst und kann mich auf einen hilfreichen Artikel oder so verweisen. Was haltet ihr von den beiden Ideen bzw. wie würde eure Architektur aussehen?


Schau mal auf JavaThreads.de Die Richfaces in der nagelneuen Version haben eine weitere Ajax Komponente bekommen: Ajax Queue. Mit dieser ist es möglich direkt hintereinander abgesetzte Ajax Request so zu managen, dass der zweite Ajax Request erst abgesetzt wird wenn der erste beendet wurde. Somit kann man parallele Ajax Requests verhindern.

Hilft Dir das?


----------



## Robsta10 (20. Jan 2009)

Halunken-Joe hat gesagt.:
			
		

> Schau mal auf JavaThreads.de Die Richfaces in der nagelneuen Version haben eine weitere Ajax Komponente bekommen: Ajax Queue. Mit dieser ist es möglich direkt hintereinander abgesetzte Ajax Request so zu managen, dass der zweite Ajax Request erst abgesetzt wird wenn der erste beendet wurde. Somit kann man parallele Ajax Requests verhindern.
> 
> Hilft Dir das?



Erstmal vielen Dank für die Antwort. 

Eine Ajax Queue bietet sich in meinem Fall nicht an, denn ich will ja, das mehrere Services parallel abgefragt werden. Wenn ich den Mechanismus der Ajax Queue richtig verstanden habe, dann wird ein zweiter Request erst dann abgeschickt, wenn der erste Request abgeschlossen wurde. Das würde bedeuten, dass wenn Service 1 10 Sekunden zum Antworten benötigt, Service 2, was unter Umständen nur 1 Sekunde braucht, erst nach diesen 10 Sekunden abgefragt werden kann. Service 2 würde durch Service 1 also unnötig "eingebremst" werden.

In der Zwischenzeit bin ich noch auf eine weitere Möglichkeit hingewiesen worden: Eine HTTP Verbindung, die durch den Request aufgebaut wurde, bleibt offen und der Server schickt nicht eine Response sondern mehrere Teilresponses zurück. Was ich weiß nennt man das HTTP Streaming.


----------

