Einfache Applet-Servlet-Kommunikation

Status
Nicht offen für weitere Antworten.

d.ausstroit

Bekanntes Mitglied
Hai. Langsam bin ich am verzweifeln und weiß nicht mehr weiter.

Ich versuche mich gerade in das Titel-Thema einzuarbeiten und habe dazu das Beispiel www.frank-buss.de/echoservlet/ ein wenig verändert. Und nun krige ich es nicht zum laufen. Das Beispiel von der Seite läuft ohne probleme.

Ich habe die Oberfläche im JBuilder abgebildet und den Rest, bis auf die Namen, übernommen. Nun kommt beim Drücken des Senden-Buttons die Exception

java.io.StreamCorruptedException: invalid stream header
at java.io_ObjectInputStream.readStreamHeader(Unknown Source)
at java.io_ObjectInputStream.<init>(Unknown Source)
at kommtest.KommTestApp.onSendData(KommTestApp.java:150)
at kommtest.KommTestApp.sendButton_actionPerformed(KommTestApp.java:166)
at kommtest.TestApplet_sendButton_actionAdapter.actionPerformed(KommTestApp.java:178)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Hier das Applet:

Code:
package kommtest;

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class KommTestApp extends Applet {
    boolean isStandalone = false;
    //BorderLayout borderLayout1 = new BorderLayout();
    TextField inputField = new TextField();
    Label label1 = new Label();
    Label label2 = new Label();
    TextField outputField = new TextField();
    Label label3 = new Label();
    TextArea exceptionArea = new TextArea();
    Button sendButton = new Button();
    Label label4 = new Label();
    //Parameterwert holen
    public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
                (getParameter(key) != null ? getParameter(key) : def);
    }

    //Das Applet konstruieren
    public KommTestApp() {
    }

    //Das Applet initialisieren
    public void init() {
        try {
            jbInit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //Initialisierung der Komponenten
    private void jbInit() throws Exception {
        this.setLayout(null);
        label1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
        label1.setText("Input:");
        label1.setBounds(new Rectangle(21, 43, 45, 20));
        label2.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
        label2.setText("Output:");
        label2.setBounds(new Rectangle(21, 71, 52, 19));
        label3.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
        label3.setText("Exception:");
        label3.setBounds(new Rectangle(21, 199, 56, 16));
        exceptionArea.setEditable(false);
        exceptionArea.setBounds(new Rectangle(95, 111, 411, 218));
        sendButton.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
        sendButton.setLabel("Senden11");
        sendButton.setBounds(new Rectangle(427, 56, 79, 27));
        sendButton.addActionListener(new TestApplet_sendButton_actionAdapter(this));
        label4.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        label4.setText("Applet-Servlet-Kommunikation");
        label4.setBounds(new Rectangle(176, 9, 228, 21));
        outputField.setBounds(new Rectangle(93, 71, 321, 22));
        inputField.setBounds(new Rectangle(94, 43, 320, 22));
        this.add(label1, null);
        this.add(label2, null);
        this.add(inputField, null);
        this.add(outputField, null);
        this.add(label3, null);
        this.add(exceptionArea, null);
        this.add(sendButton, null);
        this.add(label4, null);
    }

    //Applet-Information
    public String getAppletInfo() {
        return "Applet-Informationen";
    }

    //Parameter-Infos holen
    public String[][] getParameterInfo() {
        return null;
    }
    /**
     * Get a connection to the servlet.
     */
    private URLConnection getServletConnection()
            throws MalformedURLException, IOException {

            // Connection zum Servlet öffnen
            System.out.println(getCodeBase());
            URL urlServlet = new URL(getCodeBase(), "kommtest");
            URLConnection con = urlServlet.openConnection();
            System.out.println(urlServlet);

            // konfigurieren
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false);
            con.setRequestProperty(
                    "Content-Type",
                    "application/x-java-serialized-object");
            //con.setRequestProperty("Content-Type", "text/xml");

            // und zurückliefern
            return con;
    }

    /**
     * Send the inputField data to the servlet and show the result in the outputField.
     */
    private void onSendData() {
            try {
                    // get input data for sending
                    String input = inputField.getText();

                    // send data to the servlet
                    System.out.println(input);
                    URLConnection con = getServletConnection();
                    System.out.println(con);
                    OutputStream outstream = con.getOutputStream();
                    System.out.println("nach 136");
                    ObjectOutputStream oos = new ObjectOutputStream(outstream);
                    System.out.println("nach 138");
                    oos.writeObject(input);
                    System.out.println("nach 140");
                    oos.flush();
                    System.out.println("nach 142");
                    oos.close();
                    System.out.println("nach 144");

                    // receive result from servlet
                    InputStream instr = con.getInputStream();
                    System.out.println("nach 148");
                    ObjectInputStream inputFromServlet = new ObjectInputStream(instr);
                    System.out.println("nach 150");
                    String result = (String) inputFromServlet.readObject();
                    inputFromServlet.close();
                    instr.close();

                    // show result
                    outputField.setText(result);

            } catch (Exception ex) {
                    ex.printStackTrace();
                    exceptionArea.setText(ex.toString());
            }
    }

    public void sendButton_actionPerformed(ActionEvent e) {
        onSendData();
    }
}


class TestApplet_sendButton_actionAdapter implements ActionListener {
    private KommTestApp adaptee;
    TestApplet_sendButton_actionAdapter(KommTestApp adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.sendButton_actionPerformed(e);
    }
}

Das Servlet

Code:
package kommtest;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.*;

public class KommTestServ extends HttpServlet {
    //private static final String CONTENT_TYPE = "text/html";

    //Globale Variablen initialisieren
    public void init() throws ServletException {
    }

    /**
     * Get a String-object from the applet and send it back.
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            
            System.out.println("nach 33");

            try {
                response.setContentType("application/x-java-serialized-object");
                //response.setContentType("text/html");

                    // read a String-object from applet
                    // instead of a String-object, you can transmit any object, which
                    // is known to the servlet and to the applet
                    InputStream in = request.getInputStream();
                    System.out.println("nach 43");
                    ObjectInputStream inputFromApplet = new ObjectInputStream(in);
                    String echo = (String) inputFromApplet.readObject();

                    // echo it to the applet
                    OutputStream outstr = response.getOutputStream();
                    ObjectOutputStream oos = new ObjectOutputStream(outstr);
                    oos.writeObject(echo);
                    oos.flush();
                    oos.close(); 

            } catch (Exception e) {
                    e.printStackTrace();
            }
        }
        public void doGet(HttpServletRequest req, HttpServletResponse res)
                                     throws ServletException, IOException {
          doPost(req,res); // Nur Posts moeglich
        }

    //Ressourcen bereinigen
    public void destroy() {
    }
}

Die vielen Outputs sind zur Kontrolle. Die Exception kommt in der Zeile "ObjectInputStream inputFromServlet = new ObjectInputStream(instr);"

Ich bin für jede Hilfe dankbar :?

d.ausstroit
 

d.ausstroit

Bekanntes Mitglied
Nein, einige Postings habe ich auch entdeckt. Aber irgendwie hilft mir das alles nicht weiter. Vielleicht kann jemand mein Beispiel mal ausprobieren.

Danke für die Hilfe
 
G

Guest

Gast
Das merkwürdige ist, wenn ich das Original-Beispiel von Frank Buss bei mir kompiliere geht es auch nicht. Benutze ich die Original-Klassen-Dateien, geht es. Und das macht mich verrückt.

Bitte helft mir!!! :bahnhof:
 

d.ausstroit

Bekanntes Mitglied
So. Ich bin wieder ein Stück weiter gekommen. Ich habe den Tomcat zu Hause auf meinem Rechner als Stand-Alone installiert (5.5.22). Da läuft das genannte Beispiel ohne Probleme. In der Firma habe ich den Tomcat als Add-On unter XAMPP installiert. Und da kommt die besagte Fehlermeldung. Muss ich da irgend etwas an der Konfiguration anpassen?

Vielleicht hilf Euch das um mir eine Lösung zu nennen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M HTTP Einfache Restanfrage Netzwerkprogrammierung 4
F Einfache Socket Verbindung Netzwerkprogrammierung 2
D Einfache Verbindung zu Linux Server und Datei auslesen Netzwerkprogrammierung 13
Dit_ HTTP Einfache HTTP-Anfrage Netzwerkprogrammierung 6
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
Y einfache TCP/IP Anwendung Netzwerkprogrammierung 4
S Einfache Server Frage Netzwerkprogrammierung 5
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
E Einfache Frage zu servlets und netbeans 6.5 Netzwerkprogrammierung 41
G einfache Frage zu ServerSocket ... Netzwerkprogrammierung 5
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
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
G Applet java.net: acces denied Netzwerkprogrammierung 2
R Applet & Netzwerk Netzwerkprogrammierung 4
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
M Einfachste Möglichkeit aus'm Applet Daten an Server senden Netzwerkprogrammierung 6
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
M Zum x-ten Mal: Problem mit NetSend-Applet Netzwerkprogrammierung 5
C Applet <> Servlet Netzwerkprogrammierung 4
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

Ähnliche Java Themen

Neue Themen


Oben