Newsgroup: it.comp.java
Titolo: comunicazione applet/server

Ciao a tutti.
Ho realizzato un'applet con cui un utente può creare dei grafici. Ad un
certo punto devo salvare le coordinate dei punti che compongono il grafico,
quindi devo accedere ad un database che risiede su un server remoto. Come
posso fare per far comunicare l'applet con il server? Ho già provato ad
implementare qualcosa facendo delle ricerche su internet, ma continuo ad
avere dei problemi.
Questo è il codice su cui sto lavorando
        URL dati = new
URL(url.getProtocol(),url.getHost(),url.getPort(),"/caricaDati.jsp");
        URLConnection conn = dati.openConnection();
        conn.setUseCaches(false);
        ObjectInputStream obj = new
ObjectInputStream(conn.getInputStream());
        Vector vecDati = (Vector)obj.readObject();
        obj.close();
caricaDati.jsp è la pagina che effettua le operazioni sul DB ed è il file a
cui cerco di far connettere l'applet. Una volta creata la connessione,
voglio scambiare i dati tra client e server mediante un InputStream
(nell'applet) e un OutputStream (in caricaDati.jsp). Il problema però è che
non va a buon fine la creazione dell'InputStream: l'istruzione
conn.getInputStream() genera la seguente IOException
                                    java.io.IOException: Connection failure
with 500
                                                     at
sun.plugin.protocol.jdk12.http.HttpURLConnection.getInputStream(Unknown
Source)
HELP!!!!!!!!!!!!!!


Premetto che non conosco JSP, ma se quest'ultimo è un parallelo di ASP
allora penso che ci sia un problema concettuale di fondo. Aprendo
opportunamente un InputStream su un file .jsp non dovresti ottenere
nient'altro che il contenuto di quest'ultimo. Se JSP è un parallelo di ASP
allora un file jsp dovrebbe essere come un qualcosa del tipo "usa e getta"
che può o restituire una pagina HTML al client e/o effettuare operazioni sul
server. Magari mi sbaglio, comunque se dovesse essere possibile effettuare
quello che hai descritto con l'utilizzo di un file jsp fammelo sapere, per
me sarebbe una mano scesa dal cielo.
Per salvare i dati in un data base penso che dovresti creare un file jsp che
prende in input dei parametri (i dati che devi registrare) e scrive in una
tabella del db i valori passati per parametri. Dall'applet dovresti solo
richiamare il file .jsp passandogli i parametri.
Ciao Daniele
d_impelli(O)
yahoo.com

>...Come posso fare per far comunicare l'applet con il server?...
Ti consiglio di provare GMI, un middleware per la comunicazione applet-servlet. completo
di tutorial che trovi sul mio sito.
(scusa per la stringatezza della risposta, ma sono di corsa!)
Ciao,
    Bruno.
---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://digilander.iol.it/bbossola

Sono riuscita a risolvere in parte il mio problema. Mi sono solo dimenticata
di risponderti prima!!
Questa è la mia pagina jsp caricaDati.jsp:
<%@ page import="java.io.*,java.util.*,draw.ColpoGraficoDB"%>
<%!
Vector risultati;
String cod_id_interno;
String pref_id_interno;
String dat_age;
%>
<%
  response.setContentType("application/x-java-serialized-object");
  ObjectOutputStream out = new
ObjectOutputStream(response.getOutputStream());
  cod_id_interno = (String)session.getAttribute("cod_id_interno");
  pref_id_interno = (String)session.getAttribute("pref_id_interno");
  dat_age = (String)session.getAttribute("dat_age");
  ObjectDB obj = new ObjectDB ();
  risultati = obj.getValori(cod_id_interno,pref_id_interno, dat_age);
  out .writeObject(risultati);
  out .flush();
%>
Questo è quello che serve nel metodo init() dell'Applet:
      URL url = this.getCodeBase();
      URL jspUrl = new URL (url.getProtocol(),
                                        url.getHost(),
                                        url.getPort(),
                                       "/caricaDati.jsp");
      URLConnection conn = jspUrl.openConnection();
      conn.setUseCaches(false);
      ObjectInputStream in = new ObjectInputStream(conn.getInputStream());
      Vector risultati = (Vector)in.readObject();
      in.close();
La pagina jsp fa le operazioni sul DB poichè si trova sul server e mette i
risultati di una select in un Vector. Mediante la serializzazione gli
oggetti vengono passati uno per volta. L'applet nel momento della sua
inizializzazione si connette alla pagina jsp: l'OutputStream del server
contiene le informazioni e l'InputStream del client riceve queste
informazioni.
