Nogle gange anvendes SOA som synonym for web services.
Den serviceorienterede arkitektur behøver dog ikke kun at have noget med web at gøre.
Oftest anvendes HTTP-protokollen som kommunikations-protokol, men der er andre muligheder. Eksempelvis kan man anvende købaserede systemer som MQseries som transportlag.
Den nyeste version af Java Platform, Enterprise Edition, Java EE 5, giver bedre muligheder for at anvende den slags muligheder.
Samlet betegnelse
Java EE 5 er en samlet betegnelse for en lang række forskellige Java-teknologier, som anvendes til at udvikle store, komplekse it-systemer.
Før Java EE 5 blev betegnelsen J2EE anvendt.
I Java EE 5 bliver web services håndteret af JAX-WS (Java API for XML Web Services) version 2. JAX-WS er blandt andet opdateret, så den afspejler de seneste web service-standarder, SOAP 1.2 og WSDL (Web Services Definition Language) 2.0.
Tidligere blev den kaldt JAX-RPC (Java for XML-based Remote Procedure Call), men teknologien blev omdøbt netop for at afspejle, at web service-kommunikation ikke kun er et spørgsmål om RPC-lignende kald, hvor en forespørgsel afføder et svar tilbage med det samme, en såkaldt synkron kommunikation.
JAX-WS gør det muligt at anvende asynkron kommunikation, hvor man kan sende en forespørgsel via et kø-system, og først senere få et svar tilbage. Det kaldende program kan altså slippe for at stå og vente på et svar.
Via messaging-køer
– Det interessante ved JAX-WS er, at før understøttede den kun SOAP over HTTP. Med JAX-WS version 2.0 bliver det muligt at anvende Java Messaging Services (JMS), så man kan sende SOAP-beskeder via messaging-køer som eksempelvis MQSeries. Det giver en løsere kobling mellem afsender og modtager af SOAP-beskeder. En service kan lægge en besked på kø, som en anden service kan læse senere og eventuelt sende en bekræftelse eller et svar tilbage, forklarer Jacob Bendsen, medejer af konsulent- og kursusvirksomheden Lund & Bendsen, der har specialiseret sig i Java-teknologi.
De to stiftere af Lund & Bendsen er lektorer på IT-Universitetet og har fem fastansatte samt et antal freelancere tilknyttet virksomheden.
Ifølge Jacob Bendsen går web services mere og mere i retning af den asynkrone kommunikationsform frem for den synkrone kommunikation, hvor der sendes en forespørgsel og leveres et svar tilbage med det samme.
JAX-WS er sammen med en anden Java EE 5-teknologi, JAX-B (Java XML Binding), vigtige ingredienser for en Enterprise Service Bus (ESB).
– JAX-B gør mapningen mellem XML og Java nemmere. Den gamle JAX-RPC havde sin egen mapning, hvor det var besværligt at konvertere et kompliceret XML-dokument til Java-objekter. JAX-B gør det nemmere. JAX-WS og JAX-B er grundstenen til ESB, siger Jacob Bendsen.
Java EE 5 ser altså ud til at realisere noget af visionen om den serviceorienterede arkitektur som arkitekturen, der gør det muligt at lade services på forskellige platforme tale nemt og ubesværet sammen.
Kan udveksle uden problemer
Ifølge SOA-visionen vil services på Java-platformen således uden problemer kunne udveksle information med services på Microsofts .Net-platform.
I virkelighedens verden kan der dog opstå problemer.
Årsagen er, at der er mange nye web service-standarder, som endnu ikke er implementeret på de forskellige platforme.
– Virkeligheden er ikke, at alle programmer let og enkelt kan tale sammen. De forskellige leverandører implementerer en teknologi i deres produkt og forsøger derefter at gøre det til en standard. Derfor kan en leverandør have implementeret nogle WS*-standarder, som endnu ikke anvendes af andre leverandører. Samtidig er der også plads til fortolkning af standarder, så der kan være mindre uoverensstemmelser mellem leverandørernes fortolkninger, siger Jacob Bendsen.
Ganske nyligt lavede Jacob Bendsen konsulentarbejde for Sundhedsstyrelsen, hvor han stødte ind i et problem med at få en Java-klient til at anvende en Microsoft-baseret web service.
– Sundhedsstyrelsens web service anvendte WS-Routing. Microsoft har defineret WS-Routing og har som en af de få leverandører implementeret den. Det er en yderst relevant standard, der giver mulighed for, at man på forhånd kan bestemme en beskeds rute gennem netværket. Men det gav problemer, da Java-klienten, som skulle tale med Microsoft-servicen, ikke understøttede WS-Routing, forklarer Jacob Bendsen.
Jacob Bendsen blev nødt til at lave noget kode, der kunne håndtere SOAP-beskeder med Routing-info for at løse problemet.