Friday, February 21, 2014

What's new in WebSphere Application Server V8.5

What's new in WebSphere Application Server V8.5
IBM® WebSphere® Application Server V8.5 is a major release that offers dramatic run time improvements, plus simpler and easier ways to develop and deploy applications. This article presents a high level glimpse of some of the new technical features and enhancements that make these improvements possible.

Introduction
The new features, functions, and improvements in IBM WebSphere Application Server V8.5 address the key areas of Developer ExperienceApplication Resiliency and Operation and Control.
Likely the most notable new function is the WebSphere Application Server profile called Liberty, or more correctly, the Liberty profile. The use of the term “Liberty” is intended to denote the freedom that this new profile provides from a monolithic application server runtime. No doubt it’s a coincidence that WebSphere Application Server V8.5 becomes generally available on June 15, 2012, which is also the anniversary of the signing of the Magna Carta (on June 15, 1215). Although the historical significance of the Liberty profile might not equal that of the Magna Carta, it’s hard not to be swept up in all the interest and excitement about this new feature!
Of course there’s much more to WebSphere Application Server V8.5 beyond the Liberty profile, including significant new features for administration and operations staff, such as the Intelligent Management functions from IBM WebSphere Virtual Enterprise that can minimize end-user outages, plus maximize operational monitoring and control of the production environment. There are also enhancements to the Java™ Batch function that was delivered in WebSphere Application Server V8, as well as other functions to improve operations control and staff efficiency.
The sections that follow describe many of the major new functions you'll find in this latest release of WebSphere Application Server.
Developer Experience
New features and enhancements in this area include:
·         Lilberty profile
·         OSGi Blueprint specification
·         Java SE 7
·         IDE options
·         Web 2.0 and mobile
·         Application migration
Liberty profile
Leading off the list of developer experience features in WebSphere Application Server V8.5 is the Liberty profile. The Liberty profile is a newdynamic profile. Unlike the traditional WebSphere Application Server static profile runtime feature, Liberty adapts to the requirements of the application in a very fine-grained manner, ensuring that only the necessary application container functions are started. Doing so gives you the “liberty” to deploy web applications with across-the-board requirements, and provides all the required components, such as security, transaction management, connection pooling, and persistence via JPA or JDBC.
As Liberty is a dynamic profile, central to this dynamic runtime is a new kernel that leverages OSGi to load the application-required API and runtime features. While WebSphere Application Server has had an OSGi-based runtime since V6.1, the Liberty profile in V8.5 actually leverages OSGi. The result is a small application server process memory footprint – normally smaller than 60MB for web applications -- which typically starts in less than 5 seconds.
The difference between the Liberty profile runtime and the traditional WebSphere Application Server profile runtime is depicted in Figure 1.
Figure 1. WebSphere Application Server profile runtime and Liberty profile runtime comparison


The API feature set in the WebSphere Application Server V8.5 Liberty profile is focused on web-based applications and provides support for:
·         Java Database Connectivity (JDBC) 4.0
·         Java Persistence (JPA) API 2.0
·         JavaServer Faces (JSF) 2.0
·         JavaServer Pages (JSP) 2.2
·         Servlet 3.0
·         JAX-RS 1.1 (and JSON4J ).
Aside from the API features, additional runtime features include:
·         OSGi Blueprint 4.2 container
·         Java Management Extensions (JMX)
·         Java Transaction API (JTA) 1.1
·         Java Naming and Directory Interface (JNDI)
·         Session Distribution via database persistence
·         Secure Sockets Layer (SSL) .
·         Security, using a file-based user registry or an (LDAP) user registry
·         Web security
·         z/OS® security, supported by the z/OS System Authorization Facility (SAF).
If you're looking for even more web and enterprise application APIs, it’s reasonable to expect that the API and runtime features available for the Liberty profile will evolve over time.
The Liberty profile also provides a radically simplified server runtime configuration. This enables the server instance to be configured easily (either inside or outside an Eclipse environment) with a single XML file covering all aspects of the server, the applications, and the resources required by the applications. This makes it easy to share configurations across development teams and environments. The simplified single XML configuration for the Liberty profile is depicted in Figure 2.
Figure 2. Liberty XML configuration file


The Liberty profile also offers several options for installation. You can use either a simple unzip, the IBM Installation Manager, or the WebSphere Application Server Network Deployment V8.5 Job Manager to distribute and install Liberty binaries.
While a discussion of the Job Manager and Liberty is more of an operations discussion than a development discussion, it is in the interest of continuity with respect to Liberty that we discuss that now.
Jobs specific to Liberty configuration and application management have been added to the WebSphere Application Server Network Deployment V8.5 Job Manager, including Liberty profile installation, as well as application installation, update, and uninstall. Consistent with the modular Liberty architecture, the Liberty runtime (and configuration) or the Java SDK, or applications running on a Liberty profile, can be distributed either together or individually, both initially, or as an update, providing very fine grained management. An example of this is depicted in Figure 3.
Figure 3. Liberty installation and update with the Job Manager


Other Job Manager jobs are available to start and stop Liberty servers, as well as to generate and merge HTTP server plugin configuration files from Liberty servers. In addition, the Liberty management jobs are also available from the WebSphere Application Server Network Deployment deployment manager (in addition to the non-Liberty specific job types).
Finally, with respect to the Liberty profile, there’s also a great deal of flexibility in selecting a JDK for use on Windows®, Linux®, and Mac OS (Mac OS is supported for development only).
OSGi Blueprint specification
Beyond the Liberty profile another core enhancement in WebSphere Application Server V8.5 is the addition of support for EJB Bundles to the OSGi Blueprint specification in WebSphere Application Server V8.0. This enables OSGi application bundles to contain Enterprise JavaBeans (EJB) components. The enterprise beans in your OSGi bundles can be stateful, stateless, and singleton enterprise beans as well as message-driven beans (MDBs). Deployment and configuration of an OSGi application bundle that contains enterprise beans is similar to the existing WebSphere Application Server V8.0 capability using either the administrative console or the wsadmin scripting interface.
Java SE 7
WebSphere Application Server V8.5 also includes the option to use Java 7 SE, which offers a number of the Java SE API additions that were added via the OpenJDK project, Project Coin:
·         Comparison of a string literal in a switch; for example:
case “one”: <do something>; break;)
·         Binary integral literals (for example, 0b10011010) and underscores in numeric literals to help visual blocking (for example, 34_409_066).
·         Simplified Varargs Methods Warnings (for example, @SafeVarargs annotation to remove warnings on safe varargs method declarations and invocations).
·         Multiple try catch blocks specific to handling; for example:
try { } catch(Exception|Error a) { handle(a); }.
·         Improved type inference for generic instance creation. For example:
Map<String,MyType> foo = new HashMap<String,MyType>();
becomes
Map<String,MyType> foo = new HashMap<>();
.
Other improvements in Java 7 SE include:
·         Non-blocking I/O 2 (NIO.2) provides additional application control over how I/O operations are handled, enabling better scaling.
·         Automatic Resource Management (ARM) in which the Java compiler will automatically close statements and connections to external resources, which can alleviate problems with error handling and resource control, thus avoiding resource leaks.
IDE options
There are also new Integrated Development Environment (IDE) options for WebSphere Application Server V8.5, beginning with the WebSphere Application Server Developer Tools for Eclipse, which is an Eclipse plugin that delivers a lightweight set of tools for developing, assembling, and deploying Java EE, OSGi, Web 2.0, and mobile applications to WebSphere Application Server, including the Liberty profile. The Developer Tools for Eclipse is freely available from the Eclipse Marketplace with an option to purchase support.
In addition, IBM Rational® Application Developer V8.5 provides a complete environment for enterprise development for Java, Java EE, web, web services, SOA, OSGi, and WebSphere Portal designers and developers. Rational Application Developer V8.5 extends the Java EE, OSGi, and Web 2.0 capability of the Developer Tools for Eclipse by adding support for portlet and portal applications, SCA applications, application static analysis, and application performance profiling, as well as team debug and code control.
Web 2.0 and mobile
In WebSphere Application Server V8.5, mobile web application development is enabled using the Web 2.0 and Mobile Toolkit, which integrates the functions previously delivered in the WebSphere Application Server Feature Pack for Web 2.0 and Mobile. While delivery of this critical development capability has changed, what hasn’t changed is the ability to create and deliver mobile applications based on standard web technologies such as HTML5, CSS3, and JavaScript, which enable applications to run in a mobile device browser with a native device look and feel.
Application migration
WebSphere Application Server V8.5 also improves upon the Application Migration Tool (AMT) that was delivered during the WebSphere Application Server V7 service cycle. The AMT V3.5 is available as a free plugin for both Eclipse and Rational Application Developer. Version 3.0 of the AMT adds support for the migration of Apache Tomcat applications to WebSphere Application Server, and also analyzes source code to find potential WebSphere version-to-version migration problems, such as:
·         Removed features
·         Deprecated features
·         Behavior changes
·         JRE 5, JRE 6, and JRE 7 differences
·         Java EE specification changes or enforcements.
The ability of the AMT to either make application changes or provide guidance on how to make required changes results in application migration occurring two-to-three times faster than an unassisted migration. AMT V3.5 can be used to migrate applications from WebSphere Application Server V5.1, V6, V6.1 — as well as applications from Apache Tomcat, JBoss, Oracle® Application Server, and Oracle WebLogic Server — to WebSphere Application Server V8.5, V8 and V7.
Application Resiliency
New features and enhancements in this area include:
·         Intelligent Management
·         Messaging
Intelligent Management
The biggest news under the theme of Application Resiliency is probably the integration of the features from WebSphere Virtual Enterprise into WebSphere Application Server Network Deployment V8.5. This merge allows for a single WebSphere Application Server Network Deployment installation to deliver the traditional Network Deployment functions, as well as WebSphere Virtual Enterprise functions. The former WebSphere Virtual Enterprise functions now in Network Deployment V8.5 are characterized as Intelligent Management features and encompass:
·         Intelligent routing
·         Application edition management
·         Dynamic clustering
·         Health management
Intelligent routing
It’s easiest to start a discussion of Intelligent Management by referring to the most visible component, the On Demand Router (ODR), which is a specialized Java-based proxy server that classifies incoming requests, and then dispatches the requests across the application server environment. The ODR and its function is depicted in Figure 4, which for simplicty does not depict an HTTP server or Reverse Proxy Server that is used to send requests to the ODR.
Figure 4. On Demand Router function

The ODR classifies incoming HTTP and SIP requests and then works in conjunction with other Intelligent Management “decision makers” to route workload in order to insure that the highest priority is given to business critical applications. Requests are prioritized and routed based upon administrator-defined rules, called service policies, which are used to specify application response time goals.
Service policy response time goals need to be consistent with the response time that the application can deliver. Intelligent Management does not make poorly written and architected applications run faster!
These goals are then used to distribute requests, as well as to control the number of application servers associated with an application using the dynamic clusters function of Intelligent Management. With dynamic clusters the WebSphere Application Server decision makers can automatically scale up and down the number of running cluster members as needed in order to meet response time goals for your users. You can leverage overload protection to limit the rate at which the On Demand Router forwards traffic to application servers to prevent heap exhaustion, CPU exhaustion, or both types of exhaustion from occurring. The ODR can momentarily queue requests for less important applications so that requests from more important applications are handled more quickly.
A final note on ODR function and architecture, as with the omission of an HTTP server from Figure 4, only a single ODR is depicted instead of the normal cluster of ODRs for simplicity
Application edition management
Application edition management enables management of interruption-free production application deployments. Using this feature, you can validate a new edition of an application in your production environment without affecting users, and upgrade your applications without incurring user outages. You can also run multiple editions of a single application concurrently, directing different users to different editions, as the ODR maintains not only traditional application state (for example, HTTP session) affinity, but also application version affinity. The ability to queue requests is also employed with the Intelligent Management application edition function if an “atomic” application update that allows pre-provisioning of a new application version, and an “atomic” update of all users from the old application version to the new application version, is desired.
Health management
Intelligent Management provides a health management feature to monitor the status of your application servers, as well as sense and respond to problem areas before an outage occurs. You can manage the health of your application serving environment with a policy-driven approach that enables specific actions to occur when monitored criteria are met. For example, when memory usage exceeds a percentage of the heap size for a specified time, health actions can run to correct the situation.
Aside from the predefined health conditions and health actions, both of these can be customized for conditions and operational requirements specific to your environment. As an example, if a memory leak is detected, a replacement application server instance can be started, workload can be directed to the replacement application server, the application server can be placed into maintenance mode, (meaning no requests are sent to it), all of which enables offline diagnostics (for example, thread dump, heap dump) to be performed either manually or automatically (as part of the health action). And yes, the administrative or operations staff can automatically be notified via email when the Intelligent Management runtime detects a problem.
Messaging
Another important aspect of Application Resiliency in WebSphere Application Server V8.5 are the improvements to the WebSphere Application Server messaging engine, which is the embedded JMS provider in each application server instance.
First is the change from the use of long running or persistent database locks to short locks by the active messaging engine on the SIBOWNER table. Instead of permanent locks, table ownership is periodically revalidated, which, in turn, permits the database administrator access to the tables used by the messaging engine, while at the same time insuring that only a single messaging engine is consuming messages from a message queue, insuring message delivery ordering.
A number of changes have been made to provide for message engine instance isolation from the application server. As a result, if the messaging engine in an application server hangs, the messaging engine can be switched to another application server and the applications running in the application server with the “hung” messaging engine can continue to function. Another improvement related to isolation is the ability of the messaging engine to stop and restart when a database connection error is encountered, rather than requiring a restart of the application server JVM.
The messaging engine also can be automatically restarted (or re-enabled) if it enters a disabled state. This makes administration much easier in a large Network Deployment cluster because administratively determining the disabled messaging engine can be cumbersome in a large environment.
Another vexing issue, redelivery of poison messages after an application server restart has been dealt with in WebSphere Application Server V8.5 as well. This is accomplished by persisting the JMS message re-delivery count, thus preventing a poison message from hanging a messaging engine (and application server), only to have the messaging engine (and application server) hang upon restart when attempting to process the same poison message.
A new administrative command, recoverMEConfig, has been added in V8.5 to enable a messaging engine to recover messages from an orphaned persistent message store. As a result, in the event of a catastrophic loss of a physical server (or data center!), if the persistent message data is available, it’s now easy to recover the data from the persistent message store. When this new command is run, a new messaging engine reads the UUID of the old messaging engine from the message store and assumes ownership of records associated with that UUID.
There have also been improvements to the messaging engine code base to better leverage multiple core CPUs for quicker messaging engine start-up when a large number of messages and destinations are present.
While on the subject of performance, I’d be remiss if I didn’t mention the overall performance improvements in WebSphere Application Server V8.5. Based upon our April 2012 SPECjEnterprise 2010 benchmark submissions (3), WebSphere Application Server V.8.5 is 70% faster then WebSphere Application Server V8.0 on the same hardware, as shown in Figure 5, which also depicts the SPECjEnterprise 2010 performance for WebSphere Application Server V7 as well.
Figure 5. WebSphere Application Server SPECjEnterprise Performance


This improved performance is the result of many improvements across the board in many application server components. In V8.5, performance improvements were realized in:
·         JDK (Java 7 SE versus Java 6 SE)
·         JPA 2.0 persistence layer
·         Web container
·         JSP engine
·         EJB container
·         Connection management for J2C/RRA
·         JMS messaging optimizations.
Another new Application Resiliency feature in WebSphere Application Server V8.5 is the new capability to detect memory leaks, as well as the ability to mitigate memory leak impact when stopping application servers, which, in some cases, can actually prevent leaks by clearing application memory references in certain cases, as well as to receive leak warnings and get heap/system dumps when a leak has occurred.
Operation and Control
New features and enhancements in this area include:
·         Selectable JDK
·         Security
·         Track admin changes
·         Java Batch
·         Cross Component Trace (XCT)
·         Logging
·         Data Collector
Selectable JDK
WebSphere Application Server V8.5 introduces selectable JDK, which is managed using the managesdk command to specify the JDK used by a WebSphere Application Server profile. This enables management of an environment that is composed of both Java 6 SE and Java 7 SE, so some portion of your topology can run on Java 7 SE while the remainder can run on Java 6 SE. The managesdk command can be used to switch to Java 7 SE or back to Java 6 SE, as needed. Java 7 SE is an optional install in WebSphere Application Server V8.5 that can be used with either the Liberty profile or the full-functioned WebSphere Application Server profile.
Security
WebSphere Application Server V8.5 contains several OSGi Blueprint security improvements that are delivered as part of the EJB support in OSGi bundles, discussed earlier. These security improvements include:
·         Configuration of bean security in the Blueprint XML file.
·         Specification of bean-level security in OSGI apps.
·         Setting method level security in OSGI apps.
Track admin changes
Another new administrative function is the ability to track administrative configuration changes. This function leverages the Extended Repository Checkpoint function from WebSphere Virtual Enterprise, which writes out a delta repository each time configuration changes are saved to the WebSphere Application Server configuration repository. The delta repository lists the “before” and “after” configuration elements which can then be used to track configuration changes.
Java Batch
The Java Batch function from WebSphere Application Server V8.0 has been enhanced in V8.5 to include a Parallel Job Manager that controls parallel job execution, including the splitting and merging of jobs. This is a container-managed parallelization providing a “divide and conquer” approach for processing large record volumes, which significantly lowers batch processing elapsed time.
Another addition to Java Batch in WebSphere Application Server V8.5 is integration with external enterprise schedulers (such as IBM Tivoli® Workload Scheduler) for scheduling and monitoring (for example, IBM Tivoli Composite Application Manager (ITCAM) of batch workloads. These additions further improve the batch programming, batch container, and batch job management functions already available in Java Batch, such as job scheduling and job status checkpoint restart.
Cross Component Trace (XCT)
A completely new administrative function in WebSphere Application Server V8.5 is Cross Component Trace(XCT). XCT enables the correlation of log and trace entries created by multiple threads or processes on behalf of the same request, and XCT can augment log and trace entries with a requestID that you can view and filter using HPEL (Listing 1).
Listing 1. XCT with request ID added
[3/18/11 14:50:17:391 EDT] 00000018  W UOW= source=com.ibm.somelogger.QuickLogTest
org= prod= component= thread=[WebContainer : 1] requestID=AAP+k9s6JZ9-AAAAAAAAAAA
         hello world
XCT can add records to your log and trace files so you can see how work related to each request branched between all involved threads and processes (Listing 2).
Listing 2. XCT request and response tagging
[3/23/12 14:01:40:615 CDT] 00000032 XCT           I   BEGIN AAP+k9s6JZ9-AAAAAAAAAAA
00000000000-cccccccccc2 HTTPCF(InboundRequest /HelloWorld/ RequestContext(828937987))
[3/23/12 14:01:40:678 CDT] 00000032 XCT           I   END   AAP+k9s6JZ9-AAAAAAAAAAA
00000000000-cccccccccc2 HTTPCF(InboundRequest RC=200 RequestContext(828937987))
[3/23/12 14:01:50:381 CDT] 00000032 XCT           I   BEGIN AAP+k9s6JZ9-AAAAAAAAAAB
00000000000-cccccccccc2 HTTPCF(InboundRequest /HelloWorld/ RequestContext(435283455))
[3/23/12 14:01:50:443 CDT] 00000032 XCT           I   END   AAP+k9s6JZ9-AAAAAAAAAAB
00000000000-cccccccccc2 HTTPCF(InboundRequest RC=200 RequestContext(435283455))
XCT can also be used to view that detailed information on HTTP and JMS requests and responses to easily debug complicated application problems. The XCT improves your ability to diagnose and debug software problems in order to minimize and eliminate application downtime. The XCT log viewer, which is available for the IBM Support Assistant, can render log and trace content from multiple log and trace files grouped by request (Figure 6).
Figure 6. XCT Log Viewer



Logging
High Performance Extensible Logging (HPEL) has been improved in V8.5 and it now has log and trace entry extensions, enabling you to filter entries by application name, by request ID, or by other custom fields. HPEL log and trace entries can now be extended with name value pair “extensions.” As an example in Listing 3, the Java EE application name has been added as an extension (called appName) to all log and trace entries created on threads associated with an application.
Listing 3. HPEL Application Name Extension Example
logViewer.sh -includeExtensions appName=ACMEShovels –format advanced
...
[12/10/11 10:52:01:500 EST] 000001c6  1 UOW= source=com.acme.SomeLogger
thread=[WebContainer : 6] org= prod= component= appName=[ACMEShovels]
          This is a trace entry from the MyShovels application
When viewing HPEL log and trace, entries can be filtered by appName, requestID, or any other extension via the HPEL logViewer command.
Data Collector
The latest version of the IBM Support Assistant provides a Data Collector, which can quickly collect diagnostic files or run traces that are predefined for WebSphere Application Server components. This allows for local viewing of diagnostic files or, optionally, sending the files to IBM product support swiftly, shortening the time required to resolve a problem.
Conclusion
IBM WebSphere Application Server V8.5 is a major release that offers dramatic run time improvements, plus simpler and easier ways to develop and deploy applications. This article presented a glimpse at some of the new features and enhancements to hopefully encourage you to explore what else this new release has to offer.
Resources
Learn
·         Minimum supported Java levels
·         SPECjEnterprise 2010 Results
·         Liberty Profile
·         IBM developerWorks WebSphere
Get products and technologies