Follow Us on Twitter

Ontwikkeling van webservices met JDeveloper 10g

November 2004 –  Oracle biedt met zijn ontwikkelomgeving JDeveloper 10g inmiddels uitgebreide ondersteuning voor het ontwikkelen van webservices. Dit Whitebook bespreekt de alternatieven en gaat in op de verschillen. Lees ons Whitebook “Webservices: Wat is het (niet)?” voor een eerste introductie over webservices.

Oracle's SOAP implementatie

De ondersteuning van webservices in JDeveloper 10g is gebaseerd op het Apache SOAP framework. Het Apache SOAP framework is een open-source implementatie van de “SOAP 1.1” en “SOAP messages with attachments” specificaties in Java. Met het Apache SOAP framework is het mogelijk zowel rpc/encoded als document/literal webservices te bouwen. Dit framework ondersteunt alleen HTTP als transport laag.

De mogelijkheden van JDeveloper 10g voor het bouwen van webservices

JDeveloper 10g bevat meerdere alternatieven voor het bouwen van webservices. Natuurlijk biedt JDeveloper 10g de mogelijkheid om webservices handmatig te schrijven. Daarin onderscheid het zich niet van alternatieve Java ontwikkelomgevingen. Dit Whitebook gaat in op de beschikbare wizards waarmee webservices kunnen worden gegenereerd op basis van bestaande Java of PL/SQL code. Daarnaast worden de mogelijkheden van JDeveloper 10g besproken die de productiviteit verhogen van de ontwikkelaar bij het bouwen van webservices en webservice consumerende applicaties.

Java webservice

Webservices worden veelal gebruikt om bestaande bedrijfslogica beschikbaar te stellen voor andere toepassingen, zoals bijv. een website. JDeveloper 10g heeft heeft onder andere een eenvoudige wizard waarmee om een webservice te maken van een java classe. Klik hiervoor met de rechter muistoets op een bestaande java klasse en kies voor “Create J2EE web service” in het context menu. In de wizard kunnen de methoden van de java klasse worden geselecteerd om als operations op de webservice te worden gepubliceerd. Na de wizard te hebben doorlopen heeft men een standaard rpc/encoded web service op basis van de geselecteerde Java klasse zonder handmatig programmeerwerk.

PL/SQL webservice

Ook op basis van bestaande PL/SQL objecten kunnen met JDeveloper 10g webservices worden gegenereerd. Dit kan nuttig zijn voor ondernemingen die al veel hebben geïnvesteerd in PL/SQL. De PL/SQL code blijft intact zonder enige aanpassing. Het genereren gebeurt op een vergelijkbare manier als met webservices op basis van een Java klasse. Onder de connections tab in JDeveloper 10g selecteert men een PL/SQL package, procedure of function. Onder het context menu (rechter muisknop) staat weer de optie “Create J2EE webservice” die de webservice wizard start. Het genereren van webservices op basis van PL/SQL bestaat uit twee stappen. Eerst wordt met de utility JPublisher de PL/SQL code verpakt in een Java klasse. De Java klasse wordt vervolgens gepubliceerd als webservice. De utility JPublisher is overigens ook in andere situaties handig voor het in Java beschikbaar maken van PL/SQL code. Meer informatie over JPublisher leest u Oracle Magazine van januari/februari 2004.

JMS webservice

Ten slotte bestaat er een wizard om een JMS web service te maken. Dit is een document style webservice met messaging als transport laag. In plaats van de SOAP berichten te versturen over HTTP, worden de berichten verstuurd met OJMS of OC4J/JMS. OJMS en OC4J/JMS zijn twee implementaties van Java Messaging. OC4J/JMS is een lichtgewicht “in-memory” messaging implementatie. OJMS is een Java messaging implementatie op basis van Advanced Queueing van Oracle. Met een JMS webservice heb je alle voordelen van messaging: asynchroniciteit, once and only once delivery en –in het geval van OJMS- persistentie van berichten.

Webservice diagram

Al deze webservices zijn ook te genereren vanuit een webservice diagram. Een webservice diagram ziet er uit als een UML klasse diagram. Je kunt de webservices genereren door de verschillende webservices zoals Java, PL/SQL en JMS vanuit het "component palette" in het webservice diagram te slepen. Hierdoor opent zich een wizard zoals in de hierboven beschreven paragrafen. De benodigde gegevens worden via de wizard ingevuld. Hierna kunnen op dezelfde manier als in een UML klasse diagram methoden worden toegevoegd aan een klasse, webservice operations worden toegevoegd aan een webservice.

Deze manier van webservices bouwen wijkt niet fundamenteel af van de hiervoor beschreven manieren voor het genereren van webservices. Het resultaat is echter dat de webservices ook in een diagram staan. Een dergelijk diagram kan een handig hulpmiddel zijn bij overleg met collega's en opdrachtgevers.

Webservices en ADF

De vorige sectie beschreef hoe je webservices kunt aanmaken. De makkelijkste manier om webservices te consumeren is met Oracle ADF. Oracle onderkent het belang van webservices en beschouwd een webservice als een "business service", net zoals de traditionele toegang tot de business laag met Java klassen of met Java beans.

Webservices kunnen net als ADF applicatie modules, EJB Session Beans en Java Classes worden geabstraheerd tot een datacontrol. Een ADF datacontrol kan in het ADF framework worden gebruikt om business services te koppelen aan de gebruikersinterface. JDeveloper 10g biedt hier goede ondersteuning voor. Het resultaat van een webservice datacontrol kan worden getoond door een datacontrol vanuit het datacontrol palette op een JSP pagina te slepen in de Struts Page Flow Diagram”. Hierbij kan worden aangegeven of het resultaat moet worden weergegeven in bijvoorbeeld een read-only table of input form. Op deze manier kan heel makkelijk, en zonder een letter code te schrijven, het resultaat van een web service worden getoond op een web pagina of Swing GUI. Op een soortgelijke manier is het ook eenvoudig een webservice aan te roepen vanuit een ADF Data Action (een Struts Action voor ADF).

Conclusie

Met JDeveloper 10g zijn makkelijk webservices te genereren. Het consumeren van webservices gaat ook erg makkelijk met Oracle ADF. Zoals altijd geldt ook hier de 80/20 regel. In 80% van de gevallen kunt u volstaan met wizards. De overige 20% zal echter "met de hand" gebouwd moeten worden. Dat kan prima met JDeveloper, het zal echter meer tijd kosten.

Relevante Links

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.