18
® IBM Software Group © 2006 IBM Corporation EGL / SOA – Consuming 3 rd Party Web Services This Learning Module shows how to utilize the RBD tooling and EGL language to consume 3 rd Party WSDL files and Web services – part of a Service Oriented Architecture

EGL / SOA – Consuming 3 rd Party Web Services

Embed Size (px)

DESCRIPTION

EGL / SOA – Consuming 3 rd Party Web Services. This Learning Module shows how to utilize the RBD tooling and EGL language to consume 3 rd Party WSDL files and Web services – part of a Service Oriented Architecture. Consuming a 3 rd Party Web Service. - PowerPoint PPT Presentation

Citation preview

Page 1: EGL / SOA – Consuming 3 rd  Party Web Services

®

IBM Software Group

© 2006 IBM Corporation

EGL / SOA – Consuming 3rd Party Web Services

This Learning Module shows how to utilize the RBD tooling and EGL language to consume 3rd Party WSDL files and Web services – part of a Service Oriented Architecture

Page 2: EGL / SOA – Consuming 3 rd  Party Web Services

2

Consuming a 3rd Party Web Service EGL/RBD also allows you to call external (3rd Party-Provided) Web Services. If time remains in your lab, try the following short workshop to see for yourself!

Here are the steps you follow (from 10,000 feet):

Using a 3Using a 3rdrd Party WSDL Steps: Party WSDL Steps:

1. Identify/Locate the WSDL file from which the interface will be created

2. Download this WSDL to your project

3. Create an EGL Client Interface

4. Create a calling (client) JSFHandler page

It’s really that easy! But a note of caution first:It’s really that easy! But a note of caution first:

This next lab requires that you be running a live connection to the internet – free and clear of any corporate fire-walls, or it most likely will not execute. (See ***Notes)(See ***Notes) Not withstanding, if you will be using 3rd Party services it’s probably worth understanding the work-flow steps to implement with EGL.

The web service used in the lab is a true 3rd Party service. As such it may not be running when you test it – as this is not under our control.

Page 3: EGL / SOA – Consuming 3 rd  Party Web Services

3

Consuming a 3rd Party Web Service – Find the Service

1. Identify the WSDL file from which the interface will be created – and download this WSDL to your project

From the Xmethods.net site

Click: View the FULL LIST

Page 4: EGL / SOA – Consuming 3 rd  Party Web Services

4

Consuming a 3rd Party Web Service – Select the WSDL

From the Xmethods site full list, then scroll (or Ctrl/FCtrl/F find) the Ignyte Retrieve Theaters and Movie Showtimes service

Click the link for the Web Service you wish to copy from the Xmethods site:

Page 5: EGL / SOA – Consuming 3 rd  Party Web Services

5

Consuming a 3rd Party Web Service – Save the WSDL

Save the WSDL to your project’s \WebContent\WEB-INF\wsdl\ folder as: moviefunctions.moviefunctions.wsdlwsdl (note you will need to rename the extension in the project and probably Refresh (F5) the project directory you save into)

Page 6: EGL / SOA – Consuming 3 rd  Party Web Services

6

Consuming a 3rd Party Web Service – Create the EGL Interface

Right click over moviefunctions.wsdl – select:

- EGL Services > Create EGL Client Interface…EGL Services > Create EGL Client Interface…

- Click NextNext > two times

From New EGL Web Client Binding - Click Finish

Page 7: EGL / SOA – Consuming 3 rd  Party Web Services

7

Consuming a 3rd Party Web Service – The EGL Interface This will create an EGL Interface to the 3rd Party Web Service – that you can now reference in (call from) client business logic.

But first we need to generate all the new Java Classes for all these new project resources

(From Project Explorer) Generate your project – note that you will receive Java Generation errors, which will clean themselves up when you Generate your project – note that you will receive Java Generation errors, which will clean themselves up when you create the page (next part of lab)create the page (next part of lab)

Page 8: EGL / SOA – Consuming 3 rd  Party Web Services

8

Consuming a 3rd Party Web Service – Create a New Web Page

(From the \WebContent\ folder) Create a new Web Page named: moviePage.jspmoviePage.jsp

Change the defaultHeader text…

Page 9: EGL / SOA – Consuming 3 rd  Party Web Services

9

Consuming a 3rd Party Web Service – Edit the JSFHandler Code Edit the Page Code,

(moviePage.eglmoviePage.egl) and using Content Assist create the following JSFHandler logic

Note – please either use Content Content AssistAssist to create this logic, or copy/paste the completed code from the Notes section of this slide.

Press Ctrl/SPress Ctrl/S – and clean up any typos or syntax errors

Page 10: EGL / SOA – Consuming 3 rd  Party Web Services

10

Consuming a 3rd Party Web Service – Edit the JSFHandler CodeFrom Page Designer

Press Ctrl/SPress Ctrl/S – to refresh/synchronize the tools

From Page Data Hold down the Ctrl key, and select:

radius – intradius – int

zipCode – stringzipCode – string

findMovies()findMovies() Drag and drop them onto the page

Make the fields Input fields Updating an existing record

Delete any extraneous Submit Buttons created

Page 11: EGL / SOA – Consuming 3 rd  Party Web Services

11

Consuming a 3rd Party Web Service – Edit the JSFHandler CodeFrom Page Data Select:

theaters – Theater[]theaters – Theater[] Drag and drop the array onto the page Make all columns read-only Displaying an existing record

Click the ellipsis next to Multi-Column Data

Make the nested columns read-only Displaying an existing record

Click Finish twice

OPTIONAL With the table selected, feel free to change display properties:

Outer table: Border: 1

Inner table: From Display options: delete columnClass1

Page 12: EGL / SOA – Consuming 3 rd  Party Web Services

12

Consuming a 3rd Party Web Service – Edit the JSFHandler Code Run the pageRun the page

Enter a valid U.S. Postal Code (ZipCode: 90210, 54903, etc), and enter an integer number (Radius) which represents how far - in miles, you would be willing to travel to go to the movies.

Note that you must have a live, free and clear Note that you must have a live, free and clear internet connection internet connection (sans Firewall) for this for this page to work.page to work.

Page 13: EGL / SOA – Consuming 3 rd  Party Web Services

13

What if you wanted to allow users to click on a cinema address, and have that bring up a GOOGLEMAP of that address? Here are the steps (note that you may need help from your instructor on this).

Copy/paste the code in this slide’s Notes, as a new function:

Ctrl/SCtrl/S – save your code

From Page DesignerFrom Page Designer From the Palette/Enhanced Faces Components – find: Link – Command From the Palette/Enhanced Faces Components – find: Link – Command

If it’s not on the Palette you will have to Customize the Palette in order to show this option. Please ask your instructor for assistance on this – or, from the EGL-

JSF.PPT, read the slides starting with the slide titled: Customizing the Palette Assuming you have the Link-Command in your PaletteAssuming you have the Link-Command in your Palette

Select the Select the AddressAddress field in the dataTable field in the dataTable Double-Click the Link CommandDouble-Click the Link Command From From PropertiesProperties click the click the All AttributesAll Attributes icon icon From From actionaction, click the , click the BrowseBrowse icon and select: icon and select: getAddressMapFunc()getAddressMapFunc()

OPTIONAL – Call Google Maps using the Cinema’s Address – 1 of 2

All Attributes

Page 14: EGL / SOA – Consuming 3 rd  Party Web Services

14

Run the page. Find movies and click an Address

..

OPTIONAL – Call Google Maps using the Cinema’s Address – 2 of 2

Page 15: EGL / SOA – Consuming 3 rd  Party Web Services

15

package services;import interfaces.calculatorInterface;service calculatorService implements calculatorInterface

function addIntegers (intOne int in, intTwo int in) returns (int) return (intOne + intTwo);end

function subtractIntegers (intOne int in, intTwo int in) returns (int) return (intOne - intTwo);endend

package interfaces;interface calculatorInterface

function addIntegers (intOne int in, intTwo int in) returns (int);

function subtractIntegers (intOne int in, intTwo int in) returns (int);end

Optional TopicOptional Topic – EGL Interfaces, the Stuff of 3rd Party Web Service Implementation

EGL Interfaces are what is generated by the RBD tooling – out of 3 rd Party WSDL functions.

• Interfaces provide a concise summary of a service, explaining what the service can do without providing all of the details of implementing the service.

• Interfaces can also serve as requirements for development or compliance – by creating them before doing services (EGL or otherwise)

Example of an EGL InterfaceExample of an EGL Interface

Example of an EGL Services implementing an InterfaceExample of an EGL Services implementing an Interface

This is the code to be GENERATED, TESTED

Page 16: EGL / SOA – Consuming 3 rd  Party Web Services

16

EGL Interfaces - RBD Can Create Interfaces From Existing Services and 3rd Party Web Services

package services;service HelloService

msgstring = " + got to service1.myServiceFunction!";

function SayHello (name string in, city string in) returns (string) returnString string;

returnString = name::", welcome to "::city::"'";

return (returnString);endend

1

2

package interfaces;

interface IHelloServiceInterface

function SayHello(name string in, city string in) returns (string);

end

43

Page 17: EGL / SOA – Consuming 3 rd  Party Web Services

17

EGL Services and Web Services Summary/Review Match the following terms and concepts

TermTerm Concept (definition)Concept (definition)

Local service A network interface to programs that live on a particular machine

Web Service A software design paradigm that encourages modular functionality

EGL Deployment Descriptor A step in the creation of a web Service

WSDL A popular software architecture, consisting of modular functions, split out by business requests, made available across a wide network of machines

EGL Interface A service that is executed remotely through a WSDL

Generate WSDL from EGL An EGL part type that defines the functions of a service so that EGL clients can consume (call) the service

@BindService A file that contains XML statement that describes your external (remote) Service call

Service Oriented Design A property of a Service variable declaration

Service Oriented Architecture (SOA) The file that contains entries for client (local) interfaces and remote Web Services

service A service that runs as a local, Java class

Page 18: EGL / SOA – Consuming 3 rd  Party Web Services

18

Now that you have completed this topic, you should be able to:

Create a new EGL Web Project Create a new Service in the Project Define the service as a Web Service Consume the Web Service from a separate project Consumed a 3rd Party Web service

Topic Summary

Summary