Newsgroup: it.comp.java
Titolo: webservice java

Ciao a tutti,
 
lavoro da molto su .NET ed ho sviluppato qualcosa in java.
In particolare come riportato nell'oggetto ora mi trovo davanti all'esigenza di sviluppare dei web service ma la cosa che mi lascia un pò "perplesso" è per così dire l'eterogeneità delle tecnologie disponibili.
 
Non che non sia bello poter scegliere ma all'inizio crea un pò di confusione.
Io devo sviluppare dei semplici WS SOAP che dovranno poi essere richiamati da una web app (sto guardando PrimeFaces ed è veramente fantastico!).
 
Quello che vi chiedo è qual è un modo semplice per sviluppare WS in Java? Quale dei tanti framework consigliate e perchè ?
Non vorrei perdere ore a configurare Eclipse...è quasi più difficile prepararsi l'ambiente che sviluppare il progetto :)
 
Il web server dovrà infine girare su WebSphere...cosa devo quindi tenere in considerazione per assicurare compatibilità con questo ambiente ?
 
Grazie!

il 03.12.2012 14:55, Scrive 
arch...@inbox.com
 13847356:

Ovvio che qualsiasi cosa diventa difficile se non l'hai mai fatta, e hai 
delle remore ad imparare.
 
Comunque...
Una volta scritta la classe che implementa il/i servizi, da eclipse la 
clicchi col tasto destro, scegli Webservice dal menu, e poi Create 
Webservice. Si apre il wizard che ti chiederà sostanzialmente tre cose:
 
- che axis vuoi usare: axis2 sembra essere più efficente, io uso axis
- che server runtime vuoi usare: il server va creato prima.
- che progetto Dynamic Web vuoi usare: eventualmente te lo crea lui.
 
finito.
 
Tutto ciò dovrebbe funzionare anche da Net Beans, che però per Websphere 
non credo che funzioni.
 
per creare il server puoi fare in diversi modi, il piu' immediato e' 
scegliere Targeted Runtimes dal menu properties di un progetto, da li 
puoi crearne quanti ne vuoi.
Ovviamente se devi creare robe per websphere, ti conviene usare il 
Rational Ad ma lo fai anche da eclipse standard.
 


Non ho nessuna remora ad imparare...anzi :)
Mi sembra di capire che quindi prima scrivo la classe e solo dopo indico ad eclipse che voglio renderla un ws ?
Immagino la classe dovrà ereditare da qualche altra.
 
Purtroppo non ho modo di usare Rational Ad, pensi che faccio girare un ws su Tomcat sia poi un problema deployarlo su WebSphere ?

 Purtroppo non ho modo di usare Rational Ad, pensi che faccio girare un ws su Tomcat sia poi un problema deployarlo su WebSphere ?
 
 
Nella vista Servers di Eclipse puoi installare un nuovo server di tipo
WebSphere. Una volta terminato, potrai esportare il progetto web usando
il formato / descrittore a te piů congeniale (es. war) e fare il deploy
nell'application server desiderato.
 
M.


Non saprei. Direi di no. La cosa più rapida e' provarci.
Di sicuro il context.xml per tomcat non va bene. Meglio utilizzare solo 
il web.xml

Sto cercando di capirci qualcosa su un programma per android.
Volevo chiedervi del perch� si usa questa sintassi :
 
opzioni.4.access$0(this.this$1)
 
Il  . dopo il 4 su che classe agisce?
il simbolo $ � un semplice carattere oppure fa altro ? (perch� dopo vedo 
sempre numeri)
 
Scusate ma queste cose sono un po' difficile da trovare su internet (almeno 
per me)
 

 opzioni.4.access$0(this.this$1)
 
Di cosa stai parlando?
Che fai stai guardando?
 
Non ho mai visto questa sintassi su Android...
 
Bye.

Il giorno lunedì 3 dicembre 2012 15:57:06 UTC+1, Dr.Ugo Gagliardelli ha scritto:

Ciao,
 
ho fatto esattamente come mi dici.
Ho creato una classe con il codice di test che mi interessa e poi ho cliccato su WebService.
E' andato tutto ma come faccio a richiamare e testare il ws da Eclipse ?
 
Ho provato anche ad esportarlo in WAR e deployarlo in Tomcat manualmente, mi dice che è "Running" ma clicco sul link che ti crea (colonna "Path" per intenderci) mi da errore 404 nel Browser e non va.
 
Ho creato anche un semplice metodo chiamato Hello che ritorna una stringa ma non capisco come poterlo richiamare.
 
Grazie mille

 Ho creato anche un semplice metodo chiamato Hello che ritorna una stringa ma non capisco come poterlo richiamare.
 
Il wizard WebServices ti permette di scegliere un livello per fare il 
deploy nel tomcat che hai scelto, quindi non dovrebbe essere necessaria 
la procedura che descrivi.
 
Per testare il webservice, potresti, ad esempio, utilizzare lo stesso 
wizard per creare un progetto web dinamico partendo dal file wsdl che 
riprovi nella cartella WebContent/wsdl, indicando di creare il client.
Anche in questo caso puoi scegliere di creare solo i file java, oppure 
di creare una vera e propria webapp con tanto di form html per 
interrogare il webservice.
 
 
 
 

Ciao,
 
ho realizzato il ws come suggerito e funziona perfettamente.
Ora avrei bisogno di ottener lo userPrincipal dell'utente chiamante, che arriva sul web server.
 
Non avendo ereditato da una classe non capisco come devo agganciare il context per potrebbe sfogliare le proprietà.
Il ws è stato sviluppato usando axis ed è deployato su Tomcat.
 
Suggerimenti?
Grazie!


Indaga l'user database del tomcat, puï¿œ essere implementato in molti modi.

 Indaga l'user database del tomcat, può essere implementato in molti modi.
 
potresti indicarmi un punto di partenza ?
scusa con i vari tentativi che ho fatto il mio context mi risultava sempre NULL.
 
Verificando il web.xml ho questa voce :
 
<servlet>
		<servlet-name>AxisServlet</servlet-name>
		<display-name>Apache-Axis Servlet</display-name>
		<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
	</servlet>
 
E' forse dall'oggetto AxisServlet che devo recuperare il mio context ?
Se si, in quale modo ?
 
Grazie mille


Premetto che non ho capito la domanda, nel senso che mi sfugge quale sia 
il tuo obiettivo.
In generale il tuo context puoi definirlo per mezzo di paramentri nel 
web.xml. Ma visto che poi il tomcat te li mette a disposizione nel 
context jndi, tanto vale utilizzare direttamente un file 
META-INF/context.xml. Questa tecnica ti permette di non "sporcare" il 
web.xml, che essendo stato generato per axis, e' passibile di essere 
sovrascritto.

 sovrascritto.
 
L'obiettivo è ottenere all'interno del webmethod l'utenza che ha effettuato la chiamata al webserver.
Dal META-INF/context.xml come posso ottenere, tramite il context jndi, il context e quindi da li l'utente ?
 
Grazie mille

 Dal META-INF/context.xml come posso ottenere, tramite il context jndi, il context e quindi da li l'utente ?
Nel context.xml puoi definire il realm e quindi il tipo di 
autenticazione richiesta, ma serve solo allo scopo di definizione, e' 
un'informazione statica. Non credo che il nome dell'utente possa essere 
reperito dalla classe che implementa il webservice, ovvero non so se sia 
possibile e neanche se si possa fare.
Forse estendendo l'AxisServlet, che a sua volta estende HttpServlet, 
potresti utilizzare HttpServletRequest.getUserPrincipal().getName() per 
ricavare il nome dell'utente. Poi occorre farlo sapere al webservice 
congiuntamente al sessionid. Anche in questo caso non so se ci sia un 
meccanismo gia' pronto.
 
 

Ho  esperienza nel mondo .Net dove la cosa è fattibilissima ed in modo semplice.
È sufficiente accedere al context e quindi ottenere l'identità del server "catturata" da IIS
 
Sinceramente mi aspettavo una cosa molto simile in Java dato che i due framework sono veramente molto simili.
Ma se l'utenza mi arriva su Tomcat possibile che non riesca ad ottenerla dopo che questo ha definito la sessione dell'utente?
 
Ad ogni modo proverò la strada che mi indichi e vedrò cosa riesco ad ottenere.
 
Grazie infinite x la disponibilità

 Ma se l'utenza mi arriva su Tomcat possibile che non riesca ad ottenerla dopo che questo ha definito la sessione dell'utente?
In una servlet e' possibile, basta reperire l'utente dalla request, ma 
in un webservice non lo so.


 sessionid. Anche in questo caso non so se ci sia un meccanismo gia' pronto.
 
Su Glassfish faccio
 
@Resource
private SessionContext sessionContext;
...
Principal principal = sessionContext.getCallerPrincipal();
 
Credo che su Tomcat sia del tutto simile. Se non c'ï¿œ l'injection del
container @Resource non lo usi ma puoi prendere il context con il
factory statico.
 
M.


Per quanto ne so, il SessionContext  esiste solo in un Enterprise 
JavaBean, inoltre direi che il caller-principal non sia esattamente 
l'user-principal che servirebbe all'op, ovvero il REMOTE-USER della 
request http.
L'op, vorrebbe regredire al REMOTE-USER a partire dalla classe che 
implementa un webservice, quindi dopo che l'axis servlet abbia 
istanziato l'oggetto webservice. Io non lo so fare, e non nego che 
saperlo piacerebbe anche a me.