Italian WebServer su Android

Star-Dust

Expert
Licensed User
Longtime User
Chi è Java ?
Scusa il ritardo sto avendo giornate complicate. Ho cercato di capire la cosa tra piccolissimi ritagli di tempo per approfondire il codice che mi ha indicato @Erel e molto altro.

Ti faccio un breve riassunto delle ultime puntate, in verità si può fare, ha ragione @Erel (e su questo non avevamo dubbi)

Andiamo sulla versione lunga.
Il punto dolente è il come farlo. Credevo che dovessimo implementare nella libreria HTTPServer il protocollo SSL (oggi TSL) mettendo in ascolto sulla porta 443 e gestendo le richieste. Nulla di più fantasioso (eufemismo per dire niente di più sbagliato)

Esiste già tutto il necessario nel s.o.Android dal SDK 10 (credo).
Basta solo caricare il certificato su un connettore SSL, aggiungere il connettore al server indicando la porta (in genere per android 8443). Io sto scrivendo come se sapessi ciò di cui ti parlo, in realtà non è cosi, ripeto solo cosa ho letto in un tutorial inglese tradotto con google.

Ho trovato anche un sacco di codice sorgente Java sul web e tantissimi esempi, tutti diversi l'uno dall'altro.
Non volevo creare una nuova libreria HTTPServer, che ho visto molto complessa, vorrei tentare (tempo permettendo) usando JavaObject aggiungere questo connettore al HttpServer e il resto lo gestisce la classe esistente.

Ti allego alcuni link dove trovi esempi. Magari con l'aiuto del tuo Vice Assistente Sostituto che mastica di java si può fare qualcosa.


 

LucaMs

Expert
Licensed User
Longtime User
Io sarei ancora dell'idea di dire al cliente che non sempre si possano avere capra e cavoli e che i dispositivi mobile non sono fatti per fungere da server.
Quindi usare un server intermedio, del tutto personalizzato (sviluppato con B4J) o un broker MQTT pubblico (ma anche privato, su una macchina del cliente).

Ora mi taccio :)
 

Star-Dust

Expert
Licensed User
Longtime User
Sarebbe una BUGGIA con tre G.
Comunque il codice non è così complicato (forse)
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Scusa il ritardo sto avendo giornate complicate. Ho cercato di capire la cosa tra piccolissimi ritagli di tempo per approfondire il codice che mi ha indicato @Erel e molto altro.

Ti faccio un breve riassunto delle ultime puntate, in verità si può fare, ha ragione @Erel (e su questo non avevamo dubbi)

Andiamo sulla versione lunga.
Il punto dolente è il come farlo. Credevo che dovessimo implementare nella libreria HTTPServer il protocollo SSL (oggi TSL) mettendo in ascolto sulla porta 443 e gestendo le richieste. Nulla di più fantasioso (eufemismo per dire niente di più sbagliato)

Esiste già tutto il necessario nel s.o.Android dal SDK 10 (credo).
Basta solo caricare il certificato su un connettore SSL, aggiungere il connettore al server indicando la porta (in genere per android 8443). Io sto scrivendo come se sapessi ciò di cui ti parlo, in realtà non è cosi, ripeto solo cosa ho letto in un tutorial inglese tradotto con google.

Ho trovato anche un sacco di codice sorgente Java sul web e tantissimi esempi, tutti diversi l'uno dall'altro.
Non volevo creare una nuova libreria HTTPServer, che ho visto molto complessa, vorrei tentare (tempo permettendo) usando JavaObject aggiungere questo connettore al HttpServer e il resto lo gestisce la classe esistente.

Ti allego alcuni link dove trovi esempi. Magari con l'aiuto del tuo Vice Assistente Sostituto che mastica di java si può fare qualcosa.


Grazie per l'aiuto, dico a Vittorio di dare un'occhiata ai link per capire di cosa si tratta e ti aggiorno.
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Io sarei ancora dell'idea di dire al cliente che non sempre si possano avere capra e cavoli e che i dispositivi mobile non sono fatti per fungere da server.
Quindi usare un server intermedio, del tutto personalizzato (sviluppato con B4J) o un broker MQTT pubblico (ma anche privato, su una macchina del cliente).

Ora mi taccio :)
Non posso avere un terzo incomodo (server), diventerebbe un problema.
 

Star-Dust

Expert
Licensed User
Longtime User
Grazie per l'aiuto, dico a Vittorio di dare un'occhiata ai link per capire di cosa si tratta e ti aggiorno.
Nel frattempo ci smanetto un po'
 

Star-Dust

Expert
Licensed User
Longtime User
Per quel poco che ne capisco di Java.
HttpServer non è un estenzione/derivazione della classe org.eclipse.jetty.server.Server, ma è un altra classe che all'interno ha una variabile/classe privata Server di tipo org.eclipse.jetty.server.Server. All'interno del metodo Start che viene creata l'istanza del Server, aggiunto il connettore (non SSL) e avviato il server.

Per farlo diventare SSL, bisognerebbe aggiungere un connettore SSL dopo aver creato l'istanza del Server ma prima di avviare il server.
Visto che il tutto si svolge all'interno di Start bisognerebbe riscrivere Start inserendo il connettore SSL. Purtroppo Server è una variabile/classe privata e quindi non è possibile accedere alle sue proprietà, non si può creare un istanza ne aggiungere connettori

Diverso è nella Liberiea Server per B4J dove nel metodo Initialize viene creata l'istanza della classe (Java)Server, mentre con il metodo Start viene inserito il connettore (NON SSL) e avviato il server.
La classe (Java)Server è pubblica.
Quindi dopo aver inizializzato il Server in B4J con (Server.Initiqalize),si può usare il metodo addConnector con JavaObject e poi con Server.START (in B4j) viene poi inserito il conettore (NON SSL) e avviato il server.

Ma questo in B4J non serve perchè esiste già il comando SetSslConfiguration.

Quindi a meno che non disassemblo modifico e ricompilo httpServer non è possibile aggiungere SSL. A meno che dovrei riscrivere tutta la Classe.

NAAAAAAAAAAAAAAAAAA
 

Lello1964

Well-Known Member
Licensed User
Longtime User
Per quel poco che ne capisco di Java.
HttpServer non è un estenzione/derivazione della classe org.eclipse.jetty.server.Server, ma è un altra classe che all'interno ha una variabile/classe privata Server di tipo org.eclipse.jetty.server.Server. All'interno del metodo Start che viene creata l'istanza del Server, aggiunto il connettore (non SSL) e avviato il server.

Per farlo diventare SSL, bisognerebbe aggiungere un connettore SSL dopo aver creato l'istanza del Server ma prima di avviare il server.
Visto che il tutto si svolge all'interno di Start bisognerebbe riscrivere Start inserendo il connettore SSL. Purtroppo Server è una variabile/classe privata e quindi non è possibile accedere alle sue proprietà, non si può creare un istanza ne aggiungere connettori

Diverso è nella Liberiea Server per B4J dove nel metodo Initialize viene creata l'istanza della classe (Java)Server, mentre con il metodo Start viene inserito il connettore (NON SSL) e avviato il server.
La classe (Java)Server è pubblica.
Quindi dopo aver inizializzato il Server in B4J con (Server.Initiqalize),si può usare il metodo addConnector con JavaObject e poi con Server.START (in B4j) viene poi inserito il conettore (NON SSL) e avviato il server.

Ma questo in B4J non serve perchè esiste già il comando SetSslConfiguration.

Quindi a meno che non disassemblo modifico e ricompilo httpServer non è possibile aggiungere SSL. A meno che dovrei riscrivere tutta la Classe.

NAAAAAAAAAAAAAAAAAA
Mi sa che dobbiamo chiedere l'aiuto a casa..... Nel forum internazionale...

Io in inglese meno che java.

Puoi fare tu la richiesta, sperando nel miracolo di Natale ?
 

Star-Dust

Expert
Licensed User
Longtime User
Mi sa che dobbiamo chiedere l'aiuto a casa..... Nel forum internazionale...

Io in inglese meno che java.

Puoi fare tu la richiesta, sperando nel miracolo di Natale ?
Già fatta. ;)
 

Star-Dust

Expert
Licensed User
Longtime User

Star-Dust

Expert
Licensed User
Longtime User
Con l'aiuto di Oliver ho risolto alcuni problemi.
Adesso viene compilato correttamente ma ancora non funziona.
Mancano ancora gli Handler da aggiungere. Purtroppo la mia competenza in Java sì è già esaurita.
 
Top