News: IBM Announce EJB 1.1 support in CICS
On the 13th of March IBM announced, to surprisingly little fanfare, version 2 of their premiere enterprise transaction processing software, CICS Transaction Server. The first release of which will be generally available on the 30th of March and includes limited EJB 1.1 support. Read the full announcement document here: http://www-4.ibm.com/software/ts/cics/v2/. CICS has been a flagship IBM software product for over 30 years now and runs primarily on IBM's OS/390 platform (recently rebadged as z/OS).
- Posted by: Marcus Flee
- Posted on: March 18 2001 10:30 EST
The most significant new feature in version 2 is support for EJBs, however, reading the announcement in more detail reveals some interesting revelations. Firstly, buried amongst the marketing information, IBM reveals that the EJB container in CICS will not run Entity beans. Now, quite how IBM can pretend to support EJBs without Entity beans in an interesting anomaly. However, the official IBM position appears to be that CICS should only be used for Enterprise Beans in conjunction with WepSphere (also available on 390) and that the typical architecture would be to wrapper existing legacy COBOL programs running under CICS with a Session Bean veneer. Far more worrying is the absence of EJB role based security from the CICS EJB implementation. The announcement letter promises that EJB style security will be available in CICS in the second release of CICS TS version 2, scheduled for beta release in September. Clearly this would be a significant concern for anyone planning to go into production with EJBs in CICS, but IBM themselves recommend that their customers wait for this second release before going to production and treat the initial EJB support in CICS as a technology only release.
IBM's EJB support on 390 has been poor to date, so this announcement is welcome and highlights IBM's continued support of Java in the enterprise. IBM has also announced the availability of WepSphere version 4 on OS/390 with complete EJB 1.1 support (I'm not sure about its level of J2EE compliance) and the 'technology' (read beta) release of WebSphere version 4 on distributed platforms. However, it would appear to be the case that the 390 implementations of EJB support have at least temporarily overtaken WebSphere on distributed in terms of the EJB 1.1 support in a generally available product. Perhaps this marks a changing trend in IBM's market base.
Of course, the biggest question has to be performance. CICS has a reputation for being a highly optimized if completely proprietary transactional environment. After all, they have had 30 years to get it right. That said, the JVM environment that IBM supplied in CICS Transaction Server version 1.3 was incredibly slow. For some reason IBM has taken the requirement for transactional isolation to new extremes and requires that each individual Java based transaction in a CICS system uses its own JVM. Adding the overhead of starting and stopping an entire JVM for each transaction was a major performance problem. In fact, so far as CICS TS 1.3 was concerned JVM support in CICS was little more than a marketing checkpoint.
In CICS TS version 2 IBM have added support for a technology which they are calling the 'persistent reusable JVM'. IBM are keeping very quiet about quite what this technology is, but if its name is anything to go by it could be quite interesting - even if it is only available on s/390. From what I can gather it appears to be a JVM which can be serially reused and reset between JVM invocations thus dramatically reducing the overhead of launching a JVM. If this is the case than I for one am a little surprised that IBM haven't shouted a little more loudly about it as it would appear to have a lot of potential uses elsewhere.
The question that still remains unanswered to my mind however is quite why an enterprise would want to go to the expense of upgrading their CICS systems in order to get this new EJB support. It's not as if there aren't a myriad of other ways to connect to a CICS transaction from a J2EE application, not least of which is using J2EE connectors. Still, this is an interesting announcement, not least because if IBM have put in the investment to add EJB support to CICS it must surely be because some of their major enterprise customers (fortune 500 types) have actually requested it. Anything that promotes J2EE in the enterprise has to get a thumbs up from me.
- IBM Announce EJB 1.1 support in CICS by Olivier Refalo on March 19 2001 11:48 EST
- IBM Announce EJB 1.1 support in CICS by Gianni Scenini on March 19 2001 12:43 EST
- IBM Announce EJB 1.1 support in CICS by Eddie Fung on March 19 2001 16:07 EST
- IBM Announce EJB 1.1 support in CICS by Robin Beetge on March 20 2001 08:39 EST
- IBM Announce EJB 1.1 support in CICS by Robert Patton on May 02 2002 12:13 EDT
Let me answer your question: Why would a company buy the EJB extension for CICS ?
The short answer is: ACIDity
When an application uses the CICS Connector to access data on the mainframe there is no transaction continuity. In other words: if a transactional session bean talks to CICS, there are two transaction managers involved in the process. Hence, the operation is not ACID. If the application server crashes, it may leave CICS in an inconsistent state.
Now if the mainframe manages the EJB, the story is different because the transaction is handled from end to end.
Finally about the lack of Entity beans. No big deal, Entity beans were made for Object->Relation mappings. Most CICS programs are written in COBOL and use their own ISAM tables: It's a different world.
Thanks for your review.
thats not always true.
CICS Connector supports synch level 1, therefore in some case you do not have the ACIDity. However, IBM Component Broker supports synch level 2 CICS container using LU 6.2 which means you have the complete ACIDity using EJB and CICS Tx. Of course in the latter case you have a global Tx which is heavy.
CICS is one of the most rock solid OLTP. Adding EJB support
could be a killer feature. CICS already supports IIOP.
I know this is off topic but is there an equivalent capability in IMS?
As far as I know, there is no native support of EJB in IMS but there is a IMS connector(CCF) which allows you to wrap an IMS tx in an EJB. However it does not support synch level 2
Please check out the synch level support at IBM
because I am not much updated about that
I suspect the reason that entity beans do not appear in this 'first' release is a matter of mapping the EJB model to CICS.
Stateless and Stateful session beans map directly to the CICS programming model. Entity beans do not. They are in memory objects which need to be addressed by potentially multiple programs (Session beans) and there is no straight forward equivalent although I am sure that IBM may be able to emulate it (there are several possiibilities).
Definitely treat this release as a 'first cut'.
Have a look at the following doc off the IBM site mentioned:
Is a good paper on the integration of EJB into CICS and answers some of the question raised here.
I used the EJB 1.1 support in CICS a year ago (so this info may be outdated), the persistent reusable VMs are very cool but while they get past startup time problems, they pose runtime problems. You can't cache, or pool anything because everything gets thrown out after every single call to an EJB in CICS. This works out ok if you are using VSAM or IMS and the native connection pools to them, but say you want to call out to Oracle on solaris from an EJB in CICS, you couldn't pool those connections. So you end up using the CICS EJBs just to encapsulate access the local data and CICS transactions, and run Websphere/Weblogic in a unix segment to do everything else. Also, according to one of the IBM engineers, the Entity bean support was implemented, but they had to turn it off because of a marketing decision.