Salve, sono un novellino di Java e di JWS in particolare... mi chiedevo se fosse possibile utilizzare all'interno di un webservice un'altra classe.... quando ci provo ricevo una simpatica eccezione![]()
Salve, sono un novellino di Java e di JWS in particolare... mi chiedevo se fosse possibile utilizzare all'interno di un webservice un'altra classe.... quando ci provo ricevo una simpatica eccezione![]()
non sono un esperto nel settore ma credo che con jws dovresti poter referenziare un servizio con una classe alla volta. ad ogni modo io utilizzo Apache Tuscany per esporre il wsdl di un web service. è un pò ostico ma riesco comunque a comporre un servizio con più classi.
hum.. io ho provato a mettere due classi nel file Jws e da quella che è il vero e proprio webservice istanziare la seconda quando mi serve.. ma niente...
ho provato a mettere le due in file separati, niente...
temo non sia proprio possibile...
biooh, avevo fatto un programma da riga di comando che poi mi serviva integrare nel webservice.. pensavo fosse una cosa banale ma a quetso punto o faccio un exec del programma stand alone, oppure butto tutto in una classe![]()
nessuno sa darmi conferma del fatto che non ci sia modo per riciclare una seconda classe in qualche modo?
Tutto in una classe è davvero una zozzeria![]()
Scusa la mia ignoranza di comprendonio....ma non ho capito....Originariamente inviato da }gu|do[z]{®©
nessuno sa darmi conferma del fatto che non ci sia modo per riciclare una seconda classe in qualche modo?
Tutto in una classe è davvero una zozzeria![]()
Allora tu hai creato una classe tempo fa che faceva delle belle cose...
Ora hai creato un webservice e vorresti che questa classe venisse chiamata dal webservice che hai creato....ma questo non ti accade???
Giusto?
Beh...se è così è la prima volta che succede, dato che sinceramente lo faccio da una vita...
Se non è così aiutami a capirti per aiutarti...
Del codice dove viene chiamata la classe sarebbe utile...
Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli
sì... ho messo due classi in un file.... una è una classe che mi estende una classe webservice che mi hanno dato, l'altra è la mia classe accessoria invocata dalla primaOriginariamente inviato da @DI3GO@
Beh...se è così è la prima volta che succede, dato che sinceramente lo faccio da una vita...
Se non è così aiutami a capirti per aiutarti...
al momento della creazione di un oggetto del tipo della seconda classe, viene fuori un'eccezione
scusa se sono vago, ma ora non ho nulla a portata di mano
mi dici se tu normalmente metti le classi accessorie nel file jws stesso? se così evidentemente l'eccezione non è dovuta a quello...![]()
Posta l'eccezione.
Almeno possiamo vedere di che si tratta, e poi, se non era possibile ti avrebbe dato un errore in compilazione, dato che per le classi l'unica eccezzione di caricamento in Runtime è quando avviene una riflessione ( praticamente uso di operazioni come Class.forName(...) ecc... )
Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli
Allora...
l'eccezione è questa: java.lang.reflect.InvocationTargetException
Però va detto che questa eccezione mi viene fuori lato php (client) quando invoco la sopacall
in ogni caso non sembra un problema lato php, perchè se allo stesso metodo java che invoco con la soapCall levo la creazione di un nuovo oggetto dell'altra mia classe e gli faccio restituire un dato fittizio, tutto va bene...Codice PHP:
$customer = new SoapClient($wsdl);
if (!is_array($temp = $customer->__soapCall($method, $params)))
//etc etc
cioè se invoco
metodoScemo(String boh)
{
return boh;
}
non ho nessun problema
se lo stesso metodo lo faccio diventare
metodoScemo(String boh)
{
ClasseScema cs = new ClasseScema(boh);
return boh;
}
ho quell'eccezione lì
Non ci sono errori nella seconda classe, perchè la usavo prima da un main (che è diventato il mio webservice) e funzionava tutto bene senza eccezioni di sorta
boh!
Ma scusa....la classe è pubblic? Appartiene allo stesso package?
Mettilo in un blocco try{}catch e all'eccezione richiedi il getCause();
Il problema è un errore di chiamata....in compilazione riconosce, ma non c'è modo di fargli caricare la classe....a sto punto potrei dirti di provare anche con la riflessione ( cosa che accade indirettamente ) con la classe Class.
Non mi viene in mente altro...Cmq un ws ripeto che può tranquillamente implementare altre classi.
Prova a postare ( se non di dimensioni eccessive ) il chiamante ( ws ) e la chiamata ( seconda classe ) in modo da poter analizzare se c'è qualcosa.
Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli
allora...
ho fatto una prova ridotta all'osso
ho un file Prova.jws che contiene 2 classi:
adesso, se commento la riga ClasseScema cs = new ClasseScema("x");codice:public class Prova extends WebService { public String test(String p) { ClasseScema cs = new ClasseScema("x"); return p; } } class ClasseScema { String boh = null; public ClasseScema(String uri) { boh = uri; } }
il metodo test restituisce quello che gli passo come parametro
ma con quella riga mi da un'eccezione
SoapFault Object ( [messagerotected] => java.lang.reflect.InvocationTargetException [string
rivate] => [code
rotected] => 0 [file
rotected] => prova.php [line
rotected] => 9 [trace
rivate] => Array ( [0] => Array ( [file] => prova.php [line] => 9 [function] => __soapCall [class] => SoapClient [type] => -> [args] => Array ( [0] => test [1] => Array ( [0] => ciao ) ) ) [1] => Array ( [file] => prova.php [line] => 26 [function] => useWS [args] => Array ( [0] => http://localhost:8080/axis/Prova.jws?wsdl [1] => test [2] => Array ( [0] => ciao ) ) ) ) [faultstring] => java.lang.reflect.InvocationTargetException [faultcode] => soapenv:Server.userException [detail] => stdClass Object ( [hostname] => localhost ) )