Newsgroup: it.comp.java
Titolo: Script per mio server web in Java

Ciao a tutti, sto realizzando come tesina per la maturità un server web in 
Java. Ho quasi terminato la prima parte (inviare al client le pagine, 
immagini, ecc...), ma vorrei aggiungere una cosa: la possibilità di far 
creare degli script all'utente. Per fare ciò ho bisogno di un interprete o 
qualcosa di simile, ma cosa?? Spero di essere stato chiaro. Grazie!
P.S.: l'interprete dello script deve funzionare sia su Windows che su Linux 
(infatti, premessa importante della mia tesina è la possibilità di portare 
il tutto su O.S. diversi, come permette di fare Java!).
Distinti saluti
Matteo 

 qualcosa di simile, ma cosa?? Spero di essere stato chiaro. Grazie!
Non mi è chiaro...
Hai realizzato un web server, ossia un'applicazione in ascolto sulla porta
80 che riceve comandi secondo lo standard HTTP e restituisce un file html.
Giusto?
Quindi vuoi realizzare una sorta di interprete PHP, JSP o simile?
A dire il vero puoi scegliere il linguaggio che vuoi.
puoi anche inventarne uno tuo, semplice semplice.
Ciao
Marco 

 puoi anche inventarne uno tuo, semplice semplice.
Ecco, io volevo poter integrare nel mio server web uno script già esistente 
(tipo php, jsp, ecc...) però ho bisogno di un interprete (e, quindi, di un 
programma) che funzioni sia su win che su linux (x la portabilità). Esiste 
un software in grado di fare ciò (e di poter essere richiamato tramite 
java)? Grazie per avermi risposto!
Distinti saluti
Matteo 

 puoi anche inventarne uno tuo, semplice semplice.
Ecco, io volevo poter integrare nel mio server web uno script già esistente 


 puoi anche inventarne uno tuo, semplice semplice.
Ecco, io volevo poter integrare nel mio server web uno script già esistente 


 richiamato tramite java)? Grazie per avermi risposto!
Capito.
Se vuoi una cosa portabile dovresti trovare un motore scritto in java.
Qualcosa che sia in grado di interpretare il linguaggio che ti interessa, 
php, java, ...
Ma onestamente non ne conosco.
Ciao
Marco 

 writes:
I> Ciao a tutti, sto realizzando come tesina per la maturità un server
I> web in Java. Ho quasi terminato la prima parte (inviare al client
I> le pagine, immagini, ecc...), ma vorrei aggiungere una cosa: la
I> possibilità di far creare degli script all'utente.
Mi pare ci sia un interprete python in Java...
jython o qualcosa di simile.
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e allevatore di bug da competizione

 qualcosa di simile, ma cosa?? Spero di essere stato chiaro. 
Gia' che ci sei, fai in modo che gli script siano in Java ;)
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

napo wrote:

aggiungi degli handler per i vari tipi di file e passali ad un parser
esterno..
installa anche php e richiamalo all'occorrenza..
esegui i file compilati java all'occorrenza..
conosco poco java ma dovrebbe essere facile.. non e' molto performante ma se
e' solo per una maturita' va piu' che bene..
-- 
www.iuz-lab.info

 Giambo - Occhio al filtro antispam _e_ alla whitelist !
Grazie a tutti per i vostri consigli, grazie!!!
Distinti saluti
Matteo 

 ha scritto nel messaggio 
news:43e4f542$0$340$5fc...@news.tiscali.it...


 La domanda è: non esiste un modo alternativo a ciò un po' più veloce?
Piu' o meno e' quel che succede con le jsp. Potresti precompilare le
classi alla partenza del server. Oppre compilare la classe solo la prima
volta che viene chiamata.


 writes:
I> Ciao a tutti, alla fine di tutto ho deciso di supportare per il mio
I> server web gli script in java.  L'utente scrive un file .java con
I> il famoso metodo iniziale ( public static void main(..) ), il
I> server web compila ed esegue questo file (tramite
I> Runtime.getRuntime().exec("javac nomefilejava") e
I> Runtime.getRuntime().exec("javac nomeclasse")) e i risultati
I> ottenuti (tramite System.out.println(...) richiamati nel file
I> .java) li invia al client.
Potresti utilizzare  le classi  usate dal JDK  per compilare  il file,
risparmiando il tempo di startup di una nuova JVM (vedi quanto scritto
in 
http://www-ppg.dcs.st-and.ac.uk/Java/DynamicCompilation/
).
Prima  di avviare  la compilazione  verificare che  il .class  sia più
recente del .kava, nel caso non occorre compilare.
Poi potresti:
1) richiedere che gli script java implementino una interfaccia con un
   solo metodo che abbia un metodo da usare al posto di main(), che so
   void inizio(String argv[]);
2) caricare la classe per nome con Class.forName(String name) 
3) avviarla invocando inizio() con gli eventuali parametri. 
Anche in questo modo non avvii una JVM.


http://www.beanshell.org/

 3) avviarla invocando inizio() con gli eventuali parametri.
Ciao, innanzitutto grazie per aver dedicato parte del tuo tempo al mio 
problema. Io ho provato a cercare un po' in internet, ma non riesco a 
saltare fuori da questa situazione. Riusciresti a postarmi un esempietto 
veloce veloce a cui passo al metodo "inizio()", dello script java, due 
oggetti di tipo "Input" e "Output" ? Grazie!
Distinti saluti
Matteo 

> 3) avviarla invocando inizio() con gli eventuali parametri.
I> Ciao, innanzitutto grazie per aver dedicato parte del tuo tempo al
I> mio problema. Io ho provato a cercare un po' in internet, ma non
I> riesco a saltare fuori da questa situazione. Riusciresti a postarmi
I> un esempietto veloce veloce a cui passo al metodo "inizio()", dello
I> script java, due oggetti di tipo "Input" e "Output" ? Grazie!
Partiamop dall'interfaccia.
public interface InterfacciaScript {
    void inizio(UnOggetto input, AltroOggetto output);
}
Ora  vai su  
http://java.sun.com/j2se/1.4.2/docs/api/
 e  ti  guardi le
classi Class e Constructor (se usi Java 1.5 vai su quella di Java 1.5,
sostituisci 1.5 a 1.4.2 nell'URL).
Con la Class ed il metodo forName() ottieni un oggetto di tipo Class
usi getConstructor() per prenderti il costruttore (basta quello senza
parametri).
Col Constructor usi il  metodo newInstance() per assegnare una istanza
della classe  caricata ad una  variabile (chiamiamola per ora  foo) di
tipo InterfacciaScript.
Pronto qui a trappare le ClassCastException() che ti indicano che hai
caricato una classe che non implementa InterfacciaScript.
Quando tutto è  andato bene foo contiene un  riferimento ad un oggetto
che, implementando InterfacciaScript ha di sicuro il metodo inizio che
ti serve.
Arricchimenti che puoi fare:
* Far tornare un qualcosa al metodo che dica come sono andate le cose
* Aggiungere a InterfacciaScript un  metodo per inizializzare lo stato
  prima  di  chiamare inizio()  (che  è un  po'  quello  che fanno  le
  servlet)
Prima dai  un occhio alla documentazione  di Sun e POI  al limite puoi
chiedermi  chiarimenti  anche  in  privato  (saint  [chiocciola]  fsfe
[punto] org).
