Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502

    Risalire al codice sorgente di un web service

    Ciao a tutti!
    Sono da un bel po di tempo alle prese con la modifica di un grosso progetto e purtroppo non ho le competenze necessarie per gestire il tutto.

    Il software è divisto in 3 moduli principali, 2 scritti in C ed uno scritto in Java. Il modulo scritto in Java è il front end e comunica quindi con i moduli scritti in C. Il tutto avviene tramite web services (SOAP). Il modulo Java oltre ad accettare richieste SOAP, può anche accettare richieste REST.

    Da quello che ho potuto capire, installando il software secondo la guida, le tecnologie interessate sono Apache, Axis2, Axis2C e Rampart.

    Il mio compito consiste nel modificare il modulo Java in modo da accettare richieste in un formato diverso da quello attuale. Praticamente si tratta di modificare quello che c'è a monte. Ma purtroppo non riesco a capire cosa devo modificare. Sono disorientato fra 700 file java e centinaia di file xml.

    Ho letto un po di articoli sui web services e tutti i tutorial dicono più o meno la stessa cosa: si crea una classe java e tramite dei tool messi a disposizione si crea il file WSDL corrispondente, un file services.xml e un file war da dislocare nella cartella webapps. Ma il tutto non corrisponde poi alla realtà. Le cartelle non sono posizionate come dovrebbero essere, i file non corrispondono, e quello che corrisponde non contiene quello che mi serve.

    Sto provando ad arrivare alla soluzione tramite vie traverse, ma finisce che esco fuori strada e ritorno al punto di partenza.

    Qualcuno ha qualche consiglio da darmi?

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Il reverse engineering è sempre un'operazione complessa, a volte improba.
    Non saprei che suggerimenti darti, anche perchè ok che hai presentato l'architettura della componente java, ma così ad alto livello che dice tutto come non dice niente.
    Se non sei possesso di una ragionevole documentazione l'unica soluzione che vedo è la consolidata metodologia dell' "andare a tentoni"...

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Quoto in pieno desa, ed aggiungo che se come dici te "non hai le competenze necessarie", la cosa può diventare davvero frustrante oltre che richiedere tempi biblici.

    Chiedi aiuto a chi ha scritto la parte Java, quanto meno facendoti fornire la documentazione a corredo...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Ammetto di essere stato troppo generico nelle spiegazioni. Si tratta di Eucalyptus, un progetto open source reperibile a questo sito: http://open.eucalyptus.com.
    Ho gia chiesto diverse volte dei chiarimenti agli sviluppatori, ma pare che la loro politica a riguardo sia, leggi il codice e capisci da solo.
    Non ho molta scelta purtroppo, è il mio progetto finale per la laurea e devo trovare una soluzione quanto prima.

  5. #5
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Mi sembra una policy ben strana, visto che (ho notato) la community è aperta a sviluppatori esterni...
    Comunque, la sezione che devi visitare è - naturalmente - la "developers". Prova a cercare un documento con almeno le specifiche architetturali della piattaforma.
    Cosa ti hanno risposto, di preciso, gli sviluppatori?

  6. #6
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Questo è il documento di presentazione.

    Questa invece è una delle rare volte che rispondono a domande riguardanti il codice sorgente:
    right now we don't have documentantion so if you want to code within eucalyptus you will have to read the code. We do have some well defined interfaces between components (say NC and CC for example) in case you want to replace a whole component.

  7. #7
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Aggiungo un po di informazioni:
    Devo creare una nuova operazione, basandomi su un' altra gia esistente, con la differenza che la mia accetta più parametri in ingresso.
    Andando a vedere quindi come è stata organizzata tale operazione, ho notato che è costituita da vari web service, i quali comunicano fra di loro tramite il framework Mule ESB.
    Ho trovato la struttura di questo flusso in alcuni file di configurazione xml.
    Se la parte interna mi torna, ho dei problemi con gli estremi del flusso, ovvero la parte finale che comunica con i moduli scritti in C, e la parte iniziale che comunica con il client.
    Trascurando la parte scritta in C, come faccio a risalire al componente che viene utilizzato per la prima parte?
    In pratica il flusso è una sequenza di Front-end->Service->Component.
    Il front end corrisponde all'indirizzo per reperire il Service implementato dal Component.
    Tutti i service interni sono reperibili tramite un front-end del tipo vm:nomeService, che da quello che ho capito sono url fittizie che indicano che le componenti risiedono sulla medesima macchina.
    Quello che mi aspettavo per il serivce iniziale era qualcosa del tipo http://qualcosa, invece mi ritrovo anche li con vm:qualcosa.

  8. #8
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Un piccolo passo avanti è stato fatto:
    Riesco a capire da dove inizia il codice sorgente che tratta l'operazione da cui prendere spunto. Ho analizzato meglio i file di configurazione di Mule.
    Il problema ora rimane capire come sia possibile trasformare una richiesta SOAP/Query in un oggetto interno java.
    Non capisco chi si occupa di tale compito. I candidati sono Mule ESB, JiBX, Axis2.
    Probabilmente sto dicendo delle stupidaggini, ma sono abbastanza incompetente su questo genere di programmazione, mi sono ritrovato davanti una mole di tecnologie di cui non conoscevo nemmeno l'esistenza e sto cercando di trovare un senso a tutta la struttura del progetto.

  9. #9
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Scusa, vediamo se ho capito il meccanismo:
    - il client fa una richiesta alla componente Java inviando una serie di parametri (in che formato?)
    - la componente Java fa una serie di operazioni per costruire la risposta, interrogando le componenti C (tramite SOAP?)
    - il componente Java finisce di costruire la risposta e la ritorna al client (in che formato?)
    Quello che non ho capito è chi richiama i services tramite il "vm:xxx" e in quale componente sono implementati.

    Comunque, visto che sono coinvolte tutte queste tecnologie diverse credo che il primo passo debba essere approfondirle un po'...

  10. #10
    Utente di HTML.it L'avatar di matrics
    Registrato dal
    Jul 2004
    Messaggi
    502
    Originariamente inviato da desa
    Scusa, vediamo se ho capito il meccanismo:
    - il client fa una richiesta alla componente Java inviando una serie di parametri (in che formato?)
    - la componente Java fa una serie di operazioni per costruire la risposta, interrogando le componenti C (tramite SOAP?)
    - il componente Java finisce di costruire la risposta e la ritorna al client (in che formato?)
    Quello che non ho capito è chi richiama i services tramite il "vm:xxx" e in quale componente sono implementati.

    Comunque, visto che sono coinvolte tutte queste tecnologie diverse credo che il primo passo debba essere approfondirle un po'...
    Sto chiarendo un po di questioni proprio adesso. Quello che ho concluso è:
    La comunicazione client server può essere di 2 tipi: SOAP o Query HTTP.

    Il client che per ora utilizzo fa richieste Query HTTP.
    Quando questa richiesta raggiunge il server (modulo Java), c'è un punto che mi è ancora oscuro, dove avviene la trasformazione da Query HTTP in oggetto Java. Tale oggetto viene trattato da una catena di web services interni implementati da altrettanti componenti Java. Una volta che la catena si completa, viene effettuata una richiesta SOAP alla componente C, la quale risponde opportunamente ed il modulo Java può quindi rispondere di conseguenza al client.

    Di service vm:xxx ne esiste uno per ogni componete della catena del modulo Java. Tutte le componenti a partire dalla seconda in poi sono chiare. Il problema, come detto qualche riga sopra è come i dati arrivano alla prima componente.

    Mi manca la fase di trasformazione del dato da formato HTTP a oggetto Java ed inolto al primo service della catena.

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.