What is integrated Web services for IBM i?
The integrated Web services for IBM i support is a term to describe the following technologies that are part of IBM i:
- The integrated Web services server
- The integrated Web services client for ILE
The integrated Web services server is a fully functional Web services server in which ILE-based program objects can be deployed as Web services.
The integrated Web services client for ILE allows ILE-based applications to act as Web service clients by generating RPG, C or C++ stubs that can be invoked by an ILE program. The stubs remove the complexity of the Web service protocol by taking care of serializing and deserializing Web service requests and responses.
Why would I want to use integrated Web services for IBM i?
Web services and SOA is the key to flexible information technology (IT) infrastructure, allowing businesses to be more flexible and responsive. For those of you who are already on the path to Web services and SOA using WebSphere Application Server and related technologies, there probably is no reason to use integrated Web services server. But for the rest of you who have been tackling issues such as lack of skills, resources (system and human), and time, this technology is for you.
The integrated Web services server and the integrated Web services client for ILE enables ILE applications to play in the Web services and SOA arena with very little effort, knowledge and resources. The convergence of Web service and IBM i technologies can help enterprises liberate these core business assets by making it easier to enrich, modernize, extend and reuse them well beyond their original scope of design.
How can I obtain Integrated Web Services for i?
The following prerequisites are required to be installed on the system in order to use the Integrated Web Services for IBM i support:
- Extended Base Directory Support - base option 3 of operating system
- Host Servers - base option 12 of operating system
- System Openness Includes – base option 13 of operating system (only needed for web services client)
- Qshell - base option 30 of operating system
- PASE - base option 33 of operating system
- Digital Certificate Manager - base option 34 of operating system
- IBM HTTP Server for IBM i
- IBM Technology for Java SE 7 32 bit (IBM i 7.1, i 7.2, and i 7.3)
- IBM Technology for Java SE 8 64 bit (IBM i 7.4, recommended for previous releases in addition to Java SE 7 32 bit )
After loading the products, ensure you load the latest HTTP group PTF.
What is the Web services engine based on?
Version 2.6 or above of the integrated web services (IWS) server is based on the IBM WebSphere Application Server Liberty Profile’s web service engine.
Version 1.3 and 1.5 of the IWS server uses a web service engine that is based on Apache Axis2. It is recommended that users use the web service engine based on the Liberty profile since versions 1.3 and 1.5 of the server will not work beyond release IBM i 7.2.
What is the difference between the integrated Web services server and WebSphere Application Server?
Starting with IWS version 2.6, the base Web services support between IWS and the IBM WebSphere Application Server is the same. Prior to 2.6, the base Web services engine in the integrated Web services server is comparable to that used in WebSphere Application Server V6.1, V7, and V8 with the main difference being the deployment model.
In addition, the WebSphere Application Server supports much more of the Web services standards such as Web Services Reliable Messaging (WS-RM) and WS-Security 1.1.
How do I enable SSL?
When an Integrated Web Services server is created, a corresponding HTTP server is also created. You will need to enable SSL for the HTTP server and go through the port exposed by the HTTP server when invoking a web service operation. If you by-pass the HTTP server and go directly to the Integrated Web Services server ports, you will need to use the Configure SSL wizard in the Web Administration GUI to enable SSL for the web services server.
How do I improve performance of the integrated Web services server?
When looking at improving performance, one needs to look at the entire web environment. In this context, a web environment is a grouping of related web server, application server, and operating system settings that form a web solution. This includes any web services running in the application servers (i.e. integrated web services servers).
The Integrated Web Services Server Administration and Programming Guide has a chapter on performance tuning. In general, the following lists some of the most critical performance attributes associated with the Web services server:
The following lists some of the most critical performance attributes associated with the HTTP Server:
Another factor that can affect performance is the default TCP/IP send and receive buffer sizes.
What standards are supported by the server?
WSDL 1.1 is the only supported WSDL level. SOAP 1.1 and SOAP 1.2 are the only supported over-the-wire protocol. The Integrated Web Services server does not support any SOAP quality of service extensions, such as WS-Security and WS-Policy.
The Integrated Web Services server supports web services based on REST principles.
Are there any limitations or restrictions on program parameters and data types?
The deploying of ILE programs as web services is dependent on a Program Call Markup Language (PCML) document describing the procedures to be externalized as web service operations. There is a list of PCML restrictions regarding parameter and return value types:
- The following data types are not supported by PCML: Date, Time, Timestamp, Pointers, 1-Byte integers, and 8-byte unsigned integers
- Return values and parameters passed by value can only be 4-byte integers
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 on IBM i 6.1 and 255 parameters on IBM i 7.1 and subsequent releases.
Character fields must not exceed 16700000 bytes.
What programming language does the integrated language environment (ILE) program object have to be written in so I can deploy it as a service in the integrated Web services server?
You can write the ILE program object in ILE RPG, COBOL, and C. In addition, the program object can be written in C++ as long as the exported procedures are not C++ interfaces and the program object is a service program.
How can I create a COBOL or RPG program object so that the PCML is stored as part of the program object?
There are two ways to store PCML data as part of the module (*MODULE) object. The first way is using the PGMINFO parameter as follows:
RPG: CRTRPGMOD PGMINFO(*PCML *MODULE) COBOL: CRTCBLMOD PGMINFO(*PCML *MODULE)
The second way is to add the following codes to the source of the module:
RPG: H PGMINFO(*PCML:*MODULE) COBOL: PROCESS OPTIONS PGMINFO(PCML MODULE)
Can I copy deployed web services on version 1.3 or 1.5 server to latest server?
Web services can be copied from earlier versions of an integrated web services (IWS) server to a more recent version by using the saveWebServices.sh and restoreWebServices.sh scripts located in the /qibm/proddata/os/webservices/bin directory. See the migration support document for more information.
It is highly encouraged that customers transition to the new server as soon as they are able to since the old server runtime and web services engine is not supported on IBM i 7.3.
Can I move the service that is deployed on the integrated Web services server to WebSphere Application Server?
At this time it would require some effort to do so. The Java beans and associated configuration files that are used to represent the ILE-based Web service would need to be packaged in the proper format expected by WebSphere in order for the Web service to be deployed.
Can I deploy Java-based Web services?
You cannot deploy Java-based Web services in the IWS server. The IWS server is used to deploy ILE program objects as web services. However, you can deploy web services written in Java that use either the JAX-WS to JAX-RS standards in the integrated application server version 8.5 or newer. In order for you to do this you will need to go bring up the Features tab in the server properties and add the jaxrs feature (e.g. jaxrs-1.1) or the jaxws feature (e.g. jaxws-2.2). Both features can also be added if you want to server up SOAP and REST web services.
What is the Web services client for ILE based on?
The integrated Web services client for ILE is based on Apache Axis C++.
What standards does the integrated Web services client for ILE support?
The Web services client for ILE supports:
What programming language does the ILE client application have to be written in to use the stubs generated by the wsdl2ws.sh tool?
You can write the ILE Web service client applications in the following ILE programming languages: RPG, COBOL, C and C++.
Are there any limitations or restrictions on the WSDL file or the client library?
The following items needs to be taken into consideration when using the client library:
- Handlers – Support is given for global and service handlers only. Handlers must only access the SOAP header. Accessing any other element using the available API's will lead to undetermined behavior. Handlers must be written in C++.
- All date time objects – Dates sent and received must be after midnight 1st January 1970.
- Attachments – Attachments are not supported.
- Encoding styles – Document literal is the only supported encoding style.
- Code page – WSDL's used against the Integrated Web Services client for ILE tooling (WSDL2Ws) must be encoded throughout using UTF-8. In addition, the response from the server must be in UTF-8 format.
- WSDL definitions – Any WSDL's used must define one and only one service with one and only one port type.
- Wildcard schema components – The namespace and processContents attributes on xsd:any are not supported. This gives support equivalent to setting namespace="##any" and processContents="skip".
- Schema types and constructs – The schema-related types and constructs are not supported:
- The use of "ref" inside WSDL schemas
- The use of xsd:union in type definitions
Complex content extensions is not supported. There is limited support for simple content extensions. Schema types with same name but are in different name spaces is not supported unless the schema types are defined in exactly the same way.
When generating RPG stubs, elements that are defined with the same set of letters but in different case is not supported since RPG is a case-insensitive language.
10 January 2020