Announcement

Collapse
No announcement yet.

Daten zwischen Servern verschicken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Daten zwischen Servern verschicken

    Guten Morgen miteinander,

    ich habe folgende Problemstellung:

    ich habe 2 Server auf denen jeweils Servlets laufen (Vaadin). Nun würde ich gerne Daten von Server 1 auslesen und an Server 2 schicken (und dementsprechend auf Server 2 emfpangen/verarbeiten). Das Gleiche auch umgekehrt.
    Auf Server 1 läuft bereits ein fertiges Servlet-Programm mit einem HTTP-Send und Http-Listen Service.
    Nach meinem Verständnis (was ich bisher über Recherchen herausgefunden habe) kann ich auf Server2 die Http-Daten "abfangen"...nur wie das genau funktioniert weiß ich nicht. Ebenso sind meine Versuche, Daten zu senden fehlgeschlagen.
    Zu Testzwecken habe ich versucht auf einem Server Daten an sich selbst zu schicken und zu empfangen, wobei das noch nicht funktioniert hat. Hat jemand einen Ansatz oder eine Tipp, wie ich es am Besten umstetzen könnte?

    Viele Grüße

  • #2
    Ein Listener ist nicht erforderlich. Dieser würde dazu dienen, sämlichte eingehende Requests zu filtern. Du sendest ein Request an das Servlet. Entweder per POST oder GET. Daten werden entsprechend übergeben
    http://openbook.galileocomputing.de/javainsel9/javainsel_21_004.htm#mjeb9209c2668af7983ec6bb0564b c6b4d


    Zuletzt editiert von Christian Marquardt; 26.09.2012, 11:29.
    Christian

    Comment


    • #3
      Hallo Christian,

      danke für deine Antwort. Ich dachte, bei einem POST- oder GET-Request wird der Client auf das Servlet verwiesen an das gesendet wurde? Mein Bestreben wäre, dass der Client auf Servlet 1 bleibt...man könnte es sich vorstellen wir wenn zwei clients auf zwei unterschiedlichen Servlets Daten untereinenander austauschen ohne ihre eigenen Servlets zu verlassen

      Comment


      • #4
        Ich verstehe den Satz nicht. Es gibt grundsätzlich 2 Möglichkeiten.

        Bei beiden ist es erforderlich, dass die zu sendenden Daten per Get oder Post in einem Request gepackt werden.

        1.
        Du ruft auf dem Zielserver über die URL dein Servlet auf. Also Server1.de/meineApp/meinServlet
        Das Servlet übernimmt die Verarbeitung der Daten

        2.
        Du rufst auf den Zielserver irgendeine auch nicht existierende URL auf. Da du ein Listener implementiert hast, filtert dieser den Request und übernimmt die Verarbeitung der Daten

        Ein Client hat keine Servlets. Diese laufen immer auf einem Server.
        Zuletzt editiert von Christian Marquardt; 26.09.2012, 12:10.
        Christian

        Comment


        • #5
          Ich versuche es nochmal zu erklären:

          Server1 mit bereits bestehendem Programm, das via HTTP Daten sendet. Als Angabe heißt es, im Zielsystem benötigt man einen HTTP-Listener.
          Server2 mit meinem Programm soll nun die Daten emfpangen und verarbeiten.

          ebenso umgekehrt.

          Wenn ich nun (meines wissens bzw. laut Internet) eine POST-Übergabe von Server2 zu Server1 mache, wird der Client automatisch auf das Servlet von Server1 geleitet. Der Client hat natürlich kein eigenes Servlet, aber eine Session auf das Servlet.

          Um das ganze mal etwas zu entkomplizieren:

          ich suche eine Möglichkeit, wie ich den Listener auf Server 2 schreibe, um Daten von Server 1 zu empfangen (umgekehrt lassen wir mal außen vor).

          Daten via HTTP
          Server1 --------------------->[Listener]Server2

          Ich habe nichts gefunden wie ich diesen Listener schreibe. Lediglich onRequestStart und onRequestEnd habe ich als Kompenenten von Vaadin gefunden, allerdings scheinen diese nur bei Request vom Client zu reagieren (klick auf einen Button) und nicht wenn die besagte Http-Sender-Funktion des Servers1 aktiv ist. Ich denke ich habe hier grundsätzlich den falsche Ansatz wie ich auf Server2 die Daten auslesen kann!?

          Comment


          • #6
            Als Angabe heißt es, im Zielsystem benötigt man einen HTTP-Listener.
            Muss man nicht, s.o.

            Ich weiss nicht was Vaadin ist und mit einem Button kann das alles definitv nichts zu tun haben, da es serverseitig läuft

            ich suche eine Möglichkeit, wie ich den Listener auf Server 2 schreibe, um Daten von Server 1 zu empfangen
            2 Möglichkeiten sind oben dargestellt

            Hier ist ein Beispiel, wie man einen Filter oder Listener im Tomcat einrichtet

            http://wiki.metawerx.net/wiki/Web.xml

            Mir ist nciht klar warum du

            Server1 -> URLConnection auf Server2 nicht die Daten übergeben willst
            Zuletzt editiert von Christian Marquardt; 26.09.2012, 14:35.
            Christian

            Comment


            • #7
              So ganz steige ich immer noch nicht dahinter was du meinst. Was verstehst du unter URLConnection Datenübergabe?

              Comment


              • #8
                http://docs.oracle.com/javase/7/docs...onnection.html


                Dein Client schick irgendwelche Daten an Server1. Dieser nimmt diese in einem Servlet entgegeben. Dann baut Server1 mittels o.a. Klasse eine Verbindung zu Server2 auf. Dort werden die eingehenden Daten ebenfalls von einem, Servlet entgegenommen und verarbeitet. Server1 ist jetzt gegenüber Server2 der Client. Über das Ergebnis der Verarbeitung informiert Server2 nun Server1 (bsp. durch HTTP-Code oder auch einfachen Text). Server1 nimmt das Ergebnis der Verarbeitung (positiv oder negativ) entgegen und infomiert darüber den ursprünglich anfragenden Client, in dem er im Response bsp. eine OK-Seite anzeigt
                Christian

                Comment


                • #9
                  Ach URLConnection ist ne Klasse...sorry, das hatte ich missverstanden. Dann mach ich mich da mal ran, merci beacoup :-)

                  Comment


                  • #10
                    http://www.straub.as/java/net/urlconn.html
                    Christian

                    Comment


                    • #11
                      und schon wieder komme ich nicht weiter .
                      Der Datenaustausch von 2 Servlets funktioniert soweit (zumindest testweise). Nun aber folgendendes: wenn ich via URLConnection auf ein Servlet zugreife bzw. Daten austausche wird ja eine neue Session erzeugt. Leider laufen von beginn an bereits beide sessions auf den Servern, auf einem Server die Session zum Servlet mit der Benutzeroberfläche und Ausgabe, auf dem anderen Server die Session zum Servlet mit der Datensammlung. Wie kann ich diese nun miteinander verbinden?

                      Comment


                      • #12
                        Wozu sollte das zum Datenaustausch erforderlich sein?

                        google nach Tomcat session replikation
                        Christian

                        Comment


                        • #13
                          wirklich weiter kam ich mit der session replication leider nicht. Gibt es denn keine Möglichkeit, dass zwei bereits laufende servlet miteinander daten austauschen? Ich müsste eigentlich nur auf das Servlet, das die Daten entgegennimmt und vom anderen Server (bzw. vom Servlet des anderen Servers) aufgerufen wird, mit einem vom Nutzer aufgerufenem Servlet zugreifen. Ich stelle es mir vor wie wenn auf dem Servlet ein offener Zugang besteht der die Daten verschickt, wenn man auf ihn zugreift (ähnlich wie eine pipe)

                          Comment


                          • #14
                            Was hat nun die Replikation einer Session - die hier nach den Informationen völlig überflüssig ist - mit dem Datenaustausch zu tun? Hole die Daten aus der Session und sende sie per POST oder GET
                            Christian

                            Comment

                            Working...
                            X