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 Experience, Application 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:
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;)
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
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:
·
Security
·
Logging
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
Get products and
technologies