Hi! Есть проблема при передаче объекта. Сервлет: Код | package buzzy;
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
import buzzy.data;
public class test extends HttpServlet{ public String mystr; private ObjectInputStream get_data; data[] n2=new data[1]; public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ OutputStream outstr = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outstr);
try { response.setContentType("application/x-java-serialized-object");
InputStream in = request.getInputStream(); ObjectInputStream inputFromApplet = new ObjectInputStream(in); n2 = (data[]) inputFromApplet.readObject(); oos.writeObject(n2);
} catch (Exception e) { e.printStackTrace(); } oos.flush(); oos.close(); doGet(request,response); }
}
|
Код |
package buzzy;
import java.io.*;
class data implements Serializable{ String m_name; int m_id; public data(String name,int id){ m_name=name; m_id=id; } public String get_name(){ return m_name; } public int get_id(){ return m_id; } }
|
Клиент Код | package sirius;
import java.applet.*; import java.awt.*; import java.io.*; import java.net.*; import java.util.*;
import sirius.data;
public class connect extends Applet{ private URL murl; private URLConnection myurl; private TextArea ta2; data[] n1 = new data[1]; public void init(){ int i; Random r = new Random(); String aaa; TextArea ta= new TextArea(); add(ta); TextArea ta1=new TextArea(); add(ta1); TextArea ta2=new TextArea(); add(ta2); n1[0] = new data ("client #- "+String.valueOf(1)+" id = ",r.nextInt()); aaa=n1[0].get_name(); System.out.println(aaa); ta.append(aaa); ta.append("\n"); aaa=String.valueOf(n1[0].get_id()); System.out.println(aaa); ta.append(aaa); ta.append("\n"); try{ murl = new URL("http://localhost:8080/test/hello"); }catch(MalformedURLException e){} try{ myurl=murl.openConnection(); myurl.setDoInput(true); myurl.setDoOutput(true); myurl.setUseCaches(false); myurl.setRequestProperty("Content-Type","application/x-java-serialized-object" ); myurl.connect(); }catch(IOException e){} try { String input;
//input="This is packed in jbject"; OutputStream outstream = myurl.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outstream); oos.writeObject(n1); oos.flush(); oos.close();
InputStream instr = myurl.getInputStream(); ObjectInputStream inputFromServlet = new ObjectInputStream(instr); n1 = (data[]) inputFromServlet.readObject(); inputFromServlet.close(); instr.close();
ta2.append(n2.get_name);
} catch (Exception ex) { ex.printStackTrace(); //exceptionArea.setText(ex.toString()); } } }
|
Класс data в клиенте такой же как и в сервлете Возникают следующие исключения: java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2552) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at sirius.connect.init(connect.java:75) at sun.applet.AppletPanel.run(AppletPanel.java:417) at java.lang.Thread.run(Thread.java:619) В чем может быть проблема? (: если вместо класса передавать строку, то все работает нормально web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>hello</servlet-name> <servlet-class>buzzy.test</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> Это сообщение отредактировал(а) eXcile - 2.3.2007, 06:51
--------------------
Не становитесь рабом шаблона [Винсент Ван Гог]
|