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.i
bjectInputStream.readStreamHeader(Unknown Source)
at java.i
bjectInputStream.<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:
Das Servlet
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
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.i
at java.i
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