ARCHIVED: Pooled JVM in CICS Transaction Server V3

Book description

NOTE: This book contains information about technologies that have been superseded and it is retained for historical purposes only.

IBM CICS Transaction Server (CICS TS) has supported the deployment of Java applications since the 1990’s. In CICS TS V1.3 (1999), IBM introduced the 'Pooled JVM' style of JVM infrastructure within CICS TS. This infrastructure was designed to be similar in nature to that which a CICS application developer for a language such as COBOL would be used to. It brought the benefits of the new Java language to CICS TS, without a dramatic change to the way CICS users thought of core concepts such as re-entrancy and isolation.

As enterprise usage of Java evolved it began to make more and more use of multi-threaded environments where isolation was not a desired characteristic. Additionally, technologies such as OSGi (Open Service Gateway Initiative) evolved to overcome some of the original disadvantages of applying Java to an enterprise environment. As such, the limitations of the 'Pooled JVM' approach began to outweigh the benefits.

In CICS TS V4.1 (2009), IBM introduced the new 'JVM server' infrastructure in CICS TS as a replacement to the 'Pooled JVM' approach. This 'JVM server' infrastructure provides a much more standard Java environment that makes the writing and porting of Java applications for CICS TS much simpler.

In CICS TS V5.1 (2012), support for the old 'Pooled JVM' infrastructure was removed. While there is a relatively simple migration path from 'Pooled JVM' to 'JVM server', applications should no longer be written to the 'Pooled JVM' infrastructure. There are a number of more recent IBM Redbooks publications covering the replacement 'JVM server' technology, including:

  • IBM CICS and the JVM server: Developing and Deploying Java Applications, SG24-8038

  • A Software Architect’s guide to New Java Workloads in IBM CICS Transaction Server, SG24-8225[

  • Table of contents

    1. Front cover
    2. Notices
      1. Trademarks
    3. Preface
      1. The team that wrote this book
      2. Become a published author
      3. Comments welcome
    4. Summary of changes
      1. June 2015, Fifth Edition
    5. Part 1 Overview
    6. Chapter 1. Introduction
      1. 1.1 z/OS
      2. 1.2 CICS Transaction Server Version 3
      3. 1.3 Java overview
        1. 1.3.1 Java language
        2. 1.3.2 Java Virtual Machine
        3. 1.3.3 Java on z/OS
        4. 1.3.4 Runtime Environment and tools
      4. 1.4 CICS Transaction Server for z/OS 3.2 enhancements for Java
        1. 1.4.1 Usability enhancements
        2. 1.4.2 Java Virtual Machines management enhancements
        3. 1.4.3 Continuous Java Virtual Machines versus resettable Java Virtual Machines
        4. 1.4.4 CICS Java applications using JCICS
        5. 1.4.5 CICS support for the Java Virtual Machine
    7. Chapter 2. Java Virtual Machine support in CICS
      1. 2.1 Overview
      2. 2.2 History of JVM support in CICS
        1. 2.2.1 CICS Transaction Server 1.3
        2. 2.2.2 CICS Transaction Server 2.1 and 2.2
        3. 2.2.3 CICS Transaction Server Version 2.3
        4. 2.2.4 CICS Transaction Server 3.1
        5. 2.2.5 CICS Transaction Server 3.2
      3. 2.3 JVM operation modes
        1. 2.3.1 Single use JVM
        2. 2.3.2 Continuous JVM
        3. 2.3.3 Resettable JVM
        4. 2.3.4 Summary of JVM modes
      4. 2.4 Analyzing programs for use in a continuous JVM
        1. 2.4.1 Configuring the application isolation utility on UNIX System Services
        2. 2.4.2 Generating reports on static updates
      5. 2.5 The shared class cache
        1. 2.5.1 Benefits of the shared class cache
        2. 2.5.2 Java 5 shared class cache
        3. 2.5.3 Java 1.4.2 shared class cache
        4. 2.5.4 Starting the shared class cache
        5. 2.5.5 Inquiring the status of the shared class cache
        6. 2.5.6 Changing the size of the shared class cache
        7. 2.5.7 Updating classes in the shared class cache
        8. 2.5.8 The -Xshareclasses utilities
    8. Part 2 Systems Programming
    9. Chapter 3. Setting up CICS to run Java applications
      1. 3.1 Running a simple Java application in CICS
        1. 3.1.1 Accessing the z/OS UNIX shell
        2. 3.1.2 Setting up the CICS sample Java application
      2. 3.2 System configuration
        1. 3.2.1 UNIX System Services
        2. 3.2.2 Language Environment
        3. 3.2.3 CICS Transaction Server
      3. 3.3 Managing your CICS Java environment
        1. 3.3.1 CEMT INQUIRE CLASSCACHE
        2. 3.3.2 CEMT INQUIRE DISPATCHER
        3. 3.3.3 CEMT INQUIRE JVM
        4. 3.3.4 CEMT INQUIRE JVMPOOL
        5. 3.3.5 CEMT INQUIRE PROGRAM
        6. 3.3.6 CEMT PERFORM CLASSCACHE
        7. 3.3.7 CEMT PERFORM JVMPOOL
        8. 3.3.8 CEMT SET DISPATCHER
        9. 3.3.9 CEMT SET JVMPOOL
    10. Part 3 Java programming for CICS
    11. Chapter 4. Getting started
      1. 4.1 Coding your application in Rational Developer for System z
      2. 4.2 Deploying and running the program
        1. 4.2.1 Deploying the code to CICS
        2. 4.2.2 Setting up the transaction and program definitions
        3. 4.2.3 Running the program
        4. 4.2.4 Troubleshooting
    12. Chapter 5. Writing Java 5 applications for CICS
      1. 5.1 Migrating Java applications to Java 5
      2. 5.2 New compiler errors and warnings
        1. 5.2.1 Error: syntax error on token 'enum'
        2. 5.2.2 Warning: ClassX is a raw type. References to generic type ClassX<E> should be parmeterized
        3. 5.2.3 Removed Error for boxing/unboxing
      3. 5.3 Using the new features in Java 5
        1. 5.3.1 Generics
        2. 5.3.2 Enhanced for loop
        3. 5.3.3 Autoboxing and unboxing
        4. 5.3.4 Typesafe enums
      4. 5.4 Introduction to CICS for Java programmers
      5. 5.5 CICS program design guidelines
      6. 5.6 Differences in Java with CICS
        1. 5.6.1 Threads
        2. 5.6.2 Sockets
        3. 5.6.3 File I/O
        4. 5.6.4 Static data
        5. 5.6.5 Modifying the JVM state
        6. 5.6.6 Releasing resources at the end of program execution
        7. 5.6.7 Object Request Broker (ORB)
      7. 5.7 Data type conversion
        1. 5.7.1 ASCII & EBCDIC issues
        2. 5.7.2 Conversion to and from COBOL, PL/I, and Assembler data types
    13. Chapter 6. The Java CICS API
      1. 6.1 Introduction to JCICS
      2. 6.2 A short overview of the JCICS API
        1. 6.2.1 Program control
        2. 6.2.2 File control
        3. 6.2.3 Synchronization
        4. 6.2.4 Scheduling services
        5. 6.2.5 Unit of work
        6. 6.2.6 Document services
        7. 6.2.7 Web and TCP/IP services
        8. 6.2.8 Transient storage queues
        9. 6.2.9 Transient data queues
        10. 6.2.10 Terminal control
        11. 6.2.11 Miscellaneous services
        12. 6.2.12 Services that the JCICS API does not support
      3. 6.3 JCICS basics
      4. 6.4 Input and output streams
      5. 6.5 Exception handling
      6. 6.6 Calling other programs and passing data
        1. 6.6.1 Calling other programs using LINK and XCTL
        2. 6.6.2 Passing data between programs
        3. 6.6.3 Communicating using the COMMAREA
        4. 6.6.4 Communicating through Channels and Containers
        5. 6.6.5 COMMAREAs versus channels and containers
      7. 6.7 Remoteable resources
      8. 6.8 Using transient storage queues
      9. 6.9 Performing serialization
      10. 6.10 Web, TCP/IP, and document services
      11. 6.11 File control
      12. 6.12 Interval control
      13. 6.13 Terminal services
      14. 6.14 Using JZOS with CICS
    14. Chapter 7. Evolving a heritage application using Java
      1. 7.1 The heritage Trader application
        1. 7.1.1 Installing the Trader application
      2. 7.2 Other Extensions to the Trader application
        1. 7.2.1 Using WMQ Classes to drive the Trader application
        2. 7.2.2 Using the CICS Common Client Interface (CCI)
      3. 7.3 Adding a JCICS Web interface
        1. 7.3.1 Wrapping the COMMAREA
        2. 7.3.2 Wrapping the COMMAREA using JZOS
        3. 7.3.3 Wrapping the COMMAREA using J2C in RD/z
        4. 7.3.4 Understanding COMMAREA request formats
        5. 7.3.5 A test Web application
        6. 7.3.6 Designing the HTML interface
        7. 7.3.7 Implementing the design
        8. 7.3.8 Setting up TraderPL
        9. 7.3.9 Web security
      4. 7.4 Migrating TRADERBL to JCICS
        1. 7.4.1 Mapping COBOL to Java
        2. 7.4.2 Using TraderBL with VSAM
        3. 7.4.3 Setting up TraderBL
      5. 7.5 Moving to a DB2 back end
        1. 7.5.1 Data migration
        2. 7.5.2 Changing the JVM profile for DB2
        3. 7.5.3 Using TraderBL with DB2
        4. 7.5.4 Setting up TraderBL with DB2
      6. 7.6 Adding a Web services interface
        1. 7.6.1 Building the TraderBL Web service provider
        2. 7.6.2 Migrating TraderPJ to a Web service requester
    15. Chapter 8. Problem determination and debugging
      1. 8.1 Debugging and problem determination
        1. 8.1.1 First considerations
      2. 8.2 Common problems
        1. 8.2.1 Abend AJ04
        2. 8.2.2 Incorrect output or behavior
        3. 8.2.3 No response
        4. 8.2.4 OutOfMemoryError
        5. 8.2.5 Performance is not good
        6. 8.2.6 Problems caused by static values in continuous JVMs
      3. 8.3 Where to look for diagnostic information
        1. 8.3.1 Javadumps
        2. 8.3.2 Heapdump
        3. 8.3.3 Monitoring garbage collection cycles
        4. 8.3.4 JVM stdout and stderr
        5. 8.3.5 JVM method tracing
        6. 8.3.6 JVM class loader tracing
        7. 8.3.7 Shared classes diagnostics
      4. 8.4 Interactive debugging
        1. 8.4.1 Execution diagnostic facility
        2. 8.4.2 Debugging using Rational Developer for System z
        3. 8.4.3 CICS Application Debugging Profile
        4. 8.4.4 The CICS JVM plug-in mechanism
    16. Chapter 9. Performance for Java in CICS Transaction Server Version 3
      1. 9.1 Reusable Java virtual machine
        1. 9.1.1 CICS Task Control Blocks and the Java virtual machine
        2. 9.1.2 The reusable Java virtual machine
        3. 9.1.3 Removing resettable mode for JVMs in CICS Transaction Server 3.2
      2. 9.2 Shared Class Cache facility
        1. 9.2.1 Overview of the Shared Class Cache facility
      3. 9.3 Things to avoid
        1. 9.3.1 Java virtual machine stealing
        2. 9.3.2 Using application classpath
        3. 9.3.3 Excessive garbage collection
      4. 9.4 IBM zSeries Application Assist Processor specialty engines
        1. 9.4.1 zAAP introduction
        2. 9.4.2 zAAP benefits
        3. 9.4.3 zAAP requirements
        4. 9.4.4 zAAP workflow
        5. 9.4.5 Using zAAPs in JVM
    17. Chapter 10. Performance tools for Java in CICS Transaction Server Version 3
      1. 10.1 CICS Explorer
        1. 10.1.1 System requirements
      2. 10.2 CICS PA overview
      3. 10.3 CICSPlex System Management
      4. 10.4 OMEGAMON XE for CICS on z/OS
    18. Part 4 Appendix
    19. Appendix A. JCICS exception mapping
    20. Appendix B. Hints and tips
      1. Priority of public static void main() methods
      2. Getting transaction arguments using Java
      3. Never use System.exit()
    21. Appendix C. Resettable JVM
      1. Resettable JVM
    22. Related publications
      1. IBM Redbooks
      2. Other publications
      3. Online resources
      4. How to get Redbooks
      5. Help from IBM
    23. Back cover

    Product information

    • Title: ARCHIVED: Pooled JVM in CICS Transaction Server V3
    • Author(s): Chris Rayns, George Burgess, Scott Clee, Tom Grieve, John Taylor, Yun Peng Ge, Guo Qiang Li, Qian Zhang, Derek Wen
    • Release date: June 2015
    • Publisher(s): IBM Redbooks
    • ISBN: 9780738440859