Witam wszystkich ma wielki problem z odebraniem wysłanego przez applet kontenera Arraylist<cos>. Sporo już czasu spędziłem nad rozwiązaniem i nadal nic nie mogę zrobić oto kod testowy :
kod appletu:
...
public void init() {
ArrayList<Cos> dane = new ArrayList<Cos>();
dane.add(new Cos("dane"));
dane.add(new Cos("cosss"));
URL bierzacaStrona = getCodeBase();
String protokol = bierzacaStrona.getProtocol();
String serwer = bierzacaStrona.getHost();
int port = bierzacaStrona.getPort();
try{
URL daneURL = new URL(protokol, serwer, port, url);
URLConnection polaczenie = daneURL.openConnection();
polaczenie.setUseCaches(false);
polaczenie.setDoOutput(true);
polaczenie.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
ObjectOutputStream out = new ObjectOutputStream(polaczenie.getOutputStream());
out.writeObject(kot);
out.flush();
out.close();
readServletResponse(polaczenie);
}
catch(Exception e ){...}
}
public void readServletResponse(URLConnection servletConnection)
{
BufferedReader inFromServlet = null;
try
{
inFromServlet = new BufferedReader(new InputStreamReader(servletConnection.getInputStream()));
inFromServlet.close();
}
catch (IOException e)
{
...
}
}
}
class Cos implements Serializable{
String d;
public Cos(String d){
this.d = d;
}
}
kod servletu (Struts):
...
public class Test extends Action {
private final static String SUCCESS = "success";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ObjectInputStream daneWejsciowe = new ObjectInputStream(request.getInputStream());
ArrayList<Cos> lista = (ArrayList<Cos>) daneWejsciowe.readObject(); //????
daneWejsciowe.close();
return mapping.findForward(SUCCESS);
}
}
class Cos implements Serializable{
String d;
public Cos(String d){
this.d = d;
}
}
Zrobiłem debuga okazało się że coś dochodzi do servletu ale tutaj
ArrayList<Cos> lista = (ArrayList<Cos>) daneWejsciowe.readObject();
program staje. Zrobiłem testy wysyłając zwyczajną ArrayList bez obiektów tylko coś np.
lista.add("cos") itp i podczas rzutowania w servlecie
ArrayLIst lista =(ArrayList) daneWejsciowe.readObject(); wszystko działało prawidłowo :( Nie mam już pomysłu czemu kontener obiektów nie chce przejść i dlatego proszę o pomoc !!! Dzieki