Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41

    Settare l'endpoint reference su client di un web service

    Ciao, oggi ho finito di sviluppare la mia applicazione web utilizzando eclipse + wtp.
    Devo ora installare la parte server su una macchina e la parte client su un'altra.
    Per la parte server non ho avuto problemi:
    ho esportato tutto come war e ho messo il file dentro $tomcat/webapp. Il tutto funziona.
    Per il client non mi è ben chiaro come devo procedere...
    Io in Eclipse facevo semplicemente "run as java application" e finiva lì.
    Ora invece ho 2 problemi:
    - Non ho capito se devo esportare il progetto client come war o come jar: credo che questo derivi in parte o del tutto dal fatto che nel mio progetto client dentro eclipse io ho sia il client stub che i package della GUI.
    - Come faccio a specificare l'indirizzo in cui contattare il server che espone il servizio? Dove lo devo scrivere?

    Come avrete capito è la prima volta che sviluppo un servizio web, quindi se non mi sono spiegato bene o il problema è di ovvia soluzione chiedo scusa. Anche semplici link o dritte sono ben accetti!

    Grazie!

  2. #2

    Re: Settare l'endpoint reference su client di un web service

    Originariamente inviato da rama1987
    - Non ho capito se devo esportare il progetto client come war o come jar: credo che questo derivi in parte o del tutto dal fatto che nel mio progetto client dentro eclipse io ho sia il client stub che i package della GUI.
    Questo dipende dal fatto che il software che utilizza la parte client (lo stub) sia un'applicazione web o meno. Da quello che capisco si tratta di un software standalone quindi andrà bene un jar con opportuna main class specificata nel manifest.

    Originariamente inviato da rama1987
    - Come faccio a specificare l'indirizzo in cui contattare il server che espone il servizio? Dove lo devo scrivere?
    Anche qui dipende da come è stato creato lo stub, generalmente hai un locator di qualche tipo cui puoi passare una URL (l'endopoint del ws)
    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.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41

    Re: Re: Settare l'endpoint reference su client di un web service

    Originariamente inviato da unomichisiada
    Questo dipende dal fatto che il software che utilizza la parte client (lo stub) sia un'applicazione web o meno. Da quello che capisco si tratta di un software standalone quindi andrà bene un jar con opportuna main class specificata nel manifest.
    Si, si tratta di un'applicazione standalone.
    Il file manifest l'ho già scritto ma ottengo errori per quanto riguarda l'ubicazione delle immagini.
    Siccome però nel jar i file delle immagini ci sono avevo ipotizzato che il problema riguardasse qualcosa che a che fare con i Web server. Non credo però che sia così.
    Più tardi mi rimetto a vedere se ho dimenticato qualcosa nel file MANIFEST.MF


    Originariamente inviato da unomichisiada
    Anche qui dipende da come è stato creato lo stub, generalmente hai un locator di qualche tipo cui puoi passare una URL (l'endopoint del ws)
    Qui invece non ho ben capito che cosa dovrei fare...
    Supponiamo che il client sia all'indirizzo

    http://192.168.0.xxx:8080/nomeServizio/

    e il client giri in delle macchine nella stessa lan del server, quindi hanno indirizzi del tipo

    http://192.168.0.yyy

    come faccio a dire al client di mandare le richeste a http://192.168.0.xxx:8080/nomeServizio/?
    Cioè, a parte farlo scrivendolo nel codice non c'è un qualche parametro da specificare nel file web.xml o qualche altro file di configurazione?

    Grazie mille per l'aiuto!

  4. #4

    Re: Re: Re: Settare l'endpoint reference su client di un web service

    Originariamente inviato da rama1987
    Qui invece non ho ben capito che cosa dovrei fare...
    Supponiamo che il client sia all'indirizzo

    http://192.168.0.xxx:8080/nomeServizio/

    e il client giri in delle macchine nella stessa lan del server, quindi hanno indirizzi del tipo

    http://192.168.0.yyy

    come faccio a dire al client di mandare le richeste a http://192.168.0.xxx:8080/nomeServizio/?
    Cioè, a parte farlo scrivendolo nel codice non c'è un qualche parametro da specificare nel file web.xml o qualche altro file di configurazione?

    Grazie mille per l'aiuto!
    Se fai avere il wsdl del tuo webservice parliamo di cose concrete visto che non saprei in che altro modo spiegarti cosa devi fare.
    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
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41

    wsdl

    Detto fatto, l'ho caricato come file anche se è piuttosto corposo...
    Se non vuoi guardarlo tutto (come penso) dimmi quali sezioni ti interessano che tolgo le altre.

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://ws.server" xmlns:ax26="http://gestioneAgente.server/xsd" xmlns:ax23="http://areeGeografiche.server/xsd" xmlns:ax21="http://gestioneCliente.server/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ax210="http://user.server/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws.server">
        <wsdl:documentation>
    		Please Type your service description here
    	</wsdl:documentation>
    
            ....qui ci sono le definizioni dei tipi.....
    
        <wsdl:service name="WebService">
            <wsdl:port name="WebServiceHttpSoap11Endpoint" binding="ns:WebServiceSoap11Binding">
                <soap:address location="http://localhost:8080/CRMWS/services/WebService.WebServiceHttpSoap11Endpoint/"/>
            </wsdl:port>
            <wsdl:port name="WebServiceHttpSoap12Endpoint" binding="ns:WebServiceSoap12Binding">
                <soap12:address location="http://localhost:8080/CRMWS/services/WebService.WebServiceHttpSoap12Endpoint/"/>
            </wsdl:port>
            <wsdl:port name="WebServiceHttpEndpoint" binding="ns:WebServiceHttpBinding">
                <http:address location="http://localhost:8080/CRMWS/services/WebService.WebServiceHttpEndpoint/"/>
            </wsdl:port>
        </wsdl:service>
    </wsdl:definitions>
    Dovrei cambiare quei location="http://localhost:8080/CRMWS/services/WebService.WebServiceHttpEndpoint/" e simili?
    Grazie ancora

  6. #6
    Mi aspettavo che in qualche modo me lo facessi avere tutto, così non mi è utile. L'idea era di generare il client su eclipse e dirti quale classe utilizzare per istanziarlo con un endpoint parametrico. Dato che non mi hai fatto avere l'intero wsdl ovviamente non lo posso fare. Facciamo così, fai su eclipse e procedi così:

    File --> new --> other --> webservices ->web service client

    e indica il percorso del wdsl. Una volta generato il client elenca le classi che ottieni (sperando che non siano molte) ed io ti indicherò quella che più probabilmente potrai utilizzare per istanziare con un endpoin parametrico il tuo client.E' un po macchinoso , ma non mi viene in mente altro modo al buio così. Oppure posta tutto il wsdl, se non è gigantesco.
    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
    Le classi che ottengo sono WebServiceStub.java e WebServiceCallbackHandler.java
    Il wsdl te lo posso dare tutto se vuoi ma devi darmi la tua mail per PM perchè p gigantesco e qui non posso postarlo... supera il limite di caratteri permessi... sono circa 370000 caratteri.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41

    [RISOLTO]

    Bene, il problema l'ho risolto così:
    Ho creato un file di configurazione chiamato server_address.conf e al suo interno ho scritto

    server_address="indirizzo del server"

    Poi questo file lo apro dentro il mio main e lo leggo tramite la classe Properties prima di creare il web service stub.
    Dentro WebServiceStub ho creato un attributo serverAddress statico a cui assegno il valore letto dal file di configurazione.
    Naturalmente questo file andrà messo al di fuori del jar altrimenti non è più un file di configurazione...

    Grazie per gli spunti!

  9. #9

    Re: [RISOLTO]

    Originariamente inviato da rama1987
    Bene, il problema l'ho risolto così:
    Ho creato un file di configurazione chiamato server_address.conf e al suo interno ho scritto

    server_address="indirizzo del server"

    Poi questo file lo apro dentro il mio main e lo leggo tramite la classe Properties prima di creare il web service stub.
    Dentro WebServiceStub ho creato un attributo serverAddress statico a cui assegno il valore letto dal file di configurazione.
    Naturalmente questo file andrà messo al di fuori del jar altrimenti non è più un file di configurazione...

    Grazie per gli spunti!
    In realtà in teroria non dovrebbe essere necessario. Purtroppo io non riesco a generare il client nemmeno con il tuo wsdl, per qualche motivo che ancora non è chiaro lo stub viene generato con errori di compilazione, quindi per ora non ti posso dire come fare le cose diversamente. In ogni modo per ora hai trovato una soluzione che non è malvagia e puoi andare avanti.
    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.)

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    41
    Lo so, anche a me sono venute altre soluzioni che però avrebbero richieste modifiche sparse per tutto il codice (cosa che non vorrei fare invece).

    Ad ogni modo, forse la soluzione migliore da adottare se si è nella fase iniziale dell'implementazione o ancora meglio della progettazione è utilizzare il costruttore di default:

    TuoStub(ConfigurationContext tuoContext, String targetEndpoint, booelan useSeparateQualcosa).

    Poichè come ho detto io ho terminato lo sviluppo, ormai non posso farlo a meno appunto di rimettere mano a tutto il codice perchè da vero niubbo quando ho iniziato il lavoro non mi sono andato a guardare bene la documentazione.

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.