# Kommunkation Servlets/Browseraufruf Servlet



## coast (27. Sep 2012)

Guten Tag miteinander.

Die Woche neigt sich zu Ende, und natürlich darf ein Problem an dem ich hänge nicht fehlen ;(. Kurz zur Problemstellung

Ich habe 2 Server mit Servlets. Auf Server 1 werden die Servlets direkt mit dem Starten eines Programms ausgeführt (daran lässt sich leider nichts rütteln). Auf Server 2 habe ich meine Benutzeroberfläche. Nun soll mein Servlet (Vaadin btw) Daten vom Server 1 erhalten. Dies wollte ich über ein Servlet auf Server 1 machen, der sich mit dem Servlet auf Server 2 verbindet und die Daten verschickt.

Mein Ansatz war also: das Servlet auf Server 1 wird mit 
	
	
	
	





```
openConnection()
```
 mit dem Servlet auf Server 2 "verbunden" und die Daten werden übermittelt. Ich hab Verbunden bewusst in Anführungsstriche geschrieben...mit openConnection verbinden sich die Servlets nicht, sondern es wird eine neue Servlet-Session erzeugt. 



Daher meine erste Frage: Gibt es eine Möglichkeit, dass mit dem Aufruf von Servlet2 über 
	
	
	
	





```
openConnection()
```
 das Servlet im Browser geöffnet wird? Natürlich genau das Servlet das auch aufgerufen wurde damit die Session identisch ist. 
Es sollte dann in etwa so aussehen:

Server1 --> Servlet1 ------------ openConnection()------->Servlet2 [Browser] <-- Server 2

Falls dies nicht möglich ist meine zweite Frage:
Gibt es eine Möglichkeit die Servlets irgendwie zu verbinden? Oder könnte man die Session irgendwie übergeben um sie weiter nutzen zu können (ich hab da was von Session replication gelesen, aber nichts wirklich brauchbares gefunden...oder vielleicht war ich auch zu blöd es zu verstehen )
Dies würde dann so aussehen
Server1 --> Servlet1 ------------ openConnection()------->Servlet2 ---sessionübergabe-->Servlet3 [Browser] <-- Server 2

Viele Dank für eure Hilfe


----------



## coast (27. Sep 2012)

ich merke gerade dass das nicht so viel Sinn macht...was fängt denn Server2 damit an wenn er ein Servlet im Browser öffnet . Gut, das war natürlich quatsch. Es sollte er so laufen, dass ein Client auf Server 2 zugreift, und die Session die zwischen Server 1 und Server 2 besteht übernimmt. 

Um es nochmals grafisch zu versuchen:

Server1 --> servlet1-----openConnect()----->servlet2 <-- server2  ----> Browser vom Client übernimmt Session


----------



## coast (28. Sep 2012)

mmmh habe ich die Frage zu kompliziert gestellt? Hier nochmal ein neuer Ansatz:

Server 1 greift auf ein Servlet von Server 2 und erzeugt damit eine Session.

Server1-Servlet --------------------> Server2-Servlet

Es werden Daten von Servlet 1 an Servlet 2 geschickt. Dies funktioniert soweit auch. Die daten sollen allerdings für einen User dynamisch am Bildschirm angezeigt werden. 

Server1-Servlet --------------------> Server2-Servlet <------ User

Das Servlet auf Server 2 wird alledings 2 mal aufgerufen, ein mal vom Server 1, ein mal vom User. Daher hat der User keinen Zugriff auf die Daten, da dieser über die Session zwishen Server1 und Server2 geschickt werden. Und genau da liegt das Problem ;-)


----------



## coast (28. Sep 2012)

Es scheint ich habe eine Übergangslösung gefunden. Wen es interessiert:
ich benutzt java.uti.properties um die erhaltenen Daten zu speichern und rufe diese mit meiner User-Servlet auf. Allerdings müssen die Servlets natürlich zwingend im gleichen Container sein, ansonsten funktioniert es nicht...falls also jemand eine andere Lösung hat bitte bescheid geben


----------



## coast (1. Okt 2012)

und noch eine andere Lösung. Falls auch diese interessiert:
Falls Vaadin verwendet wird kann das Add-on BlackBoard benutzt werden, um trigger an andere Methoden zu versenden (bzw. diese "hören" über einen Listener auf einen Event). Siehe https://vaadin.com/directory#addon/blackboard


----------

