...

Consuming Services in Rich Client Applications using IBM Rational Application Developer

by user

on
Category: Documents
24

views

Report

Comments

Transcript

Consuming Services in Rich Client Applications using IBM Rational Application Developer
Consuming Services in Rich Client Applications using
IBM Rational Application Developer
By Nitin Raut ([email protected])
Certified Consulting IT Specialist
IBM Corporation
April 2010
Skill Level: Intermediate
Consuming Services in Rich Client Applications Scenario
Page 1
Consuming Services in Rich Client Applications
Eclipse RCP is a platform for building and deploying rich client applications. The objective of the
Eclipse Rich Client Platform (RCP) is to enable Eclipse to be used in a wide range of end-user
applications that are not integrated development environments (IDEs). With the release of Eclipse
V3.1, it is easy to create RCP applications. This tutorial will guide you step by step in building
your very own RCP application which consumes an existing web service.
Page 2
EM Sandbox for Power
Rich Client Application
In this lab you will use Java Visual Editor in Rational Application Developer to build a
Rich Client Java application that invokes an RPG Web Service.
•
What you should be able to do:
o At the end of the lab, you should be able to:
• Create an SWT Java Visual Class
• Add a Web service Call
• Test the application
•
Introduction
o The steps in this lab are:
ƒ Create an SWT Java Visual Class
ƒ Create JavaServer Faces JSPs with web services components
ƒ Test the Application
•
Skill Prerequisites
o Prerequisite skills for this lab are:
ƒ Understanding of Java programming language concepts and beginner Java
programming skills
Consuming Services in Rich Client Applications Scenario
Page 3
Required Materials
o Client system requirements:
ƒ IBM Rational Application Developer V7.5
o
Page 4
Lab information sheet:
Variable
Description
Demonet IBM i
<team_number>
Team Number
99
<IBMi>
IBM i hostname
iseriesd.demos.ibm.com
<IBMi_userid>
IBM i user ID
SOADEMO
<IBMi_password>
IBM i password
demo4you
<app_lib>
Application library
FLGHT400
<app_lib_modules>
Application Library Modules
FLGHT400M
<workspace>
Workspace
C:\PoT\SOAiV75\workspace
<team_dir_local>
Team directory local
C:\PoT\SOAiV75\teamxx
EM Sandbox for Power
1.1
Review WSDL document
__1.
Type following URL in Internet Explorer and press Enter.
http://iseriesd.demos.ibm.com:59900/FS99Service/wsdl/FINDFLIGHTSServices.wsdl
Tip: These URLs are stored in
wsdl_doc_url.txt file in
\<team_dir_local>\RichClient_lab directory.
Consuming Services in Rich Client Applications Scenario
Page 5
__2.
You should see WSDL document listed in browser. It shows different methods
implemented within the web service with the input and output parameters. E.g. In our
example we have 2 methods:
findFlights and findFlights_XML
This method has are 3 input parameters: FROMCITY, TOCITY and
FLIGHTDATE
5 output parameters : FROMCITY, TOCITY, FLIGHTDATE,
FLIGHTCOUNT, FLIGHTS
Page 6
EM Sandbox for Power
__3.
Scroll down to look at the FLIGHTS structure definition
__4.
Scroll down to look for other details like Web Service name and end point
We will be using this WSDL document to build the JSF Web Service Client to consume the web
service.
Consuming Services in Rich Client Applications Scenario
Page 7
__5.
Let’s test the web service with Test Client deployed on the server. Please enter following
URL in the browser:
http://iseriesd.demos.ibm.com:59900/FS99ServiceClient/sampleFINDFLIGHTSServicesP
roxy/TestClient.jsp
__6.
Click on findflights or findflights_XML method and enter following input field values and
click Invoke. You should see results in the result pane.
To city: Albany
From City: Atlanta
Flight date: 09122010
Click Invoke.
Page 8
EM Sandbox for Power
1.2
Start Rational Developer for Power Systems (RDp)
Skip to next section if ….
You are already in Rational Developer for Power
Systems and you have started WebSphere
Application Server Test Environment
Start Rational Developer for Power Systems (RDp)
__7.
Go to Start => All Programs => IBM Software Development Platform => IBM
Rational Developer for Power Systems Software V7.5 => IBM Rational Developer
for Power Systems Software
__8.
In the workplace launcher window, enter <workspace> (shown by default) in the
workspace field and press OK. (Please make sure that Use this as a default and do not
ask again is NOT checked)
Important!
Please make sure that Use this as a default and do not ask again is
NOT checked
__9.
On the Welcome page. Click X to close or press Workbench icon.
Consuming Services in Rich Client Applications Scenario
Page 9
Start WebSphere Application Server Test Environment
Start WebSphere Application Server Test Environment
This is very important before invoking the web services wizard,
as the wizard will fail.
__10.
In current perspective (Remote System Explorer by default). Select Window => Open
Perspective => Other. Select Web Perspective and click OK.
__11.
In the Web Perspective, click on Servers tab (bottom of screen). Select WebSphere
Application Server 7.0 and press Start button.
__12.
You should see console view with startup messages. Once WebSphere Application
Server is started you will see Server view with status “Started”.
Page 10
EM Sandbox for Power
__13.
Another way to make sure WebSphere Application Server Test Environment is started is
to see the console view with message “Server server1 open for e-business”.
Troubleshooting
If the WebSphere Application Server Test Environment does not
start. Please check server connection type and admin port.
To check configuration, double click on WebSphere Application
Server 7.0 under server view. You may manually provide the
connections settings and select SOAP connector port instead of
RMI port which is more compatible with firewalls.
Click on X and save the configuration when prompted.
Consuming Services in Rich Client Applications Scenario
Page 11
1.3
Create a Java Project
Open Java Perspective
__14.
Go to Window => Open Perspective => Other. In the Open Perspective window, select
Java and click OK.
Create a Java Project
__15.
Select File => New => Project. In the New Project dialog expand the Java node and
select Java Project and click Next.
__16.
On Create a Java Project screen, Enter Project Name: FSxxRichClient (Where xx is
your <team_number> and click Finish.
Page 12
EM Sandbox for Power
Create Visual Class
__17.
Select the FSxxRichClient project in the Project Explorer. Right mouse click and select
New = > Visual Class
Consuming Services in Rich Client Applications Scenario
Page 13
__18.
In Java Visual Class window, enter following details:
__a. Verify that Source folder is FSxxRichClient/src (where xx is your team number)
__b. Enter Name: Flight400SWTApplication
__c. Enter Package: com.ibm.flight400.swt
__d. Select Style: Expand SWT node and select Shell
__e. Check the public static void main (String[] args) checkbox under Which method
stubs would you like to create?
__f. Click Finish
Page 14
EM Sandbox for Power
__19.
The wizard displays a design pane for developing a Visual class. Notice that there is a
hidden Palette toolbar on the right side of the design pane.
Consuming Services in Rich Client Applications Scenario
Page 15
__20.
Page 16
Next, we will add some GUI components to the Shell (window) generated by the Visual
Class wizard. Click on the left arrow to expand the Palette. Now we can drag and drop
components onto the generated shell.
EM Sandbox for Power
Label Components
__21.
Click Label component (under SWT Controls) from Palette to select it. Move the cursor
(do not drag) and drop in the first cell in the grid as shown below:
__22.
In Bean Name dialog enter: labelFromCity and click OK.
Consuming Services in Rich Client Applications Scenario
Page 17
__23.
In the properties view, change following properties (use button on right of the property to
change it).
__a. text : From City and press enter or click outside that property field
__b. font: Arial, Bold,12
__c. foreground: COLOR_BLUE (or color of your choice)
Page 18
EM Sandbox for Power
__24.
Drop 2 more label components just below From City label (same grid column).
__a. To City label
__i.
Bean Name: labelToCity
__ii.
Text property: To City
__iii. font: Arial, Bold,12
__iv. foreground: COLOR_BLUE (or color of your choice)
__b. Departure date label
__i.
Bean Name: labelDepatureDate
__ii.
Text property: Departure Date
__iii. font: Arial, Bold,12
__iv. foreground: COLOR_BLUE (or color of your choice)
After all the three label components, your shell should like :
Consuming Services in Rich Client Applications Scenario
Page 19
Text Field Component
__25.
Click Text component (under SWT Controls) from Palette to select it. Move the cursor
(do not drag) and drop it in the second cell in the grid (next to From City label) as shown
below:
__26.
In the Bean Name dialog provide name for the bean (Field name): fromCity and click
OK. You may change the font and foreground property in the properties view.
Page 20
EM Sandbox for Power
__27.
Drop 2 more text components just below fromCity text (same grid column).
__a. To City text field
__i.
Bean Name: toCity
__b. Departure date field
__i.
Bean Name: depatureDate
After all the three text components, your shell should like :
Button Component
__28.
Click Button component (under SWT Controls) from Palette to select it. Move the cursor
(do not drag) and drop it in the third cell in the grid (next to fromCity text field) as shown
below:
__29.
In Bean Name dialog enter: buttonSearchFlights and click OK.
Consuming Services in Rich Client Applications Scenario
Page 21
__30.
In the properties view, change following properties:
__a. text : Search Flights and press enter or click outside that property field
__b. font: Arial, 10
Page 22
EM Sandbox for Power
__31.
Expand the size of the shell window to accommodate the button using the guides as
shown below:
__32.
Save your work by clicking on the save icon or File -> Save from menu.
Consuming Services in Rich Client Applications Scenario
Page 23
Test Visual Class
__33.
Let’s test the application to see how the Visual class would look like at run time. In the
Package Explorer expand the FSxxRichClient project and expand
com.ibm.flight400.swt package and right click on Flight400SWTApplication.java and
select Run As -> Java Application.
__34.
Application window is displayed:
__35.
Close the application window. Now let’s add some business logic to the application.
Page 24
EM Sandbox for Power
1.4
Add a Web Service Call
Add Web service proxy code
__1.
Select FSxxRichClient Project. Right mouse click, select New -> Other
__2.
On the New dialog, expand Web Services and select Web Service Client. Click Next.
__3.
In Web Service Client screen, select browse next to Service Definition.
Consuming Services in Rich Client Applications Scenario
Page 25
__4.
In Select Service Implementation screen, paste the WSDL URL from the earlier step:
Review WSDL document and click OK.
http://iseriesd.demos.ibm.com:59900/FS99Service/wsdl/FINDFLIGHTSServices.wsdl
__5.
Back in Web service client screen, click Finish.
__6.
You can view the generated classes in the Package Explorer.
Page 26
EM Sandbox for Power
Add Web service invocation code
__7.
Right click on the Search Flights button, select Events -> widgetSelected,
widgetSelected() is a method that will be invoked when a user clicks the Search Flights
button.
Consuming Services in Rich Client Applications Scenario
Page 27
__8.
Page 28
Code skeleton for processing button click event (called widgetSelected) is generated.
Ignore the syntax error (red cross) for now.
EM Sandbox for Power
__9.
Place a table onto the application window by selecting Table from SWT Controls in the
Palette View and dropping it to the Shell.
__10.
In Bean Name dialog enter: tableFSResults and click OK.
__11.
Save you work by going to File -> Save from the menu bar or by pressing CTRL+S on
the keyboard.
Consuming Services in Rich Client Applications Scenario
Page 29
Add Web service invocation code
__12.
Next, we will add some code that will invoke the Web service. Open
\<team_dir_local>\RichClient_lab\WebServiceInvokation.txt. In this file you will find
import statements that we need to add to the import part of the Java class, and
implementation of the widgetSelected() method. Add import statements to the imports
part of the Java class.
import iseries.wsbeans.findflights.*;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
Page 30
EM Sandbox for Power
__13.
Copy and paste implementation of the widgetSelected() method (replace the existing
implementation). The method calls a Web service and populates a table with results
returned by the Web service.
Consuming Services in Rich Client Applications Scenario
Page 31
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
try{
// Remove previous records
tableFSResults.removeAll();
// Create columns
TableColumn col1 = new TableColumn(tableFSResults,SWT.LEFT);
col1.setText("Flight no");
col1.setWidth(80);
TableColumn col2 = new TableColumn(tableFSResults,SWT.LEFT);
col2.setText("Arrival Time");
col2.setWidth(120);
TableColumn col3 = new TableColumn(tableFSResults,SWT.LEFT);
col3.setText("Arrival City");
col3.setWidth(35);
TableColumn col4 = new TableColumn(tableFSResults,SWT.LEFT);
col4.setText("Departure Time");
col4.setWidth(80);
TableColumn col5 = new TableColumn(tableFSResults,SWT.LEFT);
col5.setText("Departure City");
col5.setWidth(35);
TableColumn col6 = new TableColumn(tableFSResults,SWT.LEFT);
col6.setText("Airline");
col6.setWidth(80);
TableColumn col7 = new TableColumn(tableFSResults,SWT.LEFT);
col7.setText("Price");
col7.setWidth(45);
// Declare flight object
FLIGHTINFO flight = null;
// input parameters
FINDFLIGHTSInput inputData = new FINDFLIGHTSInput();
inputData.setFROMCITY(fromCity.getText());
inputData.setTOCITY(toCity.getText());
inputData.setFLIGHTDATE(departureDate.getText());
// Invoke the Web service
FINDFLIGHTSServicesProxy webService = new FINDFLIGHTSServicesProxy();
FINDFLIGHTSResult result = webService.findflights(inputData);
FLIGHTINFO[] result1 = result.getFLIGHTS();
// Create an array of table rows
//final TableItem[] items = new TableItem[result.getFLIGHTCOUNT()];
final TableItem[] items = new TableItem[50];
//for(int i=0;i<result.length;i++){
for(int i=0;i<50;i++){
flight = result1[i];
items[i] = new TableItem(tableFSResults, SWT.NONE);
items[i].setText(new String[] {flight.getFLIGHT(),
flight.getARRIVETIME(),flight.getARRIVECITY(), flight.getDEPARTTIME(),
flight.getDEPARTCITY(),flight.getAIRLINE(), flight.getPRICE()});
}
tableFSResults.setHeaderVisible(true);
tableFSResults.setLinesVisible(true);
}catch(Exception ex){
ex.printStackTrace();
}
}
__14.
Page 32
Save you work by going to File -> Save from the menu bar or by pressing CTRL+S on
the keyboard. Make sure there are no syntax errors.
EM Sandbox for Power
Expand Application window to accommodate table information.
__15.
Double click on Flight400SWTApplication.java window title to expand it.
__16.
Reduce the code view by using the guides
Consuming Services in Rich Client Applications Scenario
Page 33
__17.
Click on the outside window and use guides to expand the window
__18.
Right click on Table component and select Customize Layout.
Page 34
EM Sandbox for Power
__19.
In Customize Layout :tableFSResults first let’s expand the table field by pressing Grab
excess horizontal space.
__20.
Similarly grab excess vertical space.
Consuming Services in Rich Client Applications Scenario
Page 35
__21.
Page 36
Now fill horizontal and fill vertical to fill the component in the available space.
EM Sandbox for Power
__22.
After both vertical and horizontal expansion, you will see the table field is expanded as
follows:
__23.
Save your work by going to File -> Save from the menu bar or by pressing CTRL+S on
the keyboard.
__24.
Close the Flight400SWTApplication.java view.
Consuming Services in Rich Client Applications Scenario
Page 37
1.5
Run the Application
Run the Rich Client Application.
__25.
Page 38
In Package explorer, select FSxxRichClient Project. Click the Run icon.
EM Sandbox for Power
__26.
In the shell window, enter following inputs:
__a. From City: Albany
__b. To City: Atlanta
__c. Date: 09122010
__d. Click Search Flights.
__e. Results are displayed in a table
__27.
Click X to close the shell window.
Consuming Services in Rich Client Applications Scenario
Page 39
Congratulations!!!
You have completed this lab.
Page 40
EM Sandbox for Power
Notices
© Copyright IBM Corporation 1992, 2010 All rights reserved.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP
Schedule Contract with IBM Corp.
This information was developed for products and services offered in the U.S.A. IBM may not offer the
products, services, or features discussed in this documentation in other countries. Consult your local
IBM
representative for information on the products and services currently available in your area. Any
reference to an IBM product, program, or service is not intended to state or imply that only that IBM
product, program, or service may be used. Any functionally equivalent product, program, or service
that does not infringe any IBM intellectual property right may be used instead. However, it is the user’s
responsibility to evaluate and verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in this
documentation. The furnishing of this documentation does not give you any license to these patents.
You can send license inquiries, in writing, to:
IBM Director of
Licensing IBM
Corporation
North Castle Drive
Armonk, NY 105041785 U.S.A.
For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property
Department in your country or send inquiries, in writing, to:
IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minatoku Tokyo 106, Japan
The following paragraph does not apply to the United Kingdom or any other country where such
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION
PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OR CONDITIONS OF
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some
states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this
statement may not apply to you.
″
″
This information could include technical inaccuracies or typographical errors. Changes are periodically
made to the information herein; these changes will be incorporated in new editions of the publication.
IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this
publication at any time without notice.
Consuming Services in Rich Client Applications Scenario
Page 41
Any references in this information to non-IBM Web sites are provided for convenience only and do not
in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not
part of the materials for this IBM product and use of those Web sites is at your own risk.
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the
exchange of information between independently created programs and other programs (including this
one) and (ii) the mutual use of the information which has been exchanged, should contact:
Intellectual Property Dept. for WebS phere
Software IBM Corporation
3600 Steeles Ave. East
Markham, Ontario
Canada L3R 9Z7
Such information may be available, subject to appropriate terms and conditions, including in some cases,
payment of a fee.
The licensed program described in this documentation and all licensed material available for it are
provided by IBM under terms of the IBM Customer Agreement, IBM International Program License
Agreement or any equivalent agreement between us.
Any performance data contained herein was determined in a controlled environment. Therefore, the
results obtained in other operating environments may vary significantly. Some measurements may have
been made on development-level systems and there is no guarantee that these measurements will be the
same on generally available systems. Furthermore, some measurements may have been estimated through
extrapolation. Actual results may vary. Users of this document should verify the applicable data for their
specific environment.
Information concerning non-IBM products was obtained from the suppliers of those products, their
published announcements or other publicly available sources. IBM has not tested those products and
cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of
those products.
All statements regarding IBM’s future direction or intent are subject to change or withdrawal without
notice, and represent goals and objectives only.
Copyright license
This information contains sample application programs in source language, which illustrates
programming techniques on various operating platforms. You may copy, modify, and distribute these
sample programs in any form without payment to IBM, for the purposes of developing, using,
marketing or distributing application programs conforming to the application programming
interface for the operating platform for which the sample programs are written. These examples have not
been thoroughly tested under all conditions. IBM, therefore, cannot guarantee or imply reliability,
serviceability, or function of these programs.
Each copy or any portion of these sample programs or any derivative work, must include a copyright
notice as follows:
© (your company name) (year). Portions of this code are derived from IBM Corp. Sample Programs. ©
Copyright IBM Corp. 1992, 2009. All rights reserved
Page 42
EM Sandbox for Power
Trademarks and service marks
The following terms are trademarks or registered trademarks of International Business Machines
Corporation in the United States, other countries, or both.
•
•
•
•
•
i5/OS
IBM
OS/400
Rational
WebSphere
Microsoft, Windows, and the Windows logo are trademarks of Microsoft Corporation in the United States,
other countries, or both.
Other company, product or service names may be trademarks or service marks of others.
Consuming Services in Rich Client Applications Scenario
Page 43
Fly UP