Re:Comunicação Servlet -&gt Applet

Esse código (enviar um Chart serializado como um objeto Java) acho que só funciona direito se você tiver exatamente a mesma versão do Java no browser e no servlet container (Tomcat?). Por exemplo, ambos rodando Sun Java 1.4.2_12.

Mas nunca testei isso. É que acho super esquisito.

Eu não recomendaria mandar objetos dessa maneira. Acho que você vai ter mais dor de cabeça que está tendo agora.

Puxa, realmente nesse caso você precisa mandar os binários do JFreeChart no applet - isso quer dizer que você está supondo que o usuário tem a JVM da Sun instalada no browser, e provavelmente está em um ambiente razoavelmente controlado.
Se for um ambiente muito controlado (por exemplo, todo mundo tem de ter a JVM 1.5.0_10 na máquina, e o processo de atualização automática do plugin foi desabilitado nas máquinas) então até dá para fazer do jeito que você quer fazer.
Senão talvez você só possa mandar os dados necessários para remontar o gráfico, além do tipo do gráfico. É chato porque você teria de pegar os dados, montar um arquivo (XML? Properties? sei lá o quê?) e enviá-lo de volta para o applet - e isso implica em dar manutenção dupla (código do servidor e do applet).
O tal erro é chato porque dá a impressão que o objeto JFreeChart, ao ser desserializado no applet, está tentando obter mais alguma coisa que não foi totalmente enviada na resposta da servlet. O que é eu não tenho a menor idéia. E isso dá a entender que pode haver alguma incompatibilidade nas versões do JFreeChart no servidor e no cliente.

Fiz um applet pra mostrar graficos usando o jfreechart
mas to com problemas pra enviar o chart pra ele via servlet

ja tentei de tudo, vi uns 5 tutoriuais e em todos da o mesmo erro

a exceção é a seguinte

java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source) at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source) at java.io.ObjectInputStream.readStreamHeader(Unknown Source) at java.io.ObjectInputStream.<init>(Unknown Source) at Chart.ChartApplet.init(ChartApplet.java:67) at sun.applet.AppletPanel.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

o codigo do servlet

JFreeChart chart = createChart(); // esse método cria o chart OutputStream outstr = response.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outstr); oos.writeObject(chart); oos.flush(); oos.close();

o código do applet

URLConnection servletConnection = getServletConnection(); InputStream instr = servletConnection.getInputStream(); ObjectInputStream inputFromServlet = new ObjectInputStream(instr); //essa é a linha onde da o erro chart = (JFreeChart) inputFromServlet.readObject(); inputFromServlet.close(); instr.close();

o codigo do getServletConnection:

[code]
private URLConnection getServletConnection()
throws MalformedURLException, IOException {

            URL urlServlet = new URL(getCodeBase(), "chartServlet");
            URLConnection con = urlServlet.openConnection();               
            con.setDoInput(true);
            con.setDoOutput(true);
            con.setUseCaches(false);
            con.setRequestProperty(
                    "Content-Type",
                    "application/x-java-serialized-object");
           
            return con;
    }[/code]

Alguém ae pode me ajudar?

Grato pela atenção

De que modo você faria isso thingol?
Enviar o chart foi a solução mais simples que eu encontrei, porque os códigos para gerá-los já estão todos prontos e o applet funciona genericamente pra todos eles.

Mesmo que eu passe o código para gerar os charts pra dentro do applet eu vou ter que passar algum objeto pra ele em algum momento pra definir como esse chart cvai ser gerado.

Resumindo, o código dos gráficos já está funcionando corretamente, mas exibia os gráficos como imagens, e tornou-se necessário funções como zoom, crooshair, rolagem do gráfico e etc. por isso o applet.

obrigado pela atenção.