Login
Cerca all'interno di JavaPortal
Help
Home Page Documentazione Forum Progetti Partner Pubblica!
> WebSphere System Integration Bus (SIB) e i Web Services
Hide
Obiettivi di JIP
Collabora con JIP
Offerte di lavoro
it.comp.java
Howto per le certificazioni Sun

Hai una tesi in Java?
Tesine preparate
per esami?
Pubblica tutto su
JavaPortal!

Scrivi al nostro staff


I corsi elearning per la certificazione Sun gratuiti


Henry Ford
Vero progresso quando i vantaggi di una nuova tecnologia diventano per tutti


Documentazione, debugging e test unitari con BlueJ


Rss Feed
Home Page
Articoli
News
Forum
Classi

  Visualizza Commenti (0) Aggiungi Commento    
 
Vota l'articolo
WebSphere System Integration Bus (SIB) e i Web Services
By Gabriele A. Rigamonti
6 febbraio 2008

  WebSphere System Integration Bus (SIB) e i Web Services
Program La configurazione dell’ Application Server
Program Outbound Service
Program Inbound
Program La configurazione dell’ Ambiente
Program Il test del servizio web
Program Conclusioni e Riferimenti

Nello scorso articolo ci siamo occupati del System Integration Bus Integration Bus di IBM WebSphere.

Lo scopo di questo articolo e' di analizzare da vicino un 'altro aspetto di WebSphere Application Server, ovvero come dotare il  System Integration Bus (SIB) della possibilità di interagire con i web services, ottenendo  fondamentalmente due vantaggi: in primo luogo disaccopiare l'endpoint del servizio web , ovvero fare in modo che  il bus si comporti come un proxy SOAP e non di meno sfruttare le potenzialità di mediazione e routing del bus.

Nell’esempio che utilizzeremo lavoreremo su  la versione 6.1 dell' application server (in questo articolo è stata utilizzata la versione Linux)  scaricabile in versione trial.



La configurazione dell’ Application Server top
Il primo passo è l'installazione, mediante uno scritp di sistema, dell’ applicazione per la gestione dello SDO (System Data Object ) repository all’ interno del quale vengono memorizzate le definizioni dei WSDL che definiscono i vari servizi.

./wsadmin.sh -f /opt/IBM/WebSphere/AppServer/bin/installSdoRepository.jacl <nodo> <server> -createDb


/opt/IBM/WebSphere/Appserver rappresenta la directory home nella quale è installato l'application server e che quindi può cambiare in funzione del sistema operativo e della scelta effettuata durante l'installazione.

Se l'installazione è avvenuta correttamente dalla console di gestione vedremo avviata un' applicazione dal nome : SDO Repository.

Per dotare il bus della capacità di interagire con i web services è necessario configurarlo mediante un resource adapter tramite il seguente script:

./wsadmin.sh -f /opt/IBM/WebSphere/AppServer/util/sibwsInstall.jacl INSTALL_RA -installRoot "/opt/IBM/WebSphere/AppServer" -nodeName <nodo>

Quello che ci rimane da fare ora è l'installazione degli endpoint listeners che permettono al bus di 'ascoltare' le richieste in arrivo dai web services.

Esistono diversi endpoint listeners a seconda del protocollo di trasporto che viene utilizzato. Nel nostro caso installeremo solamente l'endpoint per il trasporto HTTP.

./wsadmin.sh -f /opt/IBM/WebSphere/AppServer/util/sibwsInstall.jacl INSTALL_HTTP -installRoot "/opt/IBM/WebSphere/AppServer" -serverName <server> -nodeName <nodo>

(Nota: sostituire <nodo> e <server> con i valori della propria configurazione)



Outbound Service top
Un servizio tipo Outbound rappresenta nel bus un servizio esterno richiamabile mediante protocollo SOAP.
I protocolli supportati dal bus per quanto riguarda i servizi di tipo Outbound sono:

  • SOAP/JMS
  • SOAP/HTTP
  • RMO/IIOP su un EJB

In passi:

  • Il messaggio SOAP viene indirizzato alla Service Destination
  • la service Destination ruota il messaggio verso la porta
  • la porta consegna il messaggio SOAP al 'bus invoker'
  • l' invoker della porta trasmette il messaggio SOAP verso il web service endpoint specificato all'interno del WSDL





Figura 1 : Outbound service




Inbound top
Il servizio di tipo Inbound  permette al bus di accettare un messaggio SOAP ed analogamente al Outbound e' possibile definire dei listeners per specifici protocolli (nel nostro caso utilizzeremo  HTTP)

In passi:
  • Il client invia un messaggio SOAP nell' endpoint listener
  • il listener utilizza le informazioni all'interno dell' InboundPort e dell' InboundService per recuperare la ServiceDestination alla quale inviare il messaggio
  • se il WSDL definisce un messaggio a 2 vie (anche ritorno)  in questo caso viene creata una  coda di risposta alla quale l'endpoint listener si mette in   ascolto
  • l'endpoint listener attende il messaggio di ritorno e lo inoltra al client





Figura 2 : Inbound service

La configurazione dell’ Ambiente top

Per brevità non sono riportati tutti i passi da seguire  ma solamente quelli ritenuti più significativi.

Per ogni componente che di seguito creeremo dovremmo proseguire fino a che non apparirà nella finestra di lavoro con l'indicazione che ci avverte che è necessario salvare il lavoro eseguito fino a quel punto.

La console di gestione dell’ Application Server è raggiungibile mediante un URL del tipo:

                http:://host:porta/admin     (generalmente porta=9060)

Iniziamo con la creazione di una nuova istanza del bus di integrazione.

Service Integrations  > Buses > New

(1)


 
Una volta creato il bus dobbiamo associargli il message engine:

Service Integrations  > Buses > WasBus > Bus Members > Add
(2)



Ora ci apprestiamo a creare e configurare l'applicazione di sistema che ci fornirà l'endpoint listener associato al nostro bus di integrazione.
   
Application Servers > server1 > Endpoint Listeners  > New

(3)


 

(4)


 

Nota: durante la creazione dell’ endpoint listener dobbiamo esclusivamente utilizzare:
SOAPHTTPChannel1 e wsgwsoaphttp1.

Creiamo all'interno del bus la destinazione alla quale arriveranno le richieste SOAP provenienti dal web service.

Service Integrations  > Buses > WasBus > Destinations > New


(5)


 
Inseriamo il nome della destinazione.

(6)


 

Prima di procedere con la definizione dei servizi Inbound e Outbound è necessario eseguire il download e il deploy del servizio web (ReverseStringEAR.ear) che utilizzeremo come test e del client per la sua verifica (ReverseStringClientEAR.ear).
Ricordiamoci, dopo aver eseguito la pubblicazione di attivare da console le applicazioni. Se tutto è andato correttamente, invocando:

http://localhost:9085/ReverseString/services/ReverseString/wsdl/ReverseString.wsdl

dovremo vedere come risposta il codice WSDL che definisce il servizio web.
   
(Nota: la porta potrebbe cambiare a seconda della configurazione del server)

Se da console visualizziamo le applicazioni presenti avremo una situazione analoga alla seguente:

(7)



Il prossimo passo consiste nella creazione del servizio di Outbound.

Service Integrations > Buses > Outbound Services > New

(Nota: come location del WSDL inseriamo la URL  indicata sopra)

(8)
 


Ridenominiamo Outbound service name , Service destination name e Port destination name con i seguenti valori:

  • ReverseStringOutboundService
  • ReverseStringOutboundDestination
  • ReverseStringOutboundPort

(9)



Ecco il risultato, dopo aver salvato il servizio creato.

(10)


 
   
Adesso occupiamoci all'aspetto dell' ascolto, ovvero il servizio di Inbound.
   
Service Integrations  > Buses > Inbound Services > New

(11)


 

Specifichiamo il nome del servizio.

(12)


 

Al termine del wizard vedremo il servizio Inbound creato.

(13)


 

Per la definizione del servizio Inbound abbiamo specificato il nome della destinazione: ReverseStringDestination  alla quale arriverà il messaggio SOAP relativo alla richiesta del client, e come si vede dalla figura 3,  mediante un routing statico la destinazione viene rediretta (senza effettuare nessuna mediazione) verso la  ReverseStringOutboundDestination che invocherà automaticamente l'endpoint del servizio web.

 


Figura 3 : Diagramma semplificato nel caso di destinazione intermedia.


Avremmo potuto optare anche per un' altra soluzione, ovvero utilizzare, direttamente per l' Inbound la destinazione ReverseStringOutboundDestination (la destinazione definita per l’Outbound) come si vede nella figura 4. Anche se la seconda     soluzione risulta più intuitiva è consigliabile utilizzare una destinazione 'intermedia', come nel primo caso, poichè questo approccio permette di avere un maggior livello di     separazione dei compiti.

 
 
Figura  4 :   Diagramma semplificato nel caso di singola destinazione.

   

Eseguiamo il routing descritto precedentemente.

Service Integrations  > Buses > Destinations > StringReverseDestination


inseriamo : WasBus:ReverseStringOutboundDestination ,ovvero ridirigi l’input , in questo caso il messaggio SOAP proveniente dal client,  verso la destinazione ReverseStringOutboundDestination all’interno del bus WasBus.

(14)


 

Dopo aver eseguito tutti i passi sopra riportati andiamo a controllare tutte le destinazioni presenti nel bus:

Service Integrations  > Buses > Destinations

(15)




Il test del servizio web top

Prepariamoci ora a generare, mediante il wizard, il codice WSDL riferito all’ InboundService precedentemente creato.

Service Integrations  > Buses > Inbound Services > ReverseStringInboundService

(16)


 
Salviamo il contenuto del file ZIP.

(17)


 

All’interno del file ZIP sono presenti I seguenti files:

  • WasBusReverseStringInboundServiceBindings.wsdl
  • WasBusReverseStringInboundServiceNonBound.wsdl
  • WasBusReverseStringInboundServiceBindings.wsdl
  • WasBusReverseStringInboundService.wsdl


Apriamo il WasBusReverseStringInboundService.wsdl :

(18)



Selezioniamo e copiamo la URL dell’endpoint (definita nel tag <soap:address> ) ovvero:

http://localhost:9085/wsgwsoaphttp1/soaphttpengine/WasBus/ReverseStringInboundService/localhostNode05_server1_SOAPHTTPChannel1_InboundPort  (**)

   
Nota: Sostituiamo %2F con /

Eseguiamo il test utilizzando l’applicazione client, invocandola tramite la seguente URL:

            http://localhost:9085/ReverseStringClient/sampleReverseStringProxy/TestClient.jsp

Impostiamo l’endpoint del servizio andando sul link: setEndpoint(java.Lang.String)  e copiamo la URL (**) infine rendiamo tutto effettivo premendo il bottone ‘invoke’.

A questo punto non ci resta altro che invocare il servizio web vero e proprio mediante il link: reverse(java.Lang.String) ed ecco il risultato:

(19)



Come controprova  togliamo dalla destinazione ReverseStringDestination la riga WasBus:ReverseStringOutboundDestination e invochiamo nuovamente il client, in questo caso non vedremo nessun risultato in quanto il messaggio SOAP del client  rimane appeso alla destinazione associata al servizio in ingresso.



Conclusioni e Riferimenti top
In questo articolo abbiamo visto come utilizzare i web services all’interno del bus di integrazione di WebSphere Application Server e questo aspetto unito e alle capacità di routing e  mediazione  permette per la creazione di un efficiente strato ESB.

Risorse e Bibliografia

Articolo :SIB: IBM WebSphere System Integration Bus [Rigamonti Gabriele, www.javaportal.it , settembre 2007]

WebSphere application Server Trial Version 6.1

developerWorks : IBM's resource for developers

Building an enterprise Service Bus with Websphere Application Server


 Attachments List
Generic DocumentReverseStringClientEAR.ear
Generic DocumentReverseStringEAR.ear
Username:
Password:
To sign up for an account, click register... Register
Hide





Powered By



Campagna Anti-IF


Skin


PARTNER
Zio Budda
HostingJava


LICENZA



Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati sotto licenza Creative Commons

Sitemap  © 2002-2004 Copyright Information. Privacy . Today is domenica 1 agosto 2010