IBM Impact session CICS & java a tale of liberty

Embed Size (px)

Citation preview

PowerPoint Presentation

CICS & Java: A Tale of Liberty

Please Note

IBMs statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBMs sole discretion.

Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision.

The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion.

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 many factors, including considerations such as the amount of multiprogramming in the users 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 results similar to those stated here.

Introduction to the JVM Server

CICS JVM Server - Aims

Provide new APIs for Java applications deployed into CICS

Enable porting of JEE applications to CICS from other application servers

Update CICS to provide same features and functions as WebSphere Liberty Profile

Priority to API based functions

Support QoS features and integrate with CICS as required

Keep up to date with Liberty service stream

Continue to provide a robust JVM hosting environment for other components and services

ODM, SAML

PHP, Modern Batch, Mobile

JVM server environments V4/V5

Axis2

OSGi bundles

OSGi bundles and
Liberty Web

DynamicScripting

OSGi enabled

CLASSPATH

Mobile

ModernBatch

SAML

Initial PgmDPL

Web/JEE

JAXWS

Web/PHP

ODM

Programming in Java - JCICS API

JVM server - runtime

Dispatcher

LE Enclave

JVM Server

JVM

LE Enclave

JVM Server

JVM

thread

thread

Pool of T8 TCBs

Pool of T8 TCBs

pthread

pthread

pthread

thread

pthread

CICS Region

pthread

JVM server OSGi Framework

Class Loading

Each bundle has its own loader

No flat classpath

Class sharing and visibility decided by declarative dependencies, not by class loader hierarchies

OSGi framework works out the dependencies including versions

OSGi bundle dependencies

Bundle

Bundle

Package

Class

Class

Class

Package

Class

Class

Class

Package

Class

Class

Class

Package

Class

Class

Class

Explicit exports

Explicit dependencies

Manifest-Version: 1.0

Bundle-ManifestVersion: 2

Bundle-Name: MyService bundle

Bundle-SymbolicName: com.sample.myservice

Bundle-Version: 1.0.0

Bundle-Activator: com.sample.myservice.Activator

Import-Package: com.something.i.need;version="1.1.2"

Export-Package: com.myservice.api;version="1.0.0"

OSGi Bundle Manifest

Bundle-Version: Multiple versions of bundles can live concurrently.

Import-Package: What packages from other bundles does this bundle depend upon?

Export-Package: What packages from this bundle are visible and reusable outside of the bundle?

OSGi bundle deployment

Bundle Directory

Jar File

z/OS

CICS region

Unix System Services

Eclipse IDE

packageexamples.hello

public class HelloWorld
{

public static voidmain(Stringargs[])
{System.out.printIn("HelloCICS");
}

}

CICS Explorer SDK

CICS Bundle Project

OSGi Bundle Project

Workstation

BUNDLE definition

JVM Server

OSGi bundle

Middleware Bundles

Export to USS

Comparing 'pooled' with JVM server

Traditional pooled JVMs

Multiple JVMs in a CICS region

Single-thread, program isolation

J8 (CICS Key) or J9 (User key) TCBs

MAXJVMTCBs in SIT

No JVM definition except in JVM profile via PROGRAM

EJB and CORBA support

New JVMSERVERs

Supports JCICS interfaces for CICS Java programs

Can have multiple JVM Servers per region

Multi-threaded, up to 256 parallel tasks

Facilitates data-sharing between Java applications

Industry-standard

T8 TCBs

Requires deployment as OSGi bundle within a CICS BUNDLE

Introduction to the CICS Java Web Container

What is Liberty?

Liberty is...

A LIGHTWEIGHT

COMPOSABLE

FAST

of WebSphere Application Server

'Profile'

Liberty is...

If this is tWAS...

...this is Liberty (WAS)

...so is this

...or even this!

Liberty is...

This is the entire configuration needed to run Liberty as a Web-container with Servlet support.

... YOU compose the runtime from the 'Features' you want.

... not the ones you don't.

Liberty in CICS JVM server

25/04/14

Explorer SDK

CICS

Liberty

JVM server

Web Client

HttpRequest

HttpResponse

URIMAP

Web App

Export Wizard

CICS Bundle

EBA

Deploy

install

server.xml

JVMProfile

Tran ID

security

Web.xml

OSGibundle

COBOL

Web App

EBA

VSAM

DB2

Application deployment Liberty JVM server

Explorer SDK

CICS Bundle resource

WAR, EBA

Liberty dropins directory

Liberty application definition

Liberty bundle repository

Explorer SDK

CICS

Liberty

JVM server

WAR

Export Wizard

CICS Bundle

EBA

Deploy

install

EBA

Aplicationdefinitions

Bundlerepository

OSGibundle

Dropins directory

OSGibundle

Web App

EBA

Applicationdefinition

Configuring Liberty in CICS

1. Create JVM server

Set WLP variables in JVM profile

Enable autoconfiguration system property

2. Start JVM server

Creates zFS Liberty directory structure

Creates Server.xml

HTTP and HTTPS listeners

DB2 driver configuration

3. Deploy applications

CICS bundles

Liberty dropins

Liberty application defintions

4. Remove autoconfiguration

Edit server.xml

Customise .. security

CICS TS V5.1 offers a fast and lightweight Java web container, providing developers with the rich features of the Java Servlet and JavaServer Pages (JSP) specifications, and fast local access to your existing CICS applications and data. Built on WebSphere Application Server Liberty technology, this web container runs in the CICS JVM server environment. A wide range of Java development tools can be used to develop web applications, such as WebSphere Application Server Developer Tools for Eclipse (WDT), and Rational Developer for System z.

FAST. LIGHTWEIGHT. LOCAL.

Web App

CICS

Liberty

JVM server

CICSResources

Web Client

HttpRequest

HttpResponse

Benefits for CICS

Provides off the shelf Web-server capabilities (JSPs and Servlets)

Potential to re-use even more WebSphere technology in CICS.

JSP and Web servlets have direct, local, access to CICS data and resources.

Servlets can take advantage of existing CICS OSGi applications to provide a Dynamic Web front end.

Oct 2012

CICS Liberty Roadmap - 2014

WAS 8.5.0

Liberty profile

WAS 8.5.5

Liberty core

Liberty base

EJB, JMS, clusterring, jax-ws

2013

2012

CICS TS V5.1

Liberty 8.5.0

Servlet/jsp

Explorer SDK for Web

2014

CICS TS V5.2 open beta

Liberty 8.5.5.1

JTA

JDBC

zosSecurity, appSecurity

jndi,

2Q12

WAS 8.5.0.1

WAS 8.5.0.2

WAS Liberty Vnext alpha

JCA 1.6

Web sockets

EJB 3.2

..

April 2013

2Q13

4Q2012

2Q2013

Oct 2013

V5.1APAR PM91667Liberty 8.5.5

V5.1 APAR PM85279JAX-RS, JSON

V5.1 APAR PM80214Liberty 8.5.0.1EBA support

WAS 8.5.5.1

WAS 8.5.5.2

Nought to Web-App

.

1) Create a JVM server resource in Explorer, CEDA, or CPSM.

2) Configure the JVMProfile- Copy the sample DFHWLP - Check JAVA_HOME is correct.- Uncomment the WLP_SERVER_HTTP_PORT and choose a unique port number.- Point your JVM server definition at the new JVMProfile

3) Enable the JVM server

!

4) Liberty is running! (check the logs).

Server defaultServer created.Launching defaultServer (wlp-1.0.0.20120428-1251/websphere-kernel_1.0.0) on IBM J9 VM, version pmz6470sr1-20120302_01 (SR1) (en_US)[AUDIT ] CWWKE0001I: The server defaultServer has been launched.[AUDIT ] CWWKG0028A: Processing included configuration resource: file:/u/ivanh/IYK3ZIH1/LIBERTY1/wlp/usr/servers/defaultServer/installedApps.xml[AUDIT ] CWWKG0028A: Processing included configuration resource: file:/u/ivanh/IYK3ZIH1/LIBERTY1/wlp/usr/servers/defaultServer/cicsSecurity.xml[AUDIT ] CWWKZ0058I: Monitoring dropins for applications. [AUDIT ] CWWKF0011I: The server defaultServer is ready to run a smarter planet.

5) Install Eclipse 3.6.2 - preferably JEE version, but Classic will suffice.

http://www.eclipse.org/downloads/packages/release/helios/sr2

6) Install IBM CICS SDK for WebSphere Application Server Liberty profile v5.1

7) Create a Dynamic Web Project, or choose one of the Examples

8) Export the CICS bundle project

9) Pick a zFS location for the CICS bundle project

10) Create a CICS bundle definition to control the life-cycle of the Application

11) Install the CICS bundle definition

12) Run the application!

[AUDIT ] CWWKT0016I: Web application available (default_host): http://winmvs2c.hursley.ibm.com:27245/com.ibm.cics.server.example.wlp.tsq.web/

zFS

zOS

App

App

App

CICS

Liberty

JVM server

Deploy

Eclipse with Liberty Tools

Use

CICSResources

Enable

Putting it all together

The Technology

Now let's get a little more technical .

As little customization as we can get away with.

Do things the Liberty way first, and if appropriate, only the Liberty way.

Ensure Server.xml can be configured dynamically by the user.

Support Liberty monitored drop-ins directory for applications.

Provide CICS enhancements only where absolutely necessary (Security, Tasks, JDBC, MQ)

Provide End-to-end Development and Deployment experience to enable non-mainframe professionals to develop for CICS.

Fully compatible with existing CICS OSGi Java applications running within the same JVM server.

Specifications

Java 7 (64-bit)

Equinox 3.7 as the OSGi framework.

Implements the OSGi R4.3 specification

WAS Liberty Profile 8.5.5

IBM CICS SDK for WebSphere Application Server Liberty profile v5.2

Eclipse 3.6.2

Hybrid Threads

'Standard' CICS Listener Pattern

Thread.start equivalent (from Java concurrency package)

A standard Java pattern for dispatching runnable code to threads.

CICS provides CICSExecutorService - to create CICS capable threads.

CICSExecutorService registered with OSGi registry, can be obtained and used by 'vendor' products and applications.

A convenience method provided called CICSExecutorService.runAsCICS()

Liberty requests an ExecutorService from the OSGi service registry.When running in CICS JVM server, it is given the CICSExecutorService which produces JCICS enabled threads for Liberty to run servlets on.

JCICS ExecutorService

Each 'Invocation' (think Servlet Request) on a Hybrid Thread is also a CICS Transaction (Has a Tranid, Task Context etc).

This gives you

A single common Transaction (UOW) and CICS Managed JDBC

Which can cross between Java and Cobol

Full JCICS API Access

In particular, LINK and access to VSAM

WLM (CICS WLM, Performance Classes etc).

Monitoring / Statistics

CICS Transaction Tracking / Association Data

Benefits of Hybrid Threads

CICS TS V5.2 Liberty runtime extensions

Liberty 8.5.5

Integrated and optimized for CICS Web workloads

JEE RolesRACF keyringsLTPA single signonForm based securitySSL client authenticationTrust Association Interceptors

Security

JTA

JDBC

JNDI naming
DB2 DataSource

Java globaltransactions

IBM Java SDK V7.1

WAS/Liberty feature set

Application Manager

HTTP Transport

Feature Manager

New in Liberty 8.5.5

CICS/Liberty feature set - CICS TS V5.2

Feature Manager

Application Manager

HTTP Transport

CICS TS V5.1

cicsts:security-1.0

cicsts:jdbc-1.0

CICS TS V5.2

cicsts:security-1.0

jndi

beanvalidation

appSecurity

jdbc

zosSecurity

jaxws

CICS Security with Liberty Profile

Servlets run under default transaction CJSA with CICS default user.

SEC=YES turns Security ON.

Basic-auth only (http or https) Client cert not yet supported.

Client Application: Web.xml needs to run with Security

Liberty: Server.xml will be updated by CICS automatically

Role based Security not supported.

URIMAP enhancements

URIMAP provides CICS authorisation via Transaction Security

URIMAP allows context switch to a 'user' transaction

Transaction Security (URL mapped to transaction)

monitoring and audit purposes.

Transaction class support

Web App

CICS

Liberty

JVM server

Web Client

HttpRequest

HttpResponse

SEC=YES

Web.xml

401 - not auth403 not allowed500 error503 - DisabledOK

URIMAP

Tran

Summary and Future

Liberty Features in CICS

8.5.0

appSecurity

Bean validation

Blueprint

CICS security

JAX-RS

JDBC (Type 2 and Type 4 DataSource)

JNDI

JPA Java persistence architecture

JSF

JSON

JSP

JTA Transactions

Local JMX, Monitoring, REST connector - JMX

SSL ( RACF keyrings)

Servlet

Session datasource HA for http sessions

Server status

WAB

z/OS workload management

z/OS Security

z/OS transaction management

8.5.5

CDI & managedBeans - CDI applications

collectiveController/clusterMember - clustering

Webcache/ distributedMap - dynacache

EJBLite local EJB

JAXWS and JAXB Web services

WS-Security Security for JAX-WS

ldapRegistry LDAP security registry

JMS (jmsMdb, wasJmsClient, wasJmsSecurity)

MongoDB file base d/b

Oauth security trust

Osgiconsole debug for OSGi

Timedoperations timeout of jdbc calls

IBM Confidential

V5.1

V5.1 APARs

V5.2

CICS TS V5.2 Liberty/Java function

Java

Java7.1

Improved performance on EC12

Flexible SDK toleration:

Java 7.0 or Java 7.1

Optimized EI domain internal tracing

significant improved performance at level 1

New Liberty features

JNDI, bean validation, jdbc, appSecurity, jaxws, jaxb

Security integration

RACF keyrings for SSL

Liberty standard authentication mechanisms

JDBC

Type 2 data sources and JNDI support

Type 4 data sources for remote databases

JTA

UserTransaction API integration

-> Provides transactional integration for CICS UOW and Type4 JDBC

Java Transaction API

Support for UserTransaction API in servlet/Web applications in CICS

Integration of JTA UserTransaction with CICS UOW/syncpointing

Two phase commit for Liberty Web applications

Liberty will be TM, and CICS UOW will be restricted to DPL subset

Integration with CICS RM provides single CICS UOW for

VSAM

TS/TD etc

CICS DB2

MQ

Type4 JDBC (Derby, DB2 etc)

Enabler for future transactional features such as EJB

Java Transaction API (JTA)

CICS TS 5.2 beta

TransactionManager

CICS JavaApplication

CICSXAResource

Database

Liberty JVM server

OT Domain

RM Domain

JTA provides coordination of updatesacross CICS UOW and a remote XA Resources:

JDBC type 4 database driver

T4 d/bdriver

JDBC

Support JDBC DataSource API and JNDI definitional model for type 2 (local) DB2 connections and type 4 remote JDBC databases.

DataSource interface as API for defining databases and acquiring d/b connections

Prereqs JNDI directory service for lookup of data sources

DriverManager remains supported

DataSource and JNDI only supported in Liberty JVM server

Type 2

Integrate with CICS DB2CONN for security and UOW support

Does not require JTA for UOW support in CICS

Type 4

Uses Liberty JDBC feature

Requires JTA for UOW integration with CICS

JDBC Data source server.xml

cicsts:jdbc-1.0

CICS TS V5.2 Liberty Security

RACF keyrings for SSL

SSL keyrings can be stored in RACF

SSL client certs can be used for authentication

Integration of zosSecurity feature with cicsts:security-1.0 feature

AppSecurity feature

Extended authentication optionsHTTP basic authentication

Form logon

TAI/ JAAS

SSL client authentication

Customer user registry

New authorisation options:JEE roles

EJB roles (RACF)

SynctoOSthreadUSS security

CICS Transaction and Resource security

Authenticated userid is set as Task ACEE

Used for CICS Transaction and Resource security checks

Not used in monitoring (CMF), or task association, or GLUEs/TRUES

Liberty JVM server security

WLP Angel process used to control access to MVS authorized services

Password authentication

Role authorization (EJBROLEs)

All WLP application security options supported in CICS TS V5.2

WLP Authentication cache provides significant performance improvement compared to V5.1

Single sign on (SSO) via LTPA cookiesSupports a security cluster

Can include Liberty JVM servers, WAS or WLP instances that share the same ltpa key store

Pluggable authenticationTrust association interceptor (TAI)

JAAS login modules

Summary of benefits

Local. Lightweight. Fast. Web Applications run locally in CICS with direct access to CICS data and resources. No adapters, no converters, same address space.

Standard tools for developers. Familiar, industry standard tools with Eclipse and Dynamic Web Projects. CICS Explorer SDK enhances the deployment experience.

Portable. Presentation logic in Servlets, business logic in OSGi bundles. Servlets are portable across runtimes. Bundles provide componentization.

Modular design. Architected in a modular way using OSGi, the server only enables and starts the features required by the applications and configuration. If you're not using a feature, it won't start in your server runtime

Dynamic runtime. Features can be added to the server dynamically, using the OSGi framework, while the server is running, with zero downtime and server restarts. Similarly server and application config can be updated without the need to restart.

Eclipse based tools. The eclipse tools for the Liberty Profile are small and very well integrated with the Liberty Profile environment

V5.1 - Security credentials provided by basic-auth (http or https) or URIMAP.

V5.2 beta Form logon, SSL client cert mapping, TAI

CICS transaction security pre-requisites:

SEC=YES (triggers JVM server to add 'CICS' UserRegistry to Liberty)

Optional use of URIMAP to switch to 'user transaction'

in server.xml must be present (CICS bundle deployed apps always get this added when SEC=YES)

in Client application web.xml must be present ( Explorer SDK provides emamples/template)

CICS Security with Liberty Profile

....and you probably don't want just anyone accessing your data. So you'll want to switch Security ON. By default, all Liberty servlets run under the CJSA transaction as CICS default User. To allow authentication as another user, you need to configure the Web Application itself with a Security constraint. When a servlet is secured, Liberty knows to ask CICS to authenticate the user. A basic-auth challenge is issued. It can be secured with SSL, but we don't support client-side certificates yet.

Nor do we support Role Security.

Liberty Features (as of WAS 8.5.0)

Bean validation

Blueprint

Java Database Connectivity (JDBC)

Java Management Extensions (JMX)

Java Persistence API (JPA)

JavaServer Faces (JSF)

JavaServer Pages (JSP)

JAX-RS, JSON

Secure Sockets Layer (SSL)

Security, supported by either the basic user registry or a Lightweight Directory Access Protocol (LDAP) user registry

Servlet

Web application bundle (WAB)

Web security

zOS Security

zOS Transactions

Liberty Features ( for CICS TS V5.1 GA)

Bean validation

Java Database Connectivity (JDBC) via CICS DB2 Connection

Java Management Extensions (JMX)

Java Persistence API (JPA)

JavaServer Faces (JSF)

JavaServer Pages (JSP)

Secure Sockets Layer (SSL)

Security, supported by either the basic user registry or a Lightweight Directory Access Protocol (LDAP) user registry

Servlet

Web security

Blueprint Fix Pack 1 APAR PM80214

Web application bundle (WAB) Fix Pack 1 APAR PM80214

JAX-RS APAR PM85279

JSON APAR PM85279

Real users speaking about CICS

3072 CPSM Optimized Workload Routing

Weds: 14.15, Delfino 4005

2880: Tales from the trenches

Weds: 15.45, Delfino 4005

3073: z/OS & CICS Consolidation project

Weds: 13.00, Delfino 4005

2436: Modernizing the mainframe

Thurs: 10.30, Delfino 4005

1966: Best practices for CICS SOA Connectivity Weds: 13.00, Delfino 4102

Follow us

CICSbuzzibm.com/cics/news

CICS Hursley

ibmcics

@ibm_cics

ibmcics

CICS Hursley

Visit us at

Lost?

System z Software Solutions Suite

Toscana 3609
Monday 11:00 18:00
Tuesday & Wednesday 8:00 18:00
Thursday 8:00 16:00Book your appointment at ibm.biz/zsolsuitePlus Lunch & Learns 12:00 13:00 daily book a slot!

System z Peds

Infrastructure Matters zone of the EXPOMonday 10:00 19:30
Tuesday 10:00 19:30
Wednesday 10:00 14:30Pop by for a chat about CICS!

Dazed and confused about CICS or z at Impact?Visit the zConcierge - System z Software Solutions Suite - Toscana 3609

Generation z

No sales pitches, no marketing, just drinks with other Generation zs

19:30 Wednesday April 30

Public House, The Venetian

[noun] those with under 10 years experience on the mainframe

Follow us:

Join us:

Meet us:

@ibmgenz

System zStack Exchange

Build a community of like-minded people

Get the lowdown on whats going on

Win a CICS Workshop!

Collecting CICS session stickers for your entry?

Dont forget to pick one upbefore you go!

Questions?

We Value Your Feedback

Dont forget to submit your Impact session and speaker feedback! Your feedback is very important to us we use it to continually improve the conference.

Use the Conference Mobile App or the online Agenda Builder to quickly submit your survey

Navigate to Surveys to see a view of surveys for sessions youve attended

Thank You

Legal Disclaimer

IBM Corporation 2014. All Rights Reserved.

The information contained in this publication is provided for informational purposes only. While efforts were made to verify the completeness and accuracy of the information contained in this publication, it is provided AS IS without warranty of any kind, express or implied. In addition, this information is based on IBMs current product plans and strategy, which are subject to change by IBM without notice. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this publication or any other materials. Nothing contained in this publication is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software.

References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. Product release dates and/or capabilities referenced in this presentation may change at any time at IBMs sole discretion based on market opportunities or other factors, and are not intended to be a commitment to future product or feature availability in any way. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.

If the text contains performance statistics or references to benchmarks, insert the following language; otherwise delete:
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 many factors, including 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 results similar to those stated here.

If the text includes any customer examples, please confirm we have prior written approval from such customer and insert the following language; otherwise delete:
All 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.

Please review text for proper trademark attribution of IBM products. At first use, each product name must be the full name and include appropriate trademark symbols (e.g., IBM Lotus Sametime Unyte). Subsequent references can drop IBM but should include the proper branding (e.g., Lotus Sametime Gateway, or WebSphere Application Server). Please refer to http://www.ibm.com/legal/copytrade.shtml for guidance on which trademarks require the or symbol. Do not use abbreviations for IBM product names in your presentation. All product names must be used as adjectives rather than nouns. Please list all of the trademarks that you use in your presentation as follows; delete any not included in your presentation. IBM, the IBM logo, Lotus, Lotus Notes, Notes, Domino, Quickr, Sametime, WebSphere, UC2, PartnerWorld and Lotusphere are trademarks of International Business Machines Corporation in the United States, other countries, or both. Unyte is a trademark of WebDialogs, Inc., in the United States, other countries, or both.

If you reference Adobe in the text, please mark the first use and include the following; otherwise delete:
Adobe, the Adobe logo, PostScript, and the PostScript logo are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States, and/or other countries.

If you reference Java in the text, please mark the first use and include the following; otherwise delete:
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.

If you reference Microsoft and/or Windows in the text, please mark the first use and include the following, as applicable; otherwise delete:
Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.

If you reference Intel and/or any of the following Intel products in the text, please mark the first use and include those that you use as follows; otherwise delete:
Intel, Intel Centrino, 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.

If you reference UNIX in the text, please mark the first use and include the following; otherwise delete:
UNIX is a registered trademark of The Open Group in the United States and other countries.

If you reference Linux in your presentation, please mark the first use and include the following; otherwise delete:
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both. Other company, product, or service names may be trademarks or service marks of others.

If the text/graphics include screenshots, no actual IBM employee names may be used (even your own), if your screenshots include fictitious company names (e.g., Renovations, Zeta Bank, Acme) please update and insert the following; otherwise delete: All references to [insert fictitious company name] refer to a fictitious company and are used for illustration purposes only.

2014 IBM Corporation

2012 IBM Corporation