Newsgroup: it.comp.java
Titolo: Creare web service accessibili da username e password

Ciao a tutti
Volevo chiedervi se conoscete dei buoni tutorial o avete realizzato in passato dei webservice che permettano di avere una risposta solo se sono stati forniti utente e password corretti.
 
Spiego meglio il mio caso d'uso. Attualmente ho una applicazione web PHP che deve accedere a dei dati presenti in un db relazionale (MySQL)che si comporta come deve, poco tempo fa ho avuto l'idea di scrivere una applicazione android che permetta di visualizzare alcune di queste informazioni agli utenti iscritti.
 
A questo punto l'idea in linea di massima sarebbe quella di avere l'applicativo java che pesca i dati e li espone all'esterno tramite la risposta inviata dal web service.
Inoltre così facendo al termine di tutto potrei far pescare dal ws anche PHP avendo così un unico punto di accesso ai dati.
 
Sapete consigliarmi una guida o un framework per fare tutto ciò abbastanza agilmente?
 
Grazie in anticipo.
 
Marco

 Sapete consigliarmi una guida o un framework per fare tutto ci� abbastanza agilmente?
 
L'esposizione del problema e' un po' nebulosa.
 
Diciamo che credo di aver capito che vorresti avere un webservice come 
backend. Questo backend sara' utilizzato sia dal sito web che 
dall'applicazione android.
 
Ora vorresti sapere come passare al webservice la coppia 
username/password per autenticare l'utente.
 
Per fare questo io utilizzo l'autenticazione a livello HTTP, una di 
queste 2:
- autenticazione basic: 
http://en.wikipedia.org/wiki/Basic_access_authentication
, utilizzando 
anche https, perche' la password passa in chiaro
- autenticazione digest: 
http://en.wikipedia.org/wiki/Digest_access_authentication
 
 
Devi quindi vedere con la libreria che utilizzerai per creare il 
webservice (axis per dirne una):
1) come si attiva l'autenticazione basic o digest
2) con quali metodi all'interno della tua implementazione del webservice 
ottieni il nome dell'utente che si e' autenticato.
 
Ciao.

Ciao si mi sono espresso maluccio comunque hai capito il mio obbiettivo. Il web service dovrà fungere come backend ed il sito e l'applicazione saranno i due frontend.
 
Quale tipo di autenticazione consigli?
E quale libreria per implementare i ws consigli?
 
Grazie mille. Marco

 E quale libreria per implementare i ws consigli?
 
Come dicevo prima ti consiglierei l'autenticazione a livello di 
protocollo http, quindi l'autenticazione digest.
 
Per la libreria aiuterebbe sapere:
- che linguaggio e application server userai? java, php, python? linux 
con tomcat o jboss? server windows? ... ecc...
- che livello di conoscenza hai di queste cose? conosci gia' SOAP o REST?
- quante richieste avra' il webservice? uso hobbistico o di produzione?
 
Ciao

Ciao grazie 1000 per la "consulenza" :D
 
Allora, l'applicazione backend da mettere sul server sarà assolutamente java (é il linguaggio con cui mi trovo meglio per cui...)
Per il frontend come avevo già detto ci sarà PHP per il sito e una app android ma quello é al momento il minore dei problemi, vorrei fare un passaggio per volta.
 
L'applicazione é da mettere in produzione ma si può quasi dire che é una cosa hobbistica. Lo useremo in azienda per rendere disponibile sul mio telefono e sul tablet del collega alcune informazioni presenti sul nostro sito ed altre che stiamo inserendo in questi giorni. Se faremo un centinaio di richieste al giorno saranno tante.
 
Però mi piace pensare che poi lo si possa sfruttare in modo molto più massivo dando un accesso ai cliwnti .
 
Il server al 99% sarà linux e per il container non ho preferenze, non ne ho mai usato uno per cui ho da imparare qualcosa di nuovo. Domandina stupida, il container non si può evitare usando l'annotazione @WebService e poi pubblicando la classe annotata?
 


Io per cose piccole ho spesso usato un bel jetty embedded
Poche righe di codice e il tuo server funziona
M
 
-- 
I fatti mi cosano
 
 

 Poche righe di codice e il tuo server funziona
 
cosa intendi per "cose piccole"? Mi riferisco a numero di richieste e mole di dati forniti.
 
Marco


Finora al massimo gli ho fatto fare una decina di richieste al sec su un 
backend non particolarmente pesante. Richieste sempre abbastanza piccole 
e risposte che variano da pochi byte a ~1MB
Non ho avuto problemi se non per una macchina java che girava in 
ambiente virtualizzato e si inchiodava ogni 3x2


 Ciao grazie 1000 per la "consulenza" :D
 
Ti consiglio dunque una delle seguenti (ci sono tutorial a go-go) con 
tomcat:
JAX-WS: 
http://jax-ws.java.net/
 
AXIS2: 
http://axis.apache.org/axis2/java/core/
 
 
oppure se utilizzi l'approccio REST:
JERSEY: 
http://jersey.java.net/
 
 
in entrambi i casi se ritornerai dell'xml ti sara' indispensabile 
conoscere anche JAXB ed eventualmente, ma consigliata, una libreria di ORM.
 
Se sai gia' che ritornerai i risultati delle query su un db puoi 
direttamente cercare tutorial che integrino persistenza+jaxb+creazione 
del webservice.
 
Ciao.

 del webservice.
 
Non sempre tornerò direttamente i risultati delle query, in alcuni casi avrò da elaborarli leggermente prima di inviarli ed in futuro elaboreremo i dati che riceviamo a runtime.
 
Ciao Marco

 Per la libreria ORM devo togliermi un p� di ruggine da eclipselink, mentre jaxb lo rimpiazzo con XStream (
http://xstream.codehaus.org/
) che uso da un p� di tempo e mi sono sempre trovato molto bene.
 
Jaxb ce l'hai gratis nella JVM. La curva di apprendimento � rapidissima,
per cui lascerei stare robe "legacy" e librerie esterne.
 
M.

 In entrambi i casi � obbligatorio Tomcat (o JBoss o simili) oppure � evitabile
 
Ti consiglio vivamente di usare un application server per il fatto che 
con un AS � molto pi� semplice installare/disinstallare le webapp (sotto 
forma di file .war), configurarle, avviarle, stopparle, far convivere 
pi� webapp sulla stessa porta, ecc... Il tutto da una comoda interfaccia 
web.
 
Ciao.
 

 
 
Ok allora vedrò di darci una bella occhiata a jaxb.
Grazie 1000

 
 
Ok allora mi guarderò per benino anche tomcat o glassfish. Quale consigli? se ci sono altre scelte migliori alle due che ho menzionato meglio ancora :)
 

 Ok allora mi guarder� per benino anche tomcat o glassfish. Quale consigli? se ci sono altre scelte migliori alle due che ho menzionato meglio ancora :)
 
Uno � una panda, l'altro un SUV. Non sono facilmente confrontabili.
Dipende se devi girare in citt� o off-road :-)
 
M.

 
 
Oddio un SUV non è che faccia nemmeno tanto off-road... voglio vederti a fare sterrato, non troppo serio ma nemmeno la stradina con su un pò di ghiaia, con un SUV e voglio vedere quante bestemmie tiri nel vedere quanto fatica!!
 
comunque stando in termini automobilistici non vorrei ne la panda ne il suv, diciamo che una cosa tipo golf ci potebbe stare :)

 Ok allora mi guarderò per benino anche tomcat o glassfish. Quale consigli
 
mentre tomcat e' un semplice "servlet container", jboss e glassfish sono 
dei Java EE servers, cioe' hanno anche altre funzionalita' come JMS, 
EJB, RMI, .... un sacco di funzionalita' che non credo userai.