applet servlet kommunikation

Status
Nicht offen für weitere Antworten.

rohn

Mitglied
tachchen
ich schreibe gerade an einer art onlinegame indem ein applet auf einem server eine socketverbindung herstellen soll von dem es aber nicht geladen wird und ein datenaustausch via objektserialisierung stattfindet.
Prinzipiell weiß ich das man das Applet dazu signieren muß aber habe einiges probiert und aus verzweiflung aufgegeben,selbst mit `Jarkive`)
Ich habe nun ein Servlet erstellt, welches über Http Request einen ObjektInputStream vom Applet entgegennimmt und seinerseits eine socketvervindung öffnet(bzw öffnen soll).
Auf dem Server soll dann die Verarbeitung der Daten erfolgen und das Resultat über die Socketverbindung an das Servlet zurückgesendet werden und das Servlet schickt dann über Http Response einen ObjecktOutputstream an den client zurück der das Applet geladen hat. So, denke ich, müßte es doch funzen oder?
Leider habe ich das Problem das ich eine "StreamCorruptedException" bekomme wenn ich den Http InputStream einlese weil die Headerinfo noch dranhängt denk ich mal.
Wie kann ich denn den Header von meinem eigentlichen relevanten Code trennen? :oops:
Bin sehr dankbar für eventuelle Lösungsansätze...
 

semi

Top Contributor
Schicke die serialisierten Objekte als "octet-stream".
z.B.

Applet-seitig
Code:
URLConnection con = url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setDefaultUseCaches(false);
con.setUseCaches(false);
con.setRequestProperty("Content-Type", "application/octet-stream");

ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(con.getOutputStream()));
out.writeObject(request);
out.flush();
out.close();

ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(con.getInputStream()));
Object response = in.readObject();
in.close();

Servlet-seitig
Code:
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(request.getInputStream()));
Object request = in.readObject();
in.close();
...
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(response.getOutputStream()));
response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/octet-stream");
out.writeObject(response);
out.flush();
// Nicht schliessen!!!

Gruß,
Michael
 

semi

Top Contributor
Übrigens, das ganze lässt sich so automatisieren, dass man
mit Remote-Objekten so arbeiten kann als ob sie lokal (beim Applet)
wären.

Das folgende Beispiel sollte Dich auf paar Idee bringen
Code:
interface Hello {
  void hello(String s);
}

class ServiceLocator {
  public static Object createService(Class type, URL url) {
    return Proxy.newProxyInstance( type.getClassLoader(), new Class[] { type }, new HTTPInvocationHandler(url));
  }

  static class HTTPInvocationHandler implements InvocationHandler {
    private URL url;

    public HTTPInvocationHandler(URL url) {
      this.url = url;
    }

    public Object invoke(Object proxy, Method method, Object[] args) {
      System.out.println("invoke: " + method.toString());
      // Hier über HTTP den Aufruf weiterleiten und das Ergebnis
      // dann zurückgeben
      // Die Information über die serverseitig auszuführende Instanz/Methode
      // kannst Du in einem serialisierbaren Info-Objekt an das Servlet übergeben.
      // Als Antwort kriegst Du dann auch ein solches Objekt mit Rückgabedaten, 
      // Exceptions etc. zurück

      // 'null' nur hier in dem Test!!! Sonst Daten vom Serveraufruf
      return null;
    }
  }
}

public class DynamicProxy {
  public static void main(String[] args) {
    // Hier neben Interface auch die URL des Servlets übergeben. Im Beispiel ist es 'null'
    Hello f = (Hello)ServiceLocator.createService(Hello.class, null);
    f.hello("Hallo"); // Das würde über's HTTP gehen oder von mir aus auch HTTPS, je nach Implementierung
  }
}
Serverseitig brauchst Du zu jedem bekannten Interface eine Implementierung
(im Beispiel HelloImpl implements Hello) und irgendeine Dispatcherklasse, die eine Instanz einer
solchen Implementierung erstellt und die entsprechende Methode, mit den gegebenen Parametern
aufruft und das Ergebnis dann wieder gepackt zurück zum Applet übergibt.

Einmal korrekt implementiert, dann brauchst Du jeweils nur das Interface und die Implementierung
zu schreiben. Die Implementierung muss Applet-seitig nicht bekannt sein.

Gruß,
Michael
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
C Applet <> Servlet Netzwerkprogrammierung 4
Androbin Socket Fehlerhafter Applet-Chat Netzwerkprogrammierung 12
S Datei schreiben über Applet Netzwerkprogrammierung 8
N Applet/Applikation auf Xport laufen lassen Netzwerkprogrammierung 10
N Applet Access Denied Netzwerkprogrammierung 12
TheJavaKid Webcam-Chat im Applet (ChatRoulette Klon) Netzwerkprogrammierung 10
H Applet soll XML-File auf Server speichern Netzwerkprogrammierung 6
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
B FTP Applet mit FTP-Server-Zugriff sicher gestalten Netzwerkprogrammierung 12
J Applet soll Daten auf Server ablegen - einfachster Weg fuer n00bs? Netzwerkprogrammierung 4
O php - applet Kommunikation Netzwerkprogrammierung 9
B Client Server Applet keine Ahnung Netzwerkprogrammierung 3
R Applet --> PHP --> Applet Netzwerkprogrammierung 2
E Userliste für Chat Applet Netzwerkprogrammierung 4
B RTP - Applet Starthilfe Netzwerkprogrammierung 7
B Globale IP-Adresse auslesen - Java Applet Netzwerkprogrammierung 2
S RMI RMI-Applet kommunikation funktioniert nicht Netzwerkprogrammierung 8
J Applet Security - java.security.AccessControlException: access denied Netzwerkprogrammierung 3
H Socket Mit Applet Verbindung zu eigener Website aufbauen Netzwerkprogrammierung 4
E Files von Server laden in Applet Netzwerkprogrammierung 5
aze Applet von Webseite aufrufen und mit diesem kommunizieren Netzwerkprogrammierung 8
M chat als applet umgeschrieben - unbekannter fehler :( Netzwerkprogrammierung 2
U Server-IP in Applet ermitteln Netzwerkprogrammierung 4
J Connection Speed Test ohne Applet Netzwerkprogrammierung 5
ABstraCT Applet multipler port Zugriff möglich ? Netzwerkprogrammierung 5
C Applet mit Script steuern Netzwerkprogrammierung 9
A Problem mit Netzwerkprogrammierung im Applet! Netzwerkprogrammierung 10
F applet verbindung zum server Netzwerkprogrammierung 6
R Java-Chat-Applet funktioniert nur in Eclipse Netzwerkprogrammierung 3
F Applet Datei Zugriff Netzwerkprogrammierung 13
M Server aus inem Applet heraus starten Netzwerkprogrammierung 4
G Applet und Netzwerkverbindungen? Netzwerkprogrammierung 2
F Daten senden und empfangen mit Applet Netzwerkprogrammierung 8
K Datenaustausch zwischen Applet und JSP Netzwerkprogrammierung 4
E Applet zum Datei-Upload Netzwerkprogrammierung 3
T Image aus Applet an PHP Seite senden? Netzwerkprogrammierung 3
S Java Applet Chat Grundsatzfrage Netzwerkprogrammierung 6
H RMI + Socket + Applet Netzwerkprogrammierung 5
N Chatprogrammierung - Applet Netzwerkprogrammierung 3
S Von Applet zu applet Netzwerkprogrammierung 7
G RMI + Applet - Verbindung nur lokal Netzwerkprogrammierung 27
S Applet und JWS auf Apache-Axis (SOAP) Netzwerkprogrammierung 8
G Applet java.net: acces denied Netzwerkprogrammierung 2
R Applet & Netzwerk Netzwerkprogrammierung 4
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
M Zum x-ten Mal: Problem mit NetSend-Applet Netzwerkprogrammierung 5
Encera Servlet Mapping Netzwerkprogrammierung 5
N Test Servlet funktioniert nicht Netzwerkprogrammierung 11
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
C Servlet erstellen klappt nicht Netzwerkprogrammierung 3
S HTTP Servlet als Instanzen im Programm starten Netzwerkprogrammierung 3
H Reponse vom Servlet leer Netzwerkprogrammierung 16
H Servlet Umlaute Netzwerkprogrammierung 20
R Socket SSL-Connect in Servlet - keystore wird nicht gefunden Netzwerkprogrammierung 2
F Kann Klasse nicht zu Servlet casten Netzwerkprogrammierung 5
S send riesige "Query" to servlet Netzwerkprogrammierung 7
S Servlet - Datei kann nicht gelöscht werden Netzwerkprogrammierung 12
N Servlet Response fehlerhaft Netzwerkprogrammierung 14
E RMI - Servlet Netzwerkprogrammierung 4
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
B Pdf Stream von Servlet mit itext Netzwerkprogrammierung 12
M Servlet als Login Netzwerkprogrammierung 20
B HTTP PDF Servlet download vom Server zum Client Netzwerkprogrammierung 3
B HTML meets Servlet Netzwerkprogrammierung 6
J ObjectOutputStream legt Servlet lahm Netzwerkprogrammierung 7
H Objekt von JSP an Servlet übergeben Netzwerkprogrammierung 4
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
S Servlet InputStream leer?! Netzwerkprogrammierung 14
H kleines Servlet Problem Netzwerkprogrammierung 2
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
D Verbindung über ein Servlet zu einem Server Netzwerkprogrammierung 4
R Problem mit Servlet ansprechen Netzwerkprogrammierung 7
B Servlet URL aufruf Netzwerkprogrammierung 4
R Servlet Komunikations Problem Netzwerkprogrammierung 4
A JSP->Servlet->Programm (Ausführung) -> Servlet -&gt Netzwerkprogrammierung 2
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
Z dateidownload vom servlet aus Netzwerkprogrammierung 4
T Servlet-Programmierung & Templates Netzwerkprogrammierung 4
T Einfacher Servlet-Server Netzwerkprogrammierung 8
A RMI Servlet Client Netzwerkprogrammierung 6
S object via post auf servlet send und weiter bearbeiten Netzwerkprogrammierung 11
I Servlet ParameterChaos Netzwerkprogrammierung 2
K RMI Kommunication zw. Servlet und EJB Netzwerkprogrammierung 7
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
G Socket Socket Kommunikation Netzwerkprogrammierung 1
R Kommunikation zwischen Shell und Putty Netzwerkprogrammierung 5
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
T Client zu Client Kommunikation Netzwerkprogrammierung 2
K Socket Nur bestimmte Zeichen als Kommunikation zulassen Netzwerkprogrammierung 1
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
H Android - PC kommunikation Netzwerkprogrammierung 3
S Server Kommunikation Netzwerkprogrammierung 1
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
I Socket Kommunikation C / Java Netzwerkprogrammierung 2
M Kommunikation übers Internet Netzwerkprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben