Your SlideShare is downloading. ×
0
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
JAX WS 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

JAX WS 2

1,295

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,295
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
26
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa JAX-WS2: Web Services made easy di Mario Cartia mario.cartia@codebase.it
  • 2. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa La diffusione delle architetture SOA ha portato alla ribalta negli ultimi anni il ruolo dei Web Services nell'ambito dello sviluppo software La specifica JSR 101 (JAX-RPC 1.1) ha consentito agli sviluppatori Java di utilizzare WS fino alla definizione della specifica JSR 244 (Java API for XML-Based Web Services) seppure con alcune limitazioni...
  • 3. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa
  • 4. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa Layers sottostanti (binding e parsing) legati ad implementazioni proprietarie Interoperabilità Performances Modello di sviluppo
  • 5. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa L'utilizzo delle annotations consente di creare un WS a partire da una classe POJO @WebService public class Calculator { public int add(int a, int b) { return a+b; } ● Tutti i metodi pubblici sono esposti come operazioni web service ● Un WSDL con valori di default è generato in automatico
  • 6. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa ...o da un EJB @WebService @Stateless public class Calculator { @Resource WebServiceContext context; public int add(int a, int b) { return a+b; } ● L'EJB “conserva” tutte le sue features (transazioni, sicurezza, interceptors, ...
  • 7. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa Agendo sulle annotations è possibile rendere più leggibile il WSDL autogenerato @WebService(name=”CreditRatingService”, targetNamespace=”http://example.org”) public class CreditRating { @WebMethod(operationName=”getCreditScore”) public Score getCredit( @WebParam(name=”customer”) Customer c) { // ... implementazione ... } }
  • 8. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa Creazione del client Java SE Il tool “wsimport” a partire dal WSDL crea le classi di supporto Per invocare una operazione WS è necessario istanziare la classe service ed ottenere il proxy mediante chiamata al metodo get<ServiceName>Port CalculatorService svc = new CalculatorService(); C a l c u l a t o r p r o x y = s v c. g e t C a l c u l a t o r Po r t ( ) ; i n t a n s w e r = p r o x y. a d d ( 3 5 , 7 ) ;
  • 9. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa Creazione del client Java EE Il tool “wsimport” a partire dal WSDL crea le classi di supporto Con il meccanismo della dependancy injection, mediante annotation @WebServiceReference ottengo la reference (N.B. non è necessario utilizzare JNDI)
  • 10. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa Esempio @Stateless public class MyBean { // Resource injection @ We b S e r v i c e R e f ( C a l c u l a t o r S e r v i c e. c l a s s ) Calculator proxy; public int mymethod() { r e t u r n p r o x y. a d d ( 3 5 , 7 ) ; }
  • 11. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa Annotations utilizzate in JAX-WS ● JSR 181: Web Services Metadata for the Java Platform ● JSR 222: Java Architecture for XML Binding (JAXB) ● JSR 224: Java API for XML Web Services (JAX-WS) ● JSR 250: Common Annotations for the Java Platform
  • 12. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa @WebService Si applica ad una classe o ad una interfaccia (implementazione o interfaccia). Attributi ● endpointInterface ● name ● portName ● serviceName ● targetNamespace ● wsdlLocation
  • 13. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa @WebMethod Personalizza un metodo esposto come operazione WS N.B. Non è necessario che il metodo dichiari di lanciare una java.rmi.RemoteException. Attributi ● action ● exclude ● operationName
  • 14. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa @WebParam Personalizza la mappatura di un parametro di input ad una parte del messaggio WS ed ad un elemento XML Attributi ● header ● mode ● name ● partName ● targetNamespace
  • 15. Meeting JUG Sicilia / ASI 21 Maggio 2008 - Ragusa @WebResult Come il precedente ma si applica ai valori di ritorno Attributi ● header ● name ● partName ● targetNamespace
  • 16. Meeting JUG Sicilia / ASI 21 Maggio 2008 – Ragusa Utilizzando Java SE 6 è possibile pubblicare un web service senza l'ausilio di un web server javax.xml.ws.Endpoint.publish(url, object);
  • 17. Meeting JUG Sicilia / ASI 21 Maggio 2008 – Ragusa Grazie per l'attenzione! Mario Cartia mario.cartia@codebase.it

×