Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41

    [Java - WS] come far ritornare la stessa classe da diversi servizi

    Buongiorno a tutti.
    Ho una domanda che mi assilla da un pò di tempo e che vorrei chiarire.
    Premetto che non so se la cosa sia possibile ma io imposto il problema male o se proprio non si possa fare.
    Il problema è questo:

    Supponiamo di avere 3 classi:
    - Cliente
    - GestoreClienti
    - SystemManager

    dentro le classi GestoreClienti e SystemManager ci sono dei metodi pubblici che ritornano degli oggetti di tipo Cliente.
    Io ho creato un web service per ciascuna classe e poi nel programma che girerà lato client richiamo i metodi.
    La cosa che non mi torna è che gli stub mi obbligano ad accedere a classi "Cliente" che sono effettivamente diverse tra loro.
    Ad esempio la classe SystemManager mi restituisce un oggetto di tipo SystemManagerStub.Cliente mentre GestoreClienti mi restituisce un oggetto di tipo GestoreClientiStub.Cliente.

    Io vorrei che il tipo di ritorno fosse lo stesso.
    Ho provato a fare un cast ma ovviamente non funziona. La cosa è piuttosto scomoda da gestire, quindi vorrei sapere:

    Questa cosa si può fare o sto dicendo una grande scemenza?

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41
    Sto continuando a cercare ed ho trovato 2 cose interessanti:

    1) questo che dice come settare il file server-config.wsdd.
    La guida si riferisce però ad Axis e non ad Axis2. Si può adattare in qualche modo per farla funzionare su axis2?

    2) un altro articolo diceva di cambiare il gestore dei binding da ADB (quello standard di axis) a xmlbeans. Non ho ben capito la differenza tra i 2, comunque se funziona si può fare...

    Qualcuno ne sa qualcosa?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41
    Possibile che nessuno ne sappia niente? Eppure dovrebbe essere una cosa piuttosto comune...

    Voglio dire, se uno ha un'applicazione che decide di rendere disponibile tramite interfaccia web una delle prime cose che richiede è che le classi riescano a comunicare tra di loro...
    Non posso credere che questa cosa non si possa fare...

    Per piacere, datemi delle delucidazioni!

  4. #4
    Premessa: uno stub non è altro che un insieme di classi generate automaticamente sulla base della descrizione di interfaccia del WS fatta dal WSDL affinchè un client possa interagire con il WS stesso in maniera più agevole. L'insieme di classi generate è grandemennte dipendente da molti fattori, in primis il linguaggio di programmazione con cui si genera il client, ma anche dalla libreria utilizzata per generartlo, nonchè da parametri di configurazione della stessa libreria. Per fare solo un esempio, mi è capitato di generare due stup completamente differenti, utilizzando axis1.1 piuttosto che axis2 per interagire con il medesimo webservice.
    Quello che stai facendo tu, è che non corretto a mio avviso, è fare delle assunzioni sull'implementazione che il tuo stub farà del modello astratto rappresentato dal WSDL. I webservice sono stati pensati proprio per consentire a piattaforme anche molto diverse da quelle su cui gira un dato WS , di interagire con esso.
    Detto ciò, ti consiglio di scrivere uno strato software (un connettore) che farà da interfaccia tra il resto del tuo software e il webservice (utilizzando le classi dello stub per farlo). Questo connettore dovrà avere la proprietà di esporre all'esterno soltanto oggetti del TUO modello di classi, e dovrà avere cura di popolare tale modello sulla base dei valori restituiti dalle chiamate.

    Originariamente inviato da rama1987
    Possibile che nessuno ne sappia niente? Eppure dovrebbe essere una cosa piuttosto comune...

    Voglio dire, se uno ha un'applicazione che decide di rendere disponibile tramite interfaccia web una delle prime cose che richiede è che le classi riescano a comunicare tra di loro...
    Non posso credere che questa cosa non si possa fare...

    Per piacere, datemi delle delucidazioni!
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5

    Re: [Java - WS] come far ritornare la stessa classe da diversi servizi

    Riferendoci all'esempio specifico, il tuo client dovrebbe incapsulare lo stub in una maniera del tipo

    codice:
    MyWSConnectorImpl impements MyWSConnector
    {
      public Cliente callSystemManager()
      {
        SystemManagerStub.Cliente sysCliente = stub.callSystemManager(bla,bla);
        Cliente cliente = new Cliente();
        cliente.setPippo(sysCliente.getSysPippo());
        return cliente;
       }
       public Cliente callGestoreClienti()
      {
        GestoreClientiStub.Cliente gestCliente = stub.callGestoreClienti(bla,bla);
        Cliente cliente = new Cliente();
        cliente.setPippo(gestCliente.getGestPippo());
        return cliente;
       }
    }
    Spero di aver resto l'idea
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Mi sono appena accorto che hai scritto di aver creato un webservice per ciascuna classe. Ora...non so se questo è realmente ciò che volevi oppure se puoi anche scrivere un unico webservice con uno o più metodi che "scambiano" con ciascuna delle classi in oggetto, le considerazioni che ho fatto restano comunque valide per quanto mi riguarda, ovviamente relazionandole a quello che è il tuo obiettivo.
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41
    Ho preso spunto dalla tua indicazione e ho creato un'unica classe che incapsula la chiamate ai metodi delle altri classi (che prima erano WS).
    Questa classe l'ho poi trasformata in WS. Ora in effetti i tipi di ritorno sono quelli che ci si aspetta.

    Grazie mille!

  8. #8
    Originariamente inviato da rama1987
    Ho preso spunto dalla tua indicazione e ho creato un'unica classe che incapsula la chiamate ai metodi delle altri classi (che prima erano WS).
    Questa classe l'ho poi trasformata in WS. Ora in effetti i tipi di ritorno sono quelli che ci si aspetta.

    Grazie mille!
    Ok
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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.