© 2006 by ibm; made available under the epl v1.0 | cambridge | september 8, 2006 501 developing...

114
© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

Upload: agatha-moore

Post on 28-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

501 Developing Java Web Services with WTP

Arthur RymanIBM Rational Software

Page 2: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

2 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Abstract

The Eclipse Web Tools Platform (WTP) project provides a set of tools for developing standards-based multi-tier JavaTM Web applications. This session focuses on the tools available for developing Web services in WTP 1.5. These tools will be illustrated through a series of scenarios which include top-down Web service creation from XSD and WSDL, bottom-up Web service creation from Java classes, generating Java client proxies from WSDL, using JAX-RPC in Web applications, testing Web services for WS-I compliance, and publishing Web services using UDDI and WSIL. This is an intermediate level session aimed at developers and managers who are creating and using Java Web services. Some prior experience with WTP is helpful. After this session you will have a good understanding of how WTP can be used to develop Java Web services.

Page 3: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

3 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

About this talk

You will use WTP to develop Web services in a sequence of iterations

The example used is League Planet, a fictitious Web site for amateur sports leagues

For more information, see Chapter 10 of the forthcoming book, “Java Web Application Development Using Eclipse”

For the most benefit, you should follow along You are expected to be comfortable using Eclipse and

programming in Java Some prior knowledge of Web services would be useful

Page 4: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

4 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Code Examples

This tutorial is based on a complete working Web application called League Planet

All source code is provided in the examples directory The directory structure is: <topic>/<iteration>/<project> e.g. webservices/iteration1/IceHockeyService/schedule.xml To make the application work, you must create some projects

and generate some code

Page 5: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

5 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Introduction

Web services have emerged as the standard technology for integrating heterogeneous systems across the Internet and intranet

e.g. services implemented on J2EETM application servers and clients implemented on .NET desktops or PHP Web servers

The key technologies are: Extensible Markup Language: XML – for messages

XML Schema Description: XSD – for message description

Web Service Description Language: WSDL – for service description

Universal Description, Discovery, and Integration: UDDI – for service registries

Web Service Interoperability: WS-I – for interoperability

Page 6: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

6 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Overview of Iterations

1. Developing Web Services Top-Down2. Developing Web Services Bottom-Up3. Generating Web Service Client Proxies4. Testing Web Services for Interoperability5. Using Web Services in Web Applications6. Discovering and Publishing Web Services

Page 7: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 1 –Developing Web Services Top-Down

Page 8: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

8 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 1 - Developing Web Services Top-Down

Top-Down development means designing the Web service interface first and then developing the implementation code

This approach yields the best interoperability because the underlying implementation details do not “bleed through” into the interface

This approach is required if the messages use existing industry or corporate XML document formats

You need to learn XSD and WSDL design skills Luckily, WTP has two great editors that make this task easier

Page 9: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

9 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 1 Overview

1. Use the XSD editor to describe the League Planet schedule format

2. Use the WSDL editor to describe a Web service for querying schedules

3. Use the Web service wizard to generate a Java skeleton for the service and deploy it to the Axis SOAP engine running on Tomcat

4. Fill in the implementation of the skeleton by accessing the League Planet business tier

5. Use the Web service explorer to test the Web service

Page 10: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

10 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Create a new Dynamic Web Project named IceHockeyService to contain the Web service.

Page 11: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

11 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Describing schedule.xml

League Planet has an XML format for schedules Import IceHockeyService/schedule.xml for an example instance

document Your goal is to describe this format using XSD

Page 12: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

12 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Create a new XML Schema file named schedule.xsd in IceHockeyService.

Page 13: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

13 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

schedule.xsd

In general, there are many equivalent ways to describe a given format using XSD

For Web services, it’s a good practice to describe formats in a way that works well with XML data binding toolkits such as JAX-RPC

Define complexTypes for the content model of each element The XSD editor lets you edit in the source tab, the graphical tab,

the outline view, and the property view Try creating schedule.xsd Import IceHockeyService/schedule.xsd before proceeding

Page 14: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

14 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View schedule.xsd in the Graph tab of the XSD editor.

Page 15: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

15 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View ScheduleContent of schedule.xsd in the Graph tab of the XSD editor.

Page 16: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

16 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View schedule.xsd in the Outline view of XSD editor.

Page 17: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

17 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

query.wsdl

Now that you’ve described the message format using XSD, you next goal is to describe a Web service for retrieving it

For simplicity, the Web service will have a single operation named getSchedule

The operation will take as input, the schedule id, and return as output the corresponding schedule document

Page 18: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

18 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Create a new WSDL file named query.wsdl in IceHockeyService.

Page 19: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

19 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Enter the namespace for the WSDL and have the wizard generate a skeleton document for you using the SOAP binding and document/literal style.

Page 20: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

20 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

WSDL editor

You can edit the document in the graph tab, the source tab, the outline view, and the property view.

WSDL describes Web service using a hierarchy of constructs: message, portType, binding, and service

The editor has a wizard that generates binding content for you Try creating query.wsdl Import IceHockeyService/query.wsdl before proceeding

Page 21: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

21 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View query.wsdl in the Graph tab of the WSDL editor.

Page 22: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

22 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View query.wsdl in the Outline view of the WSDL editor.

Page 23: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

23 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Deploying query.wsdl

You have now described the Web service Your next goal is to deploy it This step assumes you have previously installed Tomcat and

added it to WTP Select query.wsdl and execute the command Web Services >

Generate Java bean skeleton This command launches the Web service wizard

Page 24: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

24 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Check the boxes to Install and Start the Web service and click Next.

Page 25: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

25 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard validates your WSDL. Click Next.

Page 26: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

26 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard selects Axis and Tomcat. Click Next.

Page 27: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

27 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select a source folder and change the package name for the generated skeleton. Accept the defaults and click Next.

Page 28: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

28 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Click Start server, wait, then click Next.

Page 29: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

29 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you publish the WSDL to UDDI. Just click Finish.

Page 30: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

30 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

What the wizard did.

Installed the Axis SOAP engine in your project Generated the Java bean skeleton for you service and lots of

Java XML data binding classes in the src folder Copied query.wsdl to WebContent/wsdl/querySOAP.wsdl and

set its endpoint to your Web application (also copied schedule.xsd)

Created the Axis deployment descriptor WebContent/WEB-INF/server-config.wsdd

Created a couple of handy Axis files to deploy and undeploy your Web service in a subfolder of WebContent/WEB-INF

Started Tomcat to make your Web service available

Page 31: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

31 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The IceHockeyService project after the wizard completed. Select AxisServlet and execute the command Run As > Run on Server.

Page 32: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

32 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the list of deployed Web services.

Page 33: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

33 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

LeaguePlanetModel Business Tier

The Web service is running but it just returns null at this point You next need to fill in the implementation of the Java bean

skeleton The Web service needs to access the League Planet business

tier If you have not previously done so, create a new J2EE Utility

Project named LeaguePlanetModel and import the source code from LeaguePlanetModel/src into it

Page 34: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

34 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Select IceHockeyService and open its Properties dialog. Add LeaguePlanetModel as a J2EE Module Dependency.

Page 35: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

35 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the module structure of the server in the Servers view.

Page 36: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

36 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Filling in the Java bean skeleton

You now have a Web service skeleton and access to the League Planet business tier.

Your next goal is to implement the Web service. The generated skeleton class is

com.leagueplanet.ws.query.QuerySOAPImpl Import

IceHockeyService/src/com/leagueplanet/ws/query/QuerySOAPImpl.java now

This modified skeleton simply delegates to a new class com.leagueplanet.Query to avoid confusion with the generated code

Create this new class now and try to implement it Import IceHockeyService/src/com/leagueplanet/Query.java before

proceeding

Page 37: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

37 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Testing the Web service

At this point the Web service is ready to test You will test it using the Web Service Explorer Select IceHockeyService/WebContent/wsdl/querySOAP.wsdl

and execute the command Web Services > Test with Web Service Explorer

The Web Service Explorer will start and open a new Web browser in the editor area

Page 38: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

38 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View querySOAP.wsdl in the Web Service Explorer. Click the getSchedule link.

Page 39: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

39 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the getSchedule operation. Enter 1 in the scheduleId field and click Go. The schedule is returned in the Status pane.

Page 40: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

40 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Double-click the Status pane to maximize it. Click the Source link to view the SOAP message.

Page 41: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

41 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the SOAP message source. Click the Form link to return to the Form display.

Page 42: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 2 –Developing Web Services Bottom-Up

Page 43: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

43 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 2 – Developing Web Services Bottom-Up

Bottom-Up development starts with a Java service class and generates the WSDL from it

This approach is more productive for Java developers since XSD and WSDL design skills are not required

It is suitable when the Java class uses simple data transfer objects as inputs and outputs of its operations

It is dangerous because the resulting XSD may be complex and less interoperable

There is risk of implementation “bleed through” into the service interface and coupling between the client and service

Page 44: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

44 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 2 Overview

1. Develop a Java service class to get details about a game and to update its score

2. Use the Web service wizard to deploy the service3. Use the WSDL editor to view the generated WSDL

Page 45: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

45 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Create the Java service implementation

The service implementation will be created in the package com.leagueplanet

Import the following Java classes into IceHockeyService/src/com/leagueplanet:

GameDetail.java – the data transfer class

GameException.java

ScoreException.java

Update.java – the service class The service has two operations:

getGame

updateScore The service accesses the League Planet business tier

Page 46: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

46 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Deploy the service

Select Update.java and execute the command Web Services > Create Web service

Page 47: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

47 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Check the Install and Start Web service boxes. You could click Finish at this point since the wizard picks sensible defaults. Click Next to step this the pages.

Page 48: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

48 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select a different class. Click Next.

Page 49: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

49 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select a different project. Click Next.

Page 50: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

50 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select the methods to include as operations and the style to use. Click Next.

Page 51: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

51 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Confirm that Update was deployed using the AxisServlet.

Page 52: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

52 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the generated Update.wsdl in the WSDL editor.

Page 53: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 3 –Generating Web Service Client Proxies

Page 54: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

54 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 3 – Generating Web Service Client Proxies

Web services can be invoked from programs written in many programming languages, e.g. Java, C#, PHP, JavaScriptTM etc.

Most languages support dynamic invocation and do not require any code generation

A client proxy simplifies Web service invocation by producing a class that resembles the service interface

In J2EE, client proxies are specified by JAX-RPC and its follow-on JAX-WS

Page 55: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

55 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 3 Overview

1. Use the Web service wizard to generate a Java client proxy and a JSP test client

2. Test the service using the JSP test client

Page 56: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

56 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Select Update.wsdl and execute the command Web Services > Generate Client. The wizard opens. Check the Install, Test, and Monitor boxes and click Next.

Page 57: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

57 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard validates the WSDL. Click Next.

Page 58: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

58 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select a different client project. Click Next.

Page 59: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

59 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you change the package for the generated client proxy code. Click Next.

Page 60: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

60 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select the operations to include in the generated JSP test client. It also lets you select a different output folder for the JSPs. Click Finish.

Page 61: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

61 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

What the wizard did

Created a new Dynamic Web project named IceHockeyServiceClient

Installed Axis in IceHockeyServiceClient Generated Java proxy code including XML data binding classes

and exceptions in IceHockeyServiceClient/src/com/leagueplanet Generated JSP test client code in

IceHockeyWebContent/sampleUpdateProxy Started an instance of the TCP/IP Monitor and configured the

JSP client to use it Opened the JSP test client in a Web browser You are now ready to test the Web service

Page 62: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

62 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Click the getGameDetail method. Enter gameId = 1 and click Invoke. View the game details in the Result pane.

Page 63: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

63 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Click the updateScore method. Enter input parameters and click Invoke. The operation returns an empty result.

Page 64: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

64 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Click the getGameDetails method. Enter gameId =1 and click Invoke. View the updated score in the Result pane to confirm that the updateScore operation works correctly.

Page 65: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 4 –Testing Web Services for Interoperability

Page 66: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

66 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 4 – Testing Web Services for Interoperability

The main value proposition of Web services is interoperability between heterogeneous systems, e.g. .NET, PHP, JavaScript

WS-I.org was established to define interoperability profiles WTP lets you validate both your WSDL and your Web service

implementations for interoperability

Page 67: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

67 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Click the getEndpoint method. Click Invoke. View the endpoint address in the Result pane. Note the port number.

Page 68: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

68 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Open the Preferences dialog and select the TCP/IP Monitor page. Note the port number of the monitor matches the endpoint.

Page 69: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

69 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the recorded messages in the TCP/IP Monitor view. Click the Validate icon (document with checkmark).

Page 70: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

70 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select a folder to store the message log file. Select IceHockeyServiceClient and click Next.

Page 71: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

71 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you validate the message against a WSDL file. Select Update.wsdl and click Next.

Page 72: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

72 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The wizard lets you select the WSDL element to use. Select the Update port and click Finish.

Page 73: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

73 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The messages are valid. In the event of errors, markers are placed in the generated log file.

Page 74: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

74 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Use the Profile Compliance and Validation Preference page to control the level of validation.

Page 75: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 5 –Using Web Services in Applications

Page 76: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

76 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 5 – Using Web Services in Applications

Web services can be used in applications developed with many programming languages and technologies

Web services allow alternate user interfaces to be developed Web services allow decoupling of the presentation and business

tiers within an enterprise Java applications can use JAX-RPC or JAX-WS to access both

Java and non-Java Web services

Page 77: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

77 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 5 Overview

1. Develop a user interface in IceHockeyServiceClient based on JSPs and servlets

2. Access the Update Web service from the servlet using the Java client proxy

Page 78: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

78 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Create a new servlet in IceHockeyServiceWeb. Enter package and class names. Click Next.

Page 79: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

79 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Enter a description and URL mapping. Click Next.

Page 80: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

80 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Check the doGet and doPost boxes. Click Finish.

Page 81: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

81 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Develop the user interface

The wizard created and configured the UpdateScoreServlet Create two new JSPs:

score-form.jsp – to input score, has Submit button

score-confirmation.jsp – to confirm score update, has Edit button Code the servlet as follows:

doGet takes a gameId query parameter, calls the service to get the game detail, puts the game detail in the session, and forwards to score-form.jsp

doPost takes gameId, visitorScore, and homeScore query parameters, calls the service to update the score, gets the new game detail, and forwards to score-confirmation.jsp

Page 82: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

82 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Import the UI code

Just kidding! That was way too much code to write. Import the following code into IceHockeyService:

/src/com/leagueplanet/ui/UpdateScoreServlet.java

/WebContent/score-form.js

/WebContent/score-confirmation.js

/WebContent/schedule.css

/WebContent/validator.css

/WebContent/score-validator.js Note the JAX-RPC usage pattern in the servlet

Page 83: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

83 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Select the updateScore servlet and execute the command Run As > Run on Server. A GameException is thrown because you didn’t provide a gameId query parameter.

Page 84: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

84 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Append ?gameId=1 to the URL and try again. Now the score form is displayed. Enter a new score and click Submit.

Page 85: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

85 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The score confirmation page is displayed. Click Edit to update the score again.

Page 86: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 6 –Discovering and Publishing Web Services

Page 87: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

87 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 6 – Discovering and Publishing Web Services

You can look for available Web services in UDDI registries You can also publish Web services in UDDI registries UDDI provides a SOAP Web service for dynamic discovery You can also look for and publish Web services using the

simpler WSIL document format In the future, Web crawlers might harvest WSIL documents and

automatically populate UDDI registries so you can take advantage of the powerful UDDI inquiry support

Page 88: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

88 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Iteration 6 Overview

1. Explore a UDDI registry2. Explore a WSIL document3. Create a WSIL document

Page 89: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

89 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Launch the Web Service Explorer. Select the XMethods UDDI Registry and click Go.

Page 90: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

90 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the registry details. Click the Find link.

Page 91: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

91 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Enter a name for the query. Search for Services. Enter a partial service name to search for and click Go.

Page 92: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

92 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the query results. Click the service links to explore the services.

Page 93: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

93 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the webservicex.com service. Click the Add to WSDL Page icon (with plus sign).

Page 94: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

94 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the WSDL details. Click the StockQuoteSOAP link.

Page 95: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

95 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the WSDL binding details. Click the GetQuote link.

Page 96: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

96 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the operation details. Click the Add link and enter a stock symbol. Click Go.

Page 97: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

97 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the result of the operation in the Status pane.

Page 98: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

98 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

WSIL

As you can see from this exercise, UDDI is very complex WSIL is a simpler way to publish information about Web services WSIL can refer to WSDL, UDDI, and other WSIL documents WSIL was jointly developed by IBM and Microsoft Microsoft still uses the precursor, DISCO There is not a lot of WSIL deployed XMethods support it and several other technologies

Page 99: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

99 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Surf to http://www.xmethods.net. Click the Access link.

Page 100: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

100 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the many access methods supported by XMethods. Copy the WS-Inspection link.

Page 101: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

101 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Open the WSIL page of the Web Service Explorer (page with globe icon). Paste in the XMethods WSIL URL, select WSDL Services, and click Go.

Page 102: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

102 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the list of WSDL services registered at XMethods.

Page 103: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

103 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Create an new inspection.wsil file in IceHockeyService/WebContent

Page 104: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

104 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Edit inspection.wsil

Select IceHockeyService/WebContent/wsdl/querySOAP.wsdl and execute the command Web Services > Generate WSIL to create querySOAP.wsil

Repeat for Update.wsdl Merge the contents of these into inspection.wsil and add

abstracts Import IceHockeyService/WebContent/inspection.wsil before

proceeding

Page 105: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

105 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Enter http://localhost:8080/IceHockeyService/inspection.wsil in WSIL page, select WSDL Services and click Go.

Page 106: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

106 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the available WSDL services. Click the QuerySOAP.wsdl link.

Page 107: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

107 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

View the QuerySOAP.wsdl details.

Page 108: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

108 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Web Services Summary

In this tutorial you have covered all the major functional areas of Web service development that are available in WTP

Tools covered included the Web Service Wizard, Web Service Explorer, XSD Editor, WSDL Editor, TCP/IP Monitor, and WS-I Test Tools

Technologies covered include XSD, WSDL, SOAP, UDDI, WSIL, JAX-RPC, and Axis

For further details consult the WTP Help and Web site

Page 109: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

© 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

EclipseWorld 2006WTP Track and Subprojects

Page 110: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

110 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

The JSF Tools Project Technology Preview release with WTP 1.5

Features Full-fledged Faces Config Editor Enhanced JSF-JSP Source Editor JSF Library Registry Extensible framework

Download http://download.eclipse.org/webtools/downloads/drops/R1.5/R-1.5.0-2006062814

55/ Release 1.0-WTP2.0

Features Visual JSF Page Designer JSF 1.2 support First release of API’s

Requirements http://wiki.eclipse.org/index.php/Release_1.0_Requirements

Page 111: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

111 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

AJAX Toolkit Framework

Provides tools for developing AJAX/DHTML applications JavaScript Debugger

Embedded Mozilla Browser

DOM Inspector / JavaScript Console

JavaScript Validation Extensible framework for adding AJAX runtimes to eclipse

AJAX Personality Builder New Enhancements

New CSS Tools and Improved DOM Inspector

Configuring and Deploying to a HTTP Server

JavaScript Debugging Enhancements Debugging using a HTTP/File URL. Expression Support

Project in Incubation Phase (www.eclipse.org/atf).

Page 112: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

112 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Dali JPA Tools Project

Tools and frameworks for building applications with the Java Persistence API (JPA) —part of Java EE 5. Support for both EE and SE

development

O-R Mapping validation with intelligent code assist for both Java and Database values.

Quick start generation wizards

Entities from Tables Tables from Entities

Salvador Dalí. The Persistence of Memory. 1931. © 2005 Salvador Dalí, Gala-Salvador Dalí Foundation/Artists Rights Society (ARS), New York

Page 113: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

113 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

WTP Track

Wednesday, September 6 All Day T-4 Develop Better J2EE Applications With the Web Tools Platform – Judd

Thursday, September 7 8:30 AM 101 Quick Tour of the Eclipse Web Tools Platform – Ryman 8:30 AM 107 Leveraging JSF Components – Katz 10:30 AM 201 How to Build Java Web Applications With the Web Tools Platform –

Ryman 1:15 PM 301 Facing JavaServer Faces Development With JSF Tools – Jacobi 3:15 PM 401 Consuming and Producing Web Services With Web Tools – Judd

Friday, September 8 8:45 AM 501 Developing Java Web Services With the Web Tools Platform – Ryman 10:45 AM 601 Extending the Web Tools Platform With Ant and PDE – Shittu 1:45 PM701 Building Applications With the Java Persistence API and Dali – S.

Smith 3:45 PM 801 How to Use and Extend Eclipse’s XML and Schema Tools – Williams,

Salter, Dahyabhai

Page 114: © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006 501 Developing Java Web Services with WTP Arthur Ryman IBM Rational Software

114 © 2006 by IBM; made available under the EPL v1.0 | Cambridge | September 8, 2006

Attributions

Java and all Java-based trademarks are trademarks of SunMicrosystems, Inc. in the United States, other countries, or both.

Other company, product, or service names may be trademarks or service marks of others.