Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Web Service

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79

    Web Service

    Salve a tutti ho creato un programmino java composto da una decina di classe.
    Ora il mio scopo è di farlo diventarlo un web service. Ho installato apache tomcat e axis...
    ho rinominato la prima classe da primaclasse.java a primaclasse.jws...il tutto sembra che funzioni. Vado ad invocare una funzione della primaclasse e funziona...il problema è che quando ho delle chiamate verso le restanti classi il programma mi si pianta. Cioè riesco a utilizzare solo i metodi che ho dichiarato nella prima classe...non sono pratico di web service e quindi non ho capito dove sbaglio...qualcuno mi può essere d'aiuto? grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79
    ho risolto in parte...allora le altri classi e sufficiente copiarle in una cartella apposita di axis...però non funziona lo stesso. Ho infatti usato delle variabili STATIC all'interno di qualche classe e per questo non riesco ad accedere ad esse...qualcuna sa se i web service hanno delle limitazioni se in una qualche classe si usano delle variabili di questo tipo?
    grazie a chi mi risponde

  3. #3
    le limitazioni stanno nei file JWS che sono utili sono per piccole classi di esempio.
    Vedi http://ws.apache.org/axis/java/user-...rvicesWithAxis per il deploy via descrittori WSDD
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79
    ciao, sto provando a seguire il secondo metodo del link http://www.javaportal.it/rw/33510/editorial.html per la creazione di un web service. Putroppo mi sono fermato quasi subito...quando infatti vado a inserire il comando (dove Somma è il web service che voglio implementare)

    java org.apache.axis.wsdl.Java2WSDL -o Somma.wsdl -l http://localhost:8080/axis/WEB-INF/classes/Somma -n urn:com.dominio.service.somma -p com.dominio.service.somma urn:com.dominio.service.somma Somma

    mi da come errore: Unable to parse first argument for option -p

    qualcuno sa che vuol dire?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79
    ok...tralasciando l'opzione -p per il momento sono riuscito a implementare l'esempio riportato dal link

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79
    dal momento in cui cerco di trasfomare il mio applicativo in un web service mi da questo errore:


    C:\ws>java org.apache.axis.wsdl.Java2WSDL -o Somma.wsdl -l http://localhost:8080
    /axis/WEB-INF/jwsClasses/LeggiXml -n urn:com.dominio.service.LeggiXml LeggiXml
    Errore nella lettura del file

    qualcuno mi sa dire in cosa sbaglio? il sorgente è il seguente

    [edited]

  7. #7
    non puoi accedere alla cartella WEB-INF via http, in quanto quella cartella è protetta dal tomcat e il suo contenuto non viene mai esposto. Per referenziare la classe usa il path che ha sul file system.

    Comuqnue rivedrei dalle basi cosa vuoi esporre. La classe che hai scritto dovrebbe avere come metodi pubblici solo i metodi che vuoi esporre (e nascondi tutti gli attributi!!).

    LeggiXml non accetta parametri né restituisce alcunché. Che senso ha esporlo come WS? Se è un prerequisito che venga eseguito, mettilo da qualche altra parte, non certo puoi assumere che chi ti invoca sappia che deve invocare prima lui! Non usare metodi statici.
    Insomma: ripense per bene che "servizi" vuoi rendere disponibili via WS e crea una classe che implementa solo quelli...
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79
    ho postato quella classe perchè il problema è li...i metodi statici li devo usare per forza (almeno uno...mi gestisce l'errore e ho bisogno che l'oggetto sia visibile da tutte le altre classi). IL WS ha l'obbiettivo di ricevere un file e controllarne il formato. La classe esposta che puoi vedere qui sotto ha solo due metodi...non ho ancora fatto il ritorno perchè non mi funziona. Il problema cè quando invoco il metodo del webservice chiamato controllofile() che mi va a istanziare appunto un'oggetto LeggiXml....consigli?

    p.s. non so se serve ma ti allego anche l'errore che mi da quando chiamo appunto controllofile()

    [edited]



    Exception in thread "main" AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode:
    faultString: java.lang.reflect.InvocationTargetException
    faultActor:
    faultNode:
    faultDetail:
    {http://xml.apache.org/axis/}hostname:-

    java.lang.reflect.InvocationTargetException
    at org.apache.axis.message.SOAPFaultBuilder.createFau lt(SOAPFaultBuilder
    .java:262)
    at org.apache.axis.message.SOAPFaultBuilder.endElemen t(SOAPFaultBuilder.
    java:169)
    at org.apache.axis.encoding.DeserializationContextImp l.endElement(Deseri
    alizationContextImpl.java:1092)
    at org.apache.xerces.parsers.AbstractSAXParser.endEle ment(AbstractSAXPar
    ser.java:546)
    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.sc anEndElement(XMLNSD
    ocumentScannerImpl.java:533)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerI mpl$FragmentContent
    Dispatcher.dispatch(XMLDocumentFragmentScannerImpl .java:1560)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerI mpl.scanDocument(XM
    LDocumentFragmentScannerImpl.java:355)
    at org.apache.xerces.parsers.DTDConfiguration.parse(D TDConfiguration.jav
    a:539)
    at org.apache.xerces.parsers.DTDConfiguration.parse(D TDConfiguration.jav
    a:595)
    at org.apache.xerces.parsers.XMLParser.parse(XMLParse r.java:152)
    at org.apache.xerces.parsers.AbstractSAXParser.parse( AbstractSAXParser.j
    ava:1125)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at org.apache.axis.encoding.DeserializationContextImp l.parse(Deserializa
    tionContextImpl.java:257)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPar t.java:582)
    at org.apache.axis.Message.getSOAPEnvelope(Message.ja va:447)
    at org.apache.axis.client.Call.invokeEngine(Call.java :2702)
    at org.apache.axis.client.Call.invoke(Call.java:2665)
    at org.apache.axis.client.Call.invoke(Call.java:2355)
    at org.apache.axis.client.Call.invoke(Call.java:2278)
    at org.apache.axis.client.Call.invoke(Call.java:1772)
    at ricevoxml.service.dominio.com.RicevoxmlSoapBinding Stub.controllofile(
    RicevoxmlSoapBindingStub.java:122)
    at SquareIntegerClient.main(SquareIntegerClient.java: 13)

  9. #9
    e come ricevi il file?? Dall'ultima tua classe sembra via socket. Ma allora non via Web Service!!
    A che toi serve il WS? Se devi usare quello per forza (perché questa è la specifica) scordati di usare altre strade per leggere i dati (socket, file system, URL etc etc): tutti i dati vanno passati come argomento ai servizi (a parte i dati binari che potresti mettere come attach, ma per ora lasciamo stare).

    Altra cosa: che caspita significa che "l'oggetto sia visibile da tutte le altre classi"?
    Attento che stiamo parlando sempre di ambienti in cui c'è la concorrenza; e i WS non possono assumere che tra due invocazioni di metosi diversi nessun altro abbia invocato altri servizi; in soldoni: se hai un unico oggetto errore e 100 invocazioni contemporanee al servizio, a quale delle 100 si riferisce??

    Ritorniamo al punto di partenza: ripensa alla tua soluzione, partendo proprio da cosa vuoi esporre e solo dopo cerca di scrivere le classi in maniera appropriata...
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2001
    Messaggi
    79
    si esatto via socket...invoco il servizio tramite la chiamata al servizio connetti() e una volta che il ws è in attesa gli passo il file via socket (ma questa cosa funziona però!!!! anche se è l'unica...) il metodo che mi dici tu non l'ho implemantato perchè non sapevo come altro fare...

    per l'altra cosa: in pratica mi stai dicendo che quindi i metodi statici non si possono usare giusto? e che se voglio andare avanti devo implementare in ALTRO modo il software perchè così non lo posso trasformare in un web service...giusto??? (anche se non ho capito la faccenda delle 100 chiamate in contemporanea...cioè quando c'è un errore viene chiamato quell'oggetto...ma non ci potranno mai essere 100 errori contemporaneamente....c'è ne saranno al max uno alla volta e qundi ci sarà solo una chiamata alla volta a quella classe o no?)

    ti ringrazio per la disponibilità

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.