Slide 1 - Gateway/400 Group - St. Louis, MO

637 views
495 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
637
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Introduction: Tim working with IBM related technologies for past 18 years. Dan Hiebert, working with IBM technologies for last 10 years. Web Services and SOA can offer a maze of complexity for the developer, which sometimes appears overwhelming. Perhaps the industry has over-complicated the message of Web services with SOA by focusing on all the infinite possibilities and not providing a clear path. This workshop looks to demonstrate a methodology to simply take an RPG application, deploy it as a service, and finally build a Web User Interface utilizing the new IBM Integrated Web Services for i. The IBM Integrated Web Services for i was designed to provide an IBM i path, integrating the latest Web services technology and harnessing simple web interfaces, merging development and deployment. This workshop will consist of presentation and hands on labs. Identify with the Developer On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities.
  • IBM Focus on the RPG Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. Transition to the IBM i Web services project.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • 2 years ago, I was given the opportunity to work and co-lead a team to address this very issue for IBM i. In working on a team we began to tackle and remove the deploy and install complexities, making it at easy and quick as possible to make the RPG run as Service on IBM i.
  • One of the few things that Web services have in common with other types of Web applications is the transport mechanism: Web services are invoked over the Internet. While the end product of other types of Web applications is HTML which meant for display to an end-user, Web services return data in form of XML, which can either be converted to HTML or passed on to other applications for further processing. Web services provide a way for programs to browse and perform business functions over the Web. Web services are self-contained and self-describing. No additional software is required on the client side to run a Web service, just a programming language with XML and HTTP Client support. Neither the client nor the server knows about the Web service implementation. All they care about is the format and the contents of request and response messages. Web services are self-describing because the definition of the message format travels with the message, no external meta data repositories are required.
  • Web services can be used to implement any kind of application. Most Web services can be placed in one of the following categories: Business information Business integration As title suggests, business information Web services provide information that can be useful to other applications. Business information Web services are stateless, they display data based on a user’s request but do not perform any transactions. Business Integration Web services are applications that implement business function. Business information Web services can be statefull or stateless. For some transactions all required data can be sent in one request message from the Web service client. For more complex transactions, several interactions between Web service client and Web service are required, which means that the Web service has to maintain a state.
  • Web services technology implements the concepts of Service Oriented Architecture. The three main players in the SOA are a service provider, a server requestor and a broker. Real life example: an airline is a service provider, the consumer is the service requestor and a broker is a travel agent.
  • Web services technology consist of four functional areas: Transport layer XML messaging layer Web service description layer Discovery layer: Universal Description, Discovery and Integration ( UDDI ) is a platform-independent , XML -based registry for businesses worldwide to list themselves on the Internet . UDDI is an open industry initiative, sponsored by OASIS , enabling businesses to publish service listings and discover each other and define how the services or software applications interact over the Internet. A UDDI business registration consists of three components: White Pages — address, contact, and known identifiers; Yellow Pages — industrial categorizations based on standard taxonomies; Green Pages — technical information about services exposed by the business.
  • Don’t get bogged down in the development details. I would much rather have time spent coding RPG in a format that is Web Service Friendly. SOA is now the architecture, applied to grouping multiple services together.
  • Introduction: Tim working with IBM related technologies for past 18 years. Dan Hiebert, working with IBM technologies for last 10 years. Web Services and SOA can offer a maze of complexity for the developer, which sometimes appears overwhelming. Perhaps the industry has over-complicated the message of Web services with SOA by focusing on all the infinite possibilities and not providing a clear path. This workshop looks to demonstrate a methodology to simply take an RPG application, deploy it as a service, and finally build a Web User Interface utilizing the new IBM Integrated Web Services for i. The IBM Integrated Web Services for i was designed to provide an IBM i path, integrating the latest Web services technology and harnessing simple web interfaces, merging development and deployment. This workshop will consist of presentation and hands on labs.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • These misconceptions, I think have came from internal IBM…they actually frustrate me. You can begin today writing ILE style code that is modular and deploy your RPG business Logic as a Service. Take a Staged approach to incremental development Test the Water…try them out/play with them Go Write Code or Business Logic The partial truth is that to fully take advantage of your RPG business logic, you may need to modernize, or modularize existing code, or just go write the thing brand new in incremental stages. This is true for “Deploying” RPG procedures and this is true for “Consumption”
  • Concpets / Thoughts on RPG Best Practices. Barbara Morris (IBM Toronto) and Bryan Meyers Free Format Easier to read Easier to document Easier to maintain If writing new code, use free format If changing existing code, use free format to Replace entire subroutines Replace large sections of code Procedures: Modular approach to programming Way to organize an application Facilitates program maintenance Hides complex logic Efficient reuse of code – NO DUPLICATE CODE Smaller, more efficient, single function units
  • Introduction: Tim working with IBM related technologies for past 18 years. Dan Hiebert, working with IBM technologies for last 10 years. Web Services and SOA can offer a maze of complexity for the developer, which sometimes appears overwhelming. Perhaps the industry has over-complicated the message of Web services with SOA by focusing on all the infinite possibilities and not providing a clear path. This workshop looks to demonstrate a methodology to simply take an RPG application, deploy it as a service, and finally build a Web User Interface utilizing the new IBM Integrated Web Services for i. The IBM Integrated Web Services for i was designed to provide an IBM i path, integrating the latest Web services technology and harnessing simple web interfaces, merging development and deployment. This workshop will consist of presentation and hands on labs.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • Introduction: Tim working with IBM related technologies for past 18 years. Dan Hiebert, working with IBM technologies for last 10 years. Web Services and SOA can offer a maze of complexity for the developer, which sometimes appears overwhelming. Perhaps the industry has over-complicated the message of Web services with SOA by focusing on all the infinite possibilities and not providing a clear path. This workshop looks to demonstrate a methodology to simply take an RPG application, deploy it as a service, and finally build a Web User Interface utilizing the new IBM Integrated Web Services for i. The IBM Integrated Web Services for i was designed to provide an IBM i path, integrating the latest Web services technology and harnessing simple web interfaces, merging development and deployment. This workshop will consist of presentation and hands on labs.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • IBM Focus on the RPG Developer Identify with the Developer Creating Web service: business logic for RPG. Deploying/Externalization/Testing of services: deploying RPG as a Web Service (yes it is that easy). Consumption of services: RPG making use of any of the thousands of services available today. Presentation Layer: taking the service and building a WEB presentation layer. On personal note: I started on the journey of RPG based Web Services 5 years ago, I was amazed at the power/flexibility of Web Services but I was a bit concerned at the additional complexities we encountered when creating, building, deploying. It would be my estimation that a person could spend upwards of 1 month in education & installation, just to get the first Web Service deployed. I believe my first attempt was approximately 2 weeks, and I had access to the developer experts in domain of RPG & Web Services, but it was through a system of trial and error, that I arrived much like you at the place where there are just to many complexities. Transition to the IBM i Web services project.
  • There is a growing need for RPG applications to be able to access information available through Web services and to be able to work with XML data from a variety of sources. While the XML Toolkit for iSeries provides access to both SAX and DOM parsers, the toolkit still requires a significant amount of programming to handle the mapping of the XML data to fields and structures commonly used in RPG programs. Creating the SOAP message and sending it over HTTP requires a significant programming effort and a good knowledge of the SOAP protocol. To simplify the Web service invocation, IBM offers another toolkit along with the XML toolkit that allows you to easily invoke Web services without mastering the SOAP protocol. The IBM Web Services Client for C++ provides tools to generate Web service client stubs, and it provides libraries containing programs to manage SOAP messages to send them over HTTP. The Web Services Client for C++ toolkit uses externally described data structures to define the mapping between elements of XML documents and fields usable by RPG applications. It also provides the capability to send and receive XML documents through HTTP requests, including the generation of the HTTP headers required for SOAP processing. Web services are described by files called Web Service Description Language files (or WSDLs), which are XML files containing all the information related to the services that are available at a particular location on the internet. At their simplest level, WSDLs describe request-and-response message pairs in detail, and WSDLs contain everything relevant to the services.
  • You can use a Java program, WSDL2WS, which is part of the Web Services Client for C++ package, to turn the WSDL into a suite of C++ stubs and data objects that you can call and pass information to. The C++ stubs and data objects then request information from the server and then wait for the corresponding reply before passing the response data objects back to the client (requester/consumer). The stubs hide the network communication from the application writer (in our case, the ILE RPG (or COBOL) programmer. All you need to know is the name of the service, the method it contains, and the structure of any data objects that are passed. The WSDL2WS tool has some options: -lc generates C proxy. The default output is C++ -v generates more tracing during the generation -otarget_directory indicates where the output is generated The outputs are files of types .cpp and .h. You get one C++ file representing the service and one for non-basic type data that the service uses. For the currency quote example, you get only Program .cpp and Program .h. The next slide shows the Program .h file used in our example - StockQuote.h Note: the toolkit has a restriction on the WSDL file. Any WSDLs used must define one and only one service with one and only one port type.
  • The C++ and C code handles the Web services call. On the RPG side, the RPG code manages only the integration with the C/C++ module. There is nothing specific to the Web services. It essentially is a call/return process with the C++ module. The integration needs the declaration of the C function (convert in the sample) with its parameter and the type of return. In the next slides, an RPG example is shown.
  • Slide 1 - Gateway/400 Group - St. Louis, MO

    1. 1. Web Services and SOA for the RPG Developer on IBM i IBM Integrated Web services for i Dan Hiebert IBM [email_address]
    2. 2. Agenda <ul><li>Introduction to SOA & Web Services </li></ul><ul><li>Creating RPG Web Service Business Logic. </li></ul><ul><li>Deploying/Testing RPG Web Services. </li></ul><ul><li>Consumption of Web Services. </li></ul><ul><li>Presentation Layer of Web Services. </li></ul>
    3. 3. Introduction SOA & Web Services on IBM i <ul><li>Introduction to SOA & Web Services </li></ul><ul><li>IBM i Project for Web services </li></ul><ul><li>Introduction Web Services and SOA technology's </li></ul>
    4. 4. Web Services Made Easy An IBM i Project
    5. 5. Web Services Made Easy – An IBM i Project <ul><li>IBM Integrated Web Services for i </li></ul><ul><ul><li>“ An Easy Step to starting with SOA on System i” </li></ul></ul><ul><li>Simplify the process of externalizing RPG/COBOL business logic as a service. </li></ul><ul><li>Externalize various RPG/COBOL business tasks as services. </li></ul><ul><li>Abstracts the hidden complexities of Web services for IBM i. </li></ul><ul><li>Provide RPG/COBOL Developer easy to use Web interface, not requiring additional tools or skills </li></ul><ul><li>http:// www.ibm.com/systems/i/software/iws / </li></ul>
    6. 6. IBM Integrated Web services server for i <ul><li>Merged the Development Process and Deployment Server </li></ul><ul><li>2 Steps to Create a Web services server on IBM i </li></ul><ul><li>7 Steps to Deploy an RPG/COBOL Service </li></ul><ul><li>Built on IBM Integrated Web Application Server for I </li></ul><ul><ul><li>Note: 2 Methods returned for every procedure or program </li></ul></ul><ul><ul><ul><li>XML - Automated Data (Including Data Structures) </li></ul></ul></ul><ul><ul><ul><li>Standard Serialized objects. </li></ul></ul></ul><ul><li>Embedded Axis 2 Engine into IBM i (5722SS1) </li></ul>
    7. 7. Introduction to Web services and SOA
    8. 8. What is …..? … a service? A repeatable business task – e.g., check customer credit; open new account … service oriented architecture (SOA)? An IT architectural style that supports integrating your business as linked services &quot;SOA impacts every aspect of IT and business.”
    9. 9. Web Service Definition (from the Wikipedia.com) “ A ' Web service' (also Web Service ) is defined by the W3C as &quot;a software system designed to support interoperable machine-to-machine interaction over a network &quot; [1] . Web services are frequently just Web APIs that can be accessed over a network, such as the Internet , and executed on a remote system hosting the requested services. ”
    10. 10. What Are They? <ul><li>Web services </li></ul><ul><ul><li>Applications that are invoked over the Web </li></ul></ul><ul><ul><li>An implementation of Service Oriented Architecture (SOA) </li></ul></ul><ul><ul><li>Contain only business logic, do not have a user interface </li></ul></ul><ul><ul><li>Self-contained </li></ul></ul><ul><ul><li>Self-describing </li></ul></ul>
    11. 11. Requirements Addressed By Web Services <ul><li>Interoperability – need a common communication protocol </li></ul><ul><ul><li>Between systems </li></ul></ul><ul><ul><li>Between languages </li></ul></ul><ul><li>Interface Description Language </li></ul><ul><ul><li>Describe the service’s interface </li></ul></ul><ul><ul><li>Clear and unambiguous </li></ul></ul><ul><ul><li>Platform independent </li></ul></ul><ul><li>Retrieval of Service </li></ul><ul><ul><li>Search and retrieve available services </li></ul></ul><ul><ul><li>Conventient integration at design time and runtime </li></ul></ul><ul><li>Security </li></ul><ul><ul><li>Protection of services </li></ul></ul><ul><ul><li>Protection of data sent to/from services </li></ul></ul>
    12. 12. Types of Web Services <ul><li>Business Information: access to a database or rapidly changing contents </li></ul><ul><ul><li>Stock quotes </li></ul></ul><ul><ul><li>Currency conversion rates </li></ul></ul><ul><ul><li>Address book </li></ul></ul><ul><ul><li>Geographical data </li></ul></ul><ul><li>Business Integration: implementing a function or outsourcing a business process </li></ul><ul><ul><li>Reservations system </li></ul></ul><ul><ul><li>Credit check </li></ul></ul><ul><ul><li>Payment system </li></ul></ul><ul><ul><li>Loan service </li></ul></ul><ul><ul><li>Product catalog </li></ul></ul>
    13. 13. Web Services Overview Definition: Self-Contained with well-defined interfaces that provide functionality that is accessible over the Internet/Intranet Key Technologies : XML, WSDL, SOAP, UDDI
    14. 14. Web Service Participants <ul><li>Provider: implements a Web service </li></ul><ul><li>Requestor: has a business need </li></ul><ul><li>Broker: lists all available services </li></ul>Broker Provider find 2 bind/invoke 3 publish 1 Requestor
    15. 15. Web Services Technology Stack Discovery UDDI, WSIL Description WSDL XML Messaging SOAP Transport HTTP, JMS, FTP, SMTP
    16. 16. What is …..? … a service? A repeatable business task – e.g., check customer credit; open new account … service oriented architecture (SOA)? An IT architectural style that supports integrating your business as linked services &quot;SOA impacts every aspect of IT and business.”
    17. 17. SOA Is Like Musical Notes… Each musical notes represents a business service SOA allows for flexible composition of music Checking Credit Opening Account Tracking Shipment Checking Inventory Placing an Order
    18. 18. Web services are a good start… <ul><li>Business applications and their interfaces become reusable </li></ul><ul><li>Decouples the interfaces from the business applications </li></ul><ul><li>The number and complexity of the interfaces is reduced </li></ul><ul><li>Rich business abstractions describe the application interface </li></ul>Turn this … … into this (web services). Service Service Service Service Service Service Service = Interface = Application = Interface = Service
    19. 19. Resources <ul><li>Integrated Web Services for IBM i </li></ul><ul><ul><li>http:// www.ibm.com/systems/i/software/iws / </li></ul></ul><ul><li>IBM Technical Information and Example </li></ul><ul><ul><li>http:// www.ibm.com/developerworks / </li></ul></ul><ul><li>WebSphere Enterprise Service Bus </li></ul><ul><ul><li>http://www-306.ibm.com/software/integration/wsesb/ </li></ul></ul><ul><li>WebSphere Process Server </li></ul><ul><ul><li>http://www-306.ibm.com/software/integration/wps/ </li></ul></ul>
    20. 20. Creating RPG Web Service Business Logic Dan Hiebert IBM [email_address] Web Services and SOA for the RPG Developer on IBM i
    21. 21. Agenda <ul><li>Introduction to SOA & Web Services </li></ul><ul><li>Creating RPG Web Service Business Logic. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Consumption of Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Deploying/Testing RPG Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Presentation Layer of Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul>
    22. 22. Creating RPG Web Service Business Logic <ul><li>ILE RPG Best Programming Practices </li></ul><ul><li>RPG Style Web Service </li></ul><ul><ul><li>Encapsulated </li></ul></ul><ul><ul><li>Reusable </li></ul></ul><ul><ul><li>Stateless </li></ul></ul><ul><ul><li>Event driven </li></ul></ul><ul><ul><li>Loosely coupled </li></ul></ul><ul><li>RPG Traditional vs Modular - Example </li></ul>
    23. 23. RPG Developer – Misconceptions <ul><li>The RPG language is outdated and does not work with the Web Services paradigm. </li></ul><ul><li>I need to modernize my “Monolithic” application. </li></ul><ul><li>I have to re-write my entire application to code for RPG Web Services. </li></ul>
    24. 24. RPG Best Practices – Quick Reference <ul><li>Use Free Form </li></ul><ul><li>Utilize ILE Techniques </li></ul><ul><ul><li>Procedures </li></ul></ul><ul><ul><li>Binding Directories </li></ul></ul><ul><ul><li>Service Programs </li></ul></ul><ul><ul><li>Exports – Hints & Tips </li></ul></ul><ul><li>Centralize Declarations </li></ul><ul><li>Expand Naming Conventions </li></ul><ul><li>Write Indicatorless Code </li></ul><ul><li>Use Structured Programming Techniques </li></ul><ul><li>Use Comments </li></ul><ul><li>Avoid Obsolescence </li></ul>
    25. 25. What is a Service? <ul><li>Function </li></ul><ul><ul><li>Get information </li></ul></ul><ul><ul><li>Perform action </li></ul></ul><ul><li>Properties </li></ul><ul><ul><li>Encapsulated </li></ul></ul><ul><ul><li>Reusable </li></ul></ul><ul><ul><li>Stateless </li></ul></ul><ul><ul><li>Event driven </li></ul></ul><ul><ul><li>Loosely coupled </li></ul></ul><ul><li>Modular </li></ul>
    26. 26. Implementing Encapsulation <ul><li>Procedure </li></ul><ul><li>Typed parameters </li></ul><ul><ul><li>Input only </li></ul></ul><ul><ul><ul><li>Value </li></ul></ul></ul><ul><ul><ul><li>Const </li></ul></ul></ul><ul><ul><li>Both input and output </li></ul></ul><ul><ul><li>Return value </li></ul></ul><ul><li>Local variables </li></ul><ul><ul><li>Only accessible in procedure </li></ul></ul><ul><ul><li>No side effects </li></ul></ul><ul><li>Subroutine </li></ul><ul><li>Global variables </li></ul><ul><ul><li>All can be modified </li></ul></ul><ul><li>Global variables </li></ul><ul><ul><li>Accessible outside procedure </li></ul></ul><ul><ul><li>Side effects </li></ul></ul>
    27. 27. Reusability <ul><li>Design from business perspective </li></ul><ul><ul><li>What is the business function provided </li></ul></ul><ul><ul><li>Not based on implementation </li></ul></ul><ul><li>Design for future enhancements </li></ul><ul><ul><li>Based on what business function should do </li></ul></ul><ul><ul><li>Not based on current limits </li></ul></ul><ul><li>Input checking </li></ul><ul><ul><li>Do not trust interface user </li></ul></ul><ul><ul><li>Provide meaningful error messages </li></ul></ul>
    28. 28. Stateless <ul><li>State is kept by service user </li></ul><ul><ul><li>Data necessary for request is provided </li></ul></ul><ul><ul><li>Response must contain appropriate data for follow-on requests </li></ul></ul><ul><li>Service may be called by many different users </li></ul><ul><ul><li>Ensure no data carryover </li></ul></ul><ul><li>Pragmatism </li></ul><ul><ul><li>If service will be heavily used with persistent connection: </li></ul></ul><ul><ul><ul><li>Caching of state my improve performance </li></ul></ul></ul><ul><ul><ul><li>Request data overrules use of cached data </li></ul></ul></ul><ul><li>Caution: On RPG Record access to DB – Do not necessarily expect maintained, especially with “1 to M” users. </li></ul>
    29. 29. Event Driven <ul><li>Service does not assume any particular order </li></ul><ul><ul><li>Requests drive service </li></ul></ul><ul><ul><li>Allows new uses for service </li></ul></ul><ul><ul><li>Problems if data is locked between requests </li></ul></ul><ul><li>Service processes request </li></ul><ul><ul><li>Validity checks </li></ul></ul><ul><ul><li>Perform operations </li></ul></ul><ul><ul><li>Sends response </li></ul></ul><ul><ul><li>Frees resources </li></ul></ul>
    30. 30. Loosely Coupled <ul><li>Positive </li></ul><ul><ul><li>Increased flexibility </li></ul></ul><ul><ul><li>More responsive to business changes </li></ul></ul><ul><ul><li>More responsive to technology changes </li></ul></ul><ul><ul><li>Code maintenance </li></ul></ul><ul><li>Negative </li></ul><ul><ul><li>More computationally expensive </li></ul></ul><ul><ul><li>Higher latency </li></ul></ul><ul><ul><li>More parts </li></ul></ul>
    31. 31. Properties Comparison Review – Service <ul><li>Service </li></ul><ul><li>Encapsulated </li></ul><ul><ul><li>Access through interface </li></ul></ul><ul><li>Reusable </li></ul><ul><ul><li>Write once – use everywhere </li></ul></ul><ul><li>Stateless </li></ul><ul><ul><li>Information not retained </li></ul></ul><ul><li>Event driven </li></ul><ul><ul><li>No required order </li></ul></ul><ul><li>Loosely coupled </li></ul><ul><ul><li>Callable from anywhere </li></ul></ul><ul><li>Traditional </li></ul><ul><li>Global data </li></ul><ul><ul><li>Access directly </li></ul></ul><ul><li>Reuse by copy </li></ul><ul><ul><li>Maintain everywhere </li></ul></ul><ul><li>Stateful </li></ul><ul><ul><li>Information retained in job </li></ul></ul><ul><li>Application driven </li></ul><ul><ul><li>Fixed order </li></ul></ul><ul><li>Tightly coupled </li></ul><ul><ul><li>Tied to application </li></ul></ul>
    32. 32. RPG – Traditional vs. Modular Example A Simple Rewrite example for RPG Procedures
    33. 33. Traditional RPG Program.
    34. 34. RPG Modular Business Logic
    35. 36. Web Services and SOA for the RPG Developer on IBM i Dan Hiebert IBM [email_address] Deploy RPG Web Service Business Logic
    36. 37. Agenda <ul><li>Introduction to SOA & Web Services </li></ul><ul><li>Creating RPG Web Service Business Logic. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Deploying/Testing RPG Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Consumption of Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Presentation Layer of Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul>
    37. 38. Deploy RPG Web Service Business Logic <ul><li>Introducing – IBM Web Services Server on i </li></ul><ul><li>Recent Enhancements </li></ul><ul><li>Embedding WS information in Program/Service Program </li></ul><ul><li>Demo – WS-Server (that easy) </li></ul><ul><li>Deep Dive & Scripts </li></ul>
    38. 39. Introducing - IBM Integrated Web Services Server on i <ul><li>Key Features of IBM I Web Services server </li></ul><ul><li>Integrated into IBM i </li></ul><ul><li>WS-Basic Profile – Compliant </li></ul><ul><li>Developed for RPG/COBOL </li></ul><ul><li>Open Source Technology </li></ul><ul><li>Removes Complexities of Web Services for IBM i Developer </li></ul><ul><li>Easy to Use - Web Admin Interface </li></ul><ul><li>IBM i Web Services Test Client </li></ul><ul><li>Externalizes IBM i Program Objects </li></ul><ul><li>Tracing – WS-Message & Program Objects </li></ul><ul><li>Scripting Support </li></ul>
    39. 40. NEW Improvements for YOU! – October/08
    40. 41. Embedding Web services information with RPG on IBM i
    41. 42. RPG Find Customer Example: RPG Find Customer
    42. 43. V5R4 - Enablement
    43. 44. Binding RPG Business Logic to Program/Service Program <ul><li>Service Info embedded with RPG or COBOL program objects (PCML) </li></ul><ul><ul><li>For V6R1 need to recompile specifying: CRTRPGMOD PGMINFO(*PCML *MODULE) CRTCBLMOD PGMINFO(*PCML *MODULE) </li></ul></ul><ul><ul><li>For V5R4 – recompile specifying following option in the source: </li></ul></ul><ul><ul><ul><li>• For RPG H PGMINFO(*PCML:*MODULE) </li></ul></ul></ul><ul><ul><ul><li>• For COBOL PROCESS OPTIONS PGMINFO(PCML MODULE) </li></ul></ul></ul><ul><li>Service Information can alternatively be generated in IFS </li></ul><ul><li>Restrictions: </li></ul><ul><ul><li>Program objects must be ‘Stateless’ </li></ul></ul><ul><ul><li>Further Information - http://www.ibm.com/systems/i/software/iws/ </li></ul></ul>
    44. 45. Externalizing Web services with RPG on IBM i (Demo) - Simplification and Ease of Use
    45. 46. Web Admin: Install Web Service Access Web Admin http:// hostname :2001/HTTPAdmin Click on the Create New Web Services Server link
    46. 47. Web Admin: Install Web Service <ul><li>Step 1: Create the server to run Web services. </li></ul>
    47. 48. Web Admin: Install Web Service <ul><li>Step 2: Select to Install a new Web service </li></ul>
    48. 49. Web Admin: Install Web Service <ul><li>Step 3: What program contains the services ? </li></ul>
    49. 50. Web Admin: Install Web Service <ul><li>Step 4: What should we call this new Web service? </li></ul>
    50. 51. Web Admin: Install Web Service <ul><li>Step 5: What in the ILE program should be externalized as a Web service? </li></ul>
    51. 52. Web Admin: Install Web Service <ul><li>Step 6: Specify User for the Web service </li></ul>
    52. 53. Web Admin: Install Web Service <ul><li>Step 7: Configure IBM i resources for the Web service </li></ul>
    53. 54. Web Admin: Install Web Service <ul><li>Step 8: Ready to deploy the new Web service – Server tab </li></ul>
    54. 55. Web Admin: Install Web Service <ul><li>Step 8: Ready to deploy the new Web service – Server tab </li></ul>
    55. 56. Web Admin: Install Web Service <ul><li>Step 8: Ready to deploy the new Web service – Service tab </li></ul>
    56. 57. Web Admin: Install Web Service <ul><li>Create server - after short period of time (seconds) server created and service deployed </li></ul>
    57. 58. Web Admin: Install Web Service <ul><li>Once created, the server is started and deployed service started </li></ul>
    58. 59. Web Admin: Install Web Service <ul><li>Manage installed Services – view and install new services to this server </li></ul>
    59. 60. Web Admin: Install Web Service <ul><li>View the WSDL file </li></ul>
    60. 61. Web Admin: Install Web Service <ul><li>Manage installed Services – view and install new services to this server </li></ul>
    61. 62. IBM i Web Services Test Client
    62. 63. IWS – Deep Dive
    63. 64. Deep Dive - IBM i integrated Web services server <ul><li>IBM i integrated Web services server </li></ul><ul><ul><li>Based on Apache AXIS2 version 1.3 - runtime </li></ul></ul><ul><ul><li>A set of native service programs and java tools that enable you to build Web service applications from existing ILE RPG/COOBL Programs dynamically generating WSDL and Java Artifacts. </li></ul></ul><ul><ul><li>Supported on V5R4, V6R1 </li></ul></ul><ul><li>IBM i integrated Web services server has the following capabilities: </li></ul><ul><ul><li>Support for Web Services Description Language (WSDL 1.1, supports WSDL 1.2 but right now we are not advertising the fact ) - document literal only </li></ul></ul><ul><ul><li>SOAP 1.1 (Enabled) SOAP 1.2 (Disabled) REST (Disabled) - </li></ul></ul><ul><ul><li>Supports Web Services Invocation (WSI) 1.0 basic profile compliance </li></ul></ul><ul><ul><li>Support for Secure Sockets Layer (SSL) </li></ul></ul><ul><ul><li>Java API for XML-based remote procedure call (JAX-RPC) style implementation </li></ul></ul><ul><ul><li>Support IBM i non-Java languages; RPG, COBOL, [C,C++] </li></ul></ul>
    64. 65. IBM i Web Services Script Support <ul><li>IBM Integrated Web Services Server – Scripts </li></ul><ul><li>GUI avoidance – </li></ul><ul><li>QSHELL environment </li></ul><ul><li>Automate create/deploy </li></ul><ul><li>Deployable applications (ISV’s) </li></ul><ul><li>Example: </li></ul><ul><ul><li>Create 20 servers – use scripts </li></ul></ul><ul><ul><li>Automate RPG/COBOL deployments </li></ul></ul><ul><li>Create/Delete Servers </li></ul>
    65. 66. Server Packaging <ul><li>IBM i integrated Web services server - Server Image </li></ul><ul><ul><li>/QIBM/ProdData/OS/WebServices/V1/server </li></ul></ul><ul><ul><ul><li>Scripts reside in the ../bin directory </li></ul></ul></ul><ul><ul><ul><ul><li>installWebService.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>listWebServices.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>startWebServices.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>stopWebServices.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>uninstallWebServices.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>createWebServicesServer.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>deleteWebServicesServer.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>startWebServicesServer.sh </li></ul></ul></ul></ul><ul><ul><ul><ul><li>stopWebServicesServer.sh </li></ul></ul></ul></ul><ul><ul><li>Axis2 1.3 – Engine Runtime </li></ul></ul><ul><ul><ul><li>/QIBM/ProdData/OS/OSGi/LWI71/runtime/webservicesmax/eclipse/plugins/org.apache.axis2 </li></ul></ul></ul><ul><li>User Web services server </li></ul><ul><ul><li>/www/wservice[*] unless user used script </li></ul></ul><ul><li>4 Jobs Run in QHTTPSVR subsystem </li></ul><ul><ul><li>1 HTTP and 3 Web Service jobs </li></ul></ul>WS Server
    66. 67. Web Services Instance Packaging <ul><li>/www/WSERVICE/lwi/runtime/webservicesmax/eclipse/plugins/WebServicesEngine/WEB-INF/conf/ axis2.xml </li></ul><ul><ul><li><parameter name=&quot;disableREST&quot; locked=&quot;true&quot;>true</parameter> </li></ul></ul><ul><ul><li><parameter name=&quot;disableSOAP12&quot; locked=&quot;true&quot;>true</parameter> </li></ul></ul><ul><ul><li>Examples – Above ws.apache.org for more values. </li></ul></ul><ul><li>Directory - /www/WSERVICE </li></ul><ul><ul><li>/conf – httpd.conf, i5OSStartup.properties </li></ul></ul><ul><ul><li>/htdocs </li></ul></ul><ul><ul><li>/logs - **Important ** Error information </li></ul></ul><ul><ul><li>/lwi/logs - </li></ul></ul><ul><ul><li>/webservices </li></ul></ul><ul><li>Directory - /www/WSERVICE/webservices </li></ul><ul><ul><li>/temp </li></ul></ul><ul><ul><li>/services ** Important ** all customer service artifacts here </li></ul></ul><ul><ul><li>/archive </li></ul></ul>
    67. 68. Web Service Deployment Location <ul><li>Sample - /www/WSERVICE/webservices/services/ConvertTemp </li></ul><ul><ul><li>** Tracing ** ConvertTemp.config – info parms for services </li></ul></ul><ul><ul><li>./META-INF/services.xml - customize </li></ul></ul><ul><li>Generated Java </li></ul><ul><ul><ul><li>../iseries/wsbeans/converttemp </li></ul></ul></ul><ul><ul><ul><li>../iseries/programcall/base </li></ul></ul></ul>
    68. 69. IWS Server Restrictions <ul><li>SOAP 1.1 </li></ul><ul><li>WSDL 1.1 </li></ul><ul><li>PCML (deployment of ILE-based Web services) </li></ul><ul><ul><li>The deploying of ILE programs as Web services is dependent on a Program Call Markup Language (PCML) </li></ul></ul><ul><ul><li>The following data types are not supported by PCML: </li></ul></ul><ul><ul><ul><li>Date </li></ul></ul></ul><ul><ul><ul><li>Time </li></ul></ul></ul><ul><ul><ul><li>Timestamp </li></ul></ul></ul><ul><ul><ul><li>Pointer </li></ul></ul></ul><ul><ul><ul><li>Procedure Pointer </li></ul></ul></ul><ul><ul><ul><li>1-Byte Integer </li></ul></ul></ul><ul><ul><ul><li>8-byte Unsigned Integer </li></ul></ul></ul><ul><ul><li>Return values and parameters passed by value can only be 4 byte integers. </li></ul></ul><ul><ul><li>Varying-length arrays, and data structures containing varying-length subfields are not supported. </li></ul></ul><ul><ul><li>More details regarding RPG and PCML can be found in the ILE RPG Reference . More details regarding COBOL and PCML can be found in the ILE COBOL reference . </li></ul></ul><ul><li>Parameters </li></ul><ul><ul><li>A procedure in an ILE service program (*SRVPGM) that is to be externalized as a Web service operation can have a maximum of 7 parameters. An ILE program (*PGM) can have a maximum of 32 parameters. </li></ul></ul><ul><ul><li>Note: The work around is to create a Data Structure as a parameter which is a single parameter. </li></ul></ul>
    69. 70. Security Discussion <ul><li>Security Concerns </li></ul><ul><li>Messages are being sent over the intranet/internet – Are they Secure? </li></ul><ul><li>Web Services – Security </li></ul><ul><li>HTTP </li></ul><ul><li>WS-Security </li></ul><ul><li>Three Available Security Mechanism’s </li></ul><ul><li>HTTP - SSL encryption and authorization (Certificates) (Basic authorization) </li></ul><ul><li>WS-Security (No support on IBM Integrated Web services server for i) </li></ul><ul><li>IBM Datapower Appliances – (Pretty cool utility) </li></ul>
    70. 71. What is Coming Next – Future Directions? <ul><li>Client Improvements </li></ul><ul><ul><li>WSDL2RPG </li></ul></ul><ul><li>Presentation Layer? (WS-Explorer Client only Customizable) </li></ul><ul><ul><li>JSF or PHP or AJAX? </li></ul></ul><ul><li>Enhance RESTful SOA on the Web services server? </li></ul><ul><ul><li>Enable REST style services for Web Services server </li></ul></ul><ul><li>Performance Improvements? </li></ul><ul><ul><li>Impressive improvements </li></ul></ul><ul><li>Serviceability </li></ul><ul><ul><li>Utility to capture “SOAP/XML” communication for support? </li></ul></ul><ul><li>Migration tool IBM i WS server to WAS Web Service? </li></ul><ul><ul><li>Or to IBM i ;) </li></ul></ul><ul><li>WS-Security specification? </li></ul>
    71. 72. Web Services and SOA for the RPG Developer on IBM i Dan Hiebert IBM [email_address] Consuming RPG Web Service Business Logic
    72. 73. <ul><li>Introduction to SOA & Web Services </li></ul><ul><li>Creating RPG Web Service Business Logic. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Deploying/Testing RPG Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Consumption of Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul><ul><li>Presentation Layer of Web Services. </li></ul><ul><ul><li>Lab Time </li></ul></ul>Agenda
    73. 74. RPG Consuming Web Service Business Logic <ul><li>IBM Integrated Web Services client </li></ul><ul><li>IWS Client / Process </li></ul><ul><li>WSDL </li></ul><ul><li>Stub Generation and Header Files </li></ul><ul><li>Building / Compiling RPG and C code </li></ul><ul><li>Review Process </li></ul><ul><li>Deep Dive </li></ul>
    74. 75. Consuming Web services with RPG on IBM i The Unlimited Potential
    75. 76. Web Services – a client view Definition: Self-Contained with well-defined interfaces that provide functionality that is accessible over the Internet/Intranet Key Technologies : XML, WSDL, SOAP, UDDI RPG web service client RPG FindCustomers
    76. 77. <ul><li>Natural for ILE RPG/COBOL Developer </li></ul><ul><li>4 Step Static Development Process </li></ul><ul><ul><li>Use WSDL to generate Web service proxy code in C </li></ul></ul><ul><ul><li>Build RPG stub code from C proxy code </li></ul></ul><ul><ul><li>Compile/Bind RPG & Web service stub code </li></ul></ul><ul><ul><li>Invoke RPG/COBOL Web service client </li></ul></ul><ul><ul><li>http:// www.ibm.com/systems/i/software/iws / </li></ul></ul>Integrated Web services client for IBM i
    77. 78. Web Services Client for ILE <ul><li>Overview </li></ul><ul><ul><li>Based on Apache AXIS C++ Version 1.5+ </li></ul></ul><ul><ul><li>Consists </li></ul></ul><ul><ul><ul><li>Tools </li></ul></ul></ul><ul><ul><ul><ul><li>Convert service’s WSDL to C/C++ APIs </li></ul></ul></ul></ul><ul><ul><ul><li>SOAP client </li></ul></ul></ul><ul><ul><ul><ul><li>ILE Service Program </li></ul></ul></ul></ul><ul><ul><li>Supported today </li></ul></ul><ul><ul><ul><li>Packaged with 5733-XT1 </li></ul></ul></ul><ul><ul><ul><li>V5R1, V5R2, V5R3, V5R4 </li></ul></ul></ul><ul><ul><li>Availability </li></ul></ul><ul><ul><ul><li>4Q/07 – IBM i SS1 Option 3 </li></ul></ul></ul><ul><ul><ul><li>V5R4 and later </li></ul></ul></ul><ul><li>Supports </li></ul><ul><ul><li>C, C++, RPG, COBOL </li></ul></ul><ul><ul><li>Web Services Description Language (WSDL) - document literal only </li></ul></ul><ul><ul><li>Web Services Invocation (WSI) 1.1 basic profile compliance </li></ul></ul><ul><ul><li>Secure Sockets Layer (SSL) </li></ul></ul>
    78. 79. Web Service Deployment Review
    79. 80. Where to find my WSDL
    80. 81. FindCustomers.WSDL
    81. 83. FindCustomers.WSDL FindCustomers.wsdl
    82. 84. Web Services Client for ILE Step 1: Stub Generation – Creating a Web Services Proxy <ul><li>Developer generates stubs using: </li></ul><ul><ul><li>Java tools (wsdl2ws.jar) </li></ul></ul><ul><ul><li>Qshell script - wsdl2ws.sh -lc STOCKQ.wsdl </li></ul></ul>WSDL passed into tool that generates C/C++ stubs C/C++ stubs Web Service Provider WSDL
    83. 85. FindCustomersPortType.h
    84. 86. FINDCUSTOMERSInput.h
    85. 87. 1 2 3
    86. 88. 4 5
    87. 89. 6 7 8 9 10
    88. 90. http://www.ibm.com/systems/i/software/iws
    89. 91. RPG Call Find Customers Program
    90. 92. Quick Review of Steps <ul><li>Process to Run RPG Web Service: </li></ul><ul><li>Stub Generation – Creating a Web Services Proxy (“intermediary” for ILE RPG, COBOL ) </li></ul><ul><li>Use Stubs to build RPG prototypes </li></ul><ul><li>Compile/Bind and Invocation </li></ul><ul><li>Run Program </li></ul><ul><li>Prerequisites </li></ul><ul><ul><li>C++ Compiler (Compiler - ILE C++, licensed program product ID 5722WDS, option 52) </li></ul></ul><ul><ul><li>Java (IBM Developer Kit for Java, JDK 1.4, licensed program product ID 5722JV1, option 6)= </li></ul></ul><ul><ul><li>C Compiler (Compiler - ILE C, licensed program product ID 5722WDS, option 51) </li></ul></ul><ul><ul><ul><li>Only needed if generating C stubs </li></ul></ul></ul>
    91. 93. Web Services Client for ILE Step 2: Compile/Bind and Invocation <ul><li>Create the application that uses the stubs to invoke the Web service </li></ul>Client Application C/C++ stubs (service, method) Axis Client Server Call/Return Call/Return SOAP Request SOAP Response
    92. 94. IBM Web Services Client – Deep Dive - Configuration
    93. 95. IBM i integrated Web services client <ul><li>IBM i integrated Web services client </li></ul><ul><ul><li>Based on Apache AXIS C++ Version 1.5 </li></ul></ul><ul><ul><li>A set of native service programs and java tools that enable you to build Web service client applications from existing Web Service Description Language (WSDL) files by generating C/C++ stubs </li></ul></ul><ul><ul><li>Supported on V5R4, V6R1 </li></ul></ul><ul><li>IBM i integrated Web services client has the following capabilities: </li></ul><ul><ul><li>Support for Web Services Description Language (WSDL) - document literal only </li></ul></ul><ul><ul><li>Supports Web Services Invocation (WSI) 1.0 basic profile compliance </li></ul></ul><ul><ul><li>Support for Secure Sockets Layer (SSL) </li></ul></ul><ul><ul><li>Java API for XML-based remote procedure call (JAX-RPC) style implementation </li></ul></ul><ul><ul><li>Support IBM i non-Java languages; C, C++, RPG, COBOL </li></ul></ul>
    94. 96. IWS – client - packaging <ul><li>Product install directory is / QIBM/ProdData/OS/WebServices/V1/client </li></ul><ul><ul><li>bin/ contains wsdl2ws.sh tool to generate stubs (calls wsdl2ws.jar) </li></ul></ul><ul><ul><li>docs/ contain PDF document and API docs </li></ul></ul><ul><ul><li>etc/ contains empty configuration file axiscpp.conf </li></ul></ul><ul><ul><li>include/ contains header files </li></ul></ul><ul><ul><li>lib/ contains service program symbolic links </li></ul></ul><ul><ul><li>prereqs/ contains jar files needed by wsdl2ws tool </li></ul></ul><ul><ul><li>samples/ contains sample code </li></ul></ul><ul><ul><li>WSDL2Ws/ contains wsdl2ws.jar that generates stubs </li></ul></ul><ul><li>Product install library is QSYSDIR </li></ul><ul><ul><li>QAXIS10C.SRVPGM => SOAP Engine </li></ul></ul><ul><ul><li>QAXIS10HC.SRVPGM => HTTP Channel </li></ul></ul><ul><ul><li>QAXIS10HCS.SRVPGM => HTTP Channel SSL </li></ul></ul><ul><ul><li>QAXIS10HT.SRVPGM => HTTP Transport </li></ul></ul><ul><ul><li>QAXIS10X.SRVPGM => XML Parser </li></ul></ul>
    95. 97. Questions?
    96. 98. Trademarks and Disclaimers 8 IBM Corporation 1994-2007. All rights reserved. References in this document to IBM products or services do not imply that IBM intends to make them available in every country. Trademarks of International Business Machines Corporation in the United States, other countries, or both can be found on the World Wide Web at http://www.ibm.com/legal/copytrade.shtml . Intel, Intel logo, Intel Inside, Intel Inside logo, Intel Centrino, Intel Centrino logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both. IT Infrastructure Library is a registered trademark of the Central Computer and Telecommunications Agency which is now part of the Office of Government Commerce. ITIL is a registered trademark, and a registered community trademark of the Office of Government Commerce, and is registered in the U.S. Patent and Trademark Office. UNIX is a registered trademark of The Open Group in the United States and other countries. Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others. Information is provided &quot;AS IS&quot; without warranty of any kind. The customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Information concerning non-IBM products was obtained from a supplier of these products, published announcement material, or other publicly available sources and does not constitute an endorsement of such products by IBM. Sources for non-IBM list prices and performance numbers are taken from publicly available information, including vendor announcements and vendor worldwide homepages. IBM has not tested these products and cannot confirm the accuracy of performance, capability, or any other claims related to non-IBM products. Questions on the capability of non-IBM products should be addressed to the supplier of those products. All statements regarding IBM future direction and intent are subject to change or withdrawal without notice, and represent goals and objectives only. Some information addresses anticipated future capabilities. Such information is not intended as a definitive statement of a commitment to specific levels of performance, function or delivery schedules with respect to any future products. Such commitments are only made in IBM product announcements. The information is presented here to communicate IBM's current investment and development activities as a good faith effort to help with our customers' future planning. Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon considerations such as the amount of multiprogramming in the user's job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve throughput or performance improvements equivalent to the ratios stated here. Prices are suggested U.S. list prices and are subject to change without notice. Starting price may not include a hard drive, operating system or other features. Contact your IBM representative or Business Partner for the most current pricing in your geography. Photographs shown may be engineering prototypes. Changes may be incorporated in production models.

    ×