Chapter 1 Introduction to Java Enterprise System
Sun JavaTM Enterprise System (Java ES) is a set of software components
that provides services needed to support enterprise-strength applications
distributed across a network or Internet environment. These applications are
referred to as distributed enterprise applications. This book focuses on the
software components of Java ES and the services they provide.
This chapter introduces Java ES and the tasks involved in using the
system. The chapter contains the following sections:
Why You Need Java ES
Today’s business requirements demand software solutions that are
distributed across a network or Internet environment and have high levels
of performance, availability, security, scalability, and serviceability.
Java ES provides infrastructure services needed to support such distributed enterprise applications,
which generally have the following characteristics:
-
Distributed. The application consists of interacting software components deployed across a
networked environment that might include geographically remote sites. These
distributed components, running on the various computers in the environment,
work together to deliver specific business functions to end users and to other business
applications.
-
Enterprise-strength. The
application’s scope
and scale meet the needs of a production environment or Internet service provider.
The application typically spans an entire enterprise, integrating many departments,
operations, and processes into a single software system. The application must
meet high quality of service requirements regarding performance, availability,
security, scalability, and serviceability.
Distributed enterprise applications require underlying infrastructure services that allow their distributed
components to communicate with each other, coordinate their work, implement
secure access, and so forth. These infrastructure services are supported
by a hardware environment of computers and network links. This hardware environment
includes SPARC® and x86 (Intel and
AMD) hardware architectures.
The overall layering scheme is shown in the following figure. For the
most part, Java ES provides the distributed infrastructure services
layer shown in the figure.
Figure 1–1 Support Needed for Distributed Enterprise Applications
Among the featured services provided by Java ES are the following:
-
Portal services. These
services enable employees, telecommuters, knowledge workers, business partners,
suppliers, and customers to access corporate resources from inside or outside
the corporate network. These services provide access capabilities to user
communities anytime and anywhere, delivering personalized integration, aggregation,
security, mobile access, and search.
-
Communication and collaboration
services. These services enable the secure interchange of information
among diverse user communities. Specific capabilities include messaging, real-time
collaboration such as instant messaging and conferencing, and calendar scheduling
in the context of the user's business environment.
Note –
This book refers to
components from the Sun Java Communications Suite, which depend upon Java
ES components and are used within Java ES deployment architectures. Communication
and collaboration components are not included in Java ES.
-
Network identity and security services. These services improve security and protection of
key corporate information assets by ensuring that appropriate access control
policies are enforced across all communities, applications, and services on
a global basis. These services work with a repository for storing and managing
identity profiles, access privileges, and application and network resource
information.
-
Web container and application services. These services enable distributed
components to communicate with one another at runtime and support the development,
deployment, and management of applications for a broad range of servers, clients,
and devices. These services are based on J2EE technology.
Java ES also provides services that enhance availability, scalability,
serviceability, and other application or system qualities. Among the quality
of service features provided by Java ES are the following:
-
Availability services. These services provide near-continuous availability for application
components and for the infrastructure components that support them.
-
Access services. These services
provide Internet or browser-based access to Java ES services.
-
Monitoring services. These services provide real-time information about Java ES components.
You can deploy one or more Java ES services, each of which might include
a number of Java ES components.
Java ES Components
Java ES is an integration of discrete software products and components
into a single software system. This integration is facilitated by a number
of system-level features, as listed below:
-
All components are synchronized on
a common set of shared libraries.
-
All Java ES components are installed using
a single installer.
-
All Java ES components can share an integrated user identity
and security management system.
-
All Java ES components have a common monitoring framework.
These features are described in subsequent chapters of this book. The
focus of this section is to introduce the components that are integrated into
Java ES. These system components can
be grouped into three main categories, as shown in the following figure.
Figure 1–2 Categories of Java ES Components
The components provide services as follows:
-
System service components. These
components provide the main Java ES infrastructure services that support distributed
enterprise applications.
-
Service quality components.
These components enhance the availability, security, scalability, serviceability
and other components of system service components and distributed application
components.
-
Shared components. These
components provide the environment in which many system service components
and service quality components run.
For a list of Java ES components, see Appendix A, Java ES Components.
System Service Components
A number of Java ES components provide the main services that support
distributed software solutions. These system services include portal services, identity and security services,
web container services, J2EE application services, and persistence services.
The system service components that
provide these distributed services and the services they provide are listed
alphabetically and briefly described in the following table. Each system service
component is a multithreaded server process capable of supporting a large
number of clients. For more details on each component, see System Service Components.
Table 1–1 Java ES System
Service Components
|
Component
|
System Services Provided
|
|
Sun Java System Access Manager
|
Provides access management and digital identity administration services.
Access management services include authentication (including single sign-on) and role-based authorization for access to applications and/or
services. Administration services include centralized administration of individual
user accounts, roles, groups, and policies.
|
|
Sun Java System Application Server
|
Provides J2EE container services for Enterprise JavaBeansTM (EJB)
components, such as session beans, entity beans, and message-driven beans.
The container provides the infrastructure services needed for tightly coupled
distributed components to interact, making the Application Server a platform for
the development and execution of e-commerce applications and web services. Application Server also
provides web container services.
|
|
Sun
Java System Directory Server
|
Provides a central repository for storing and managing intranet and
Internet information such as identity profiles (employees, customers, suppliers,
and so forth), user credentials (public key certificates, passwords, and pin
numbers), access privileges, application resource information, and network
resource information.
|
|
Java DB [Java ES 5 is the first release to include Java DB as a product component.
Java DB was first released as a shared component named Derby Database and
was included in Java ES 2005Q4.]
|
Provides a lightweight database
for Java application development. Java DB is Sun's supported distribution
of the open source Apache Derby 100% Java technology database.
|
|
Sun
Java System Message Queue
|
Provides reliable, asynchronous messaging between loosely coupled distributed
components and applications. Message Queue implements the Java Message Service (JMS) API specification and adds enterprise
features such as security, scalability, and remote administration.
|
|
Sun
Java System Portal Server
|
Provides key portal services, such as content aggregation and personalization,
to browser-based clients accessing business applications or services. Portal Server also
provides a configurable search engine.
|
|
Sun Java System Service Registry
|
Provides a registry and repository to support web service-oriented architecture
(SOA) applications. Service Registry implements industry standards for registering
and discovering web services as well as for managing the associated information
and facts, artifacts, such as XML schema, business process rules, access control,
version control, and so forth.
|
|
Sun Java
System Web Server
|
Provides J2EE web container services for Java web components, such as Java servlet and JavaServer PagesTM (JSPTM)
components. Web Server also supports other web application technologies
for delivering static and dynamic web content, such as CGI scripts and Sun Java System Active Server Pages.
|
Service Quality Components
In addition to the system service components shown in Table 1–1, Java ES includes a number of components
used to enhance the quality of services provided by system service components.
Service quality components can also enhance custom-developed application services.
The service quality components fall
into the following categories:
-
Availability components
-
Access components
-
Monitoring components
Availability Components
Availability components provide near-continuous uptime for system service
components and custom application services. The availability components included
in Java ES and the services they provide are shown in the following table.
For more details on each component, see Availability Components.
Table 1–2 Java ES Availability
Components
|
Component
|
Availability Services Provided
|
|
High Availability Session
Store
|
Provides a data store that makes application data, especially session
state data, available even in the case of failure.
|
|
Sun Cluster
|
Provides high availability and scalability services for Java ES, the
applications that run on top of the Java ES infrastructure, and the hardware
environment in which both are deployed.
|
|
Sun Cluster Geographic Edition [Java ES 5 is the first release to include Sun Cluster Geographic Edition
as a Java ES product component.]
|
Protects applications from unexpected disruptions using multiple clusters
that are geographically separated and a redundant infrastructure that replicates
data between these clusters. Sun Cluster Geographic Edition software is a
layered extension of Sun Cluster software.
|
Access Components
Access components provide front-end access to system services, often
secure access from Internet locations outside an enterprise firewall. In addition
to providing such access, many provide a routing and caching function as well.
The access components included in Java ES and the services they provide are
shown in the following table. For more details on each component, see Access Components.
Table 1–3 Java ES Access Components
|
Component
|
Access Services Provided
|
|
Sun Java System Portal Server (includes Secure Remote Access)
|
Provides secure, Internet access from outside a corporate firewall to Portal Server content
and services, including internal portals.
|
|
Sun Java System Web Proxy Server
|
Provides for caching, filtering, and distribution of web content for
both outgoing and incoming Internet requests.
|
Monitoring Components
Java ES includes a monitoring feature that provides real-time system
status and customizable monitoring jobs. Monitoring is implemented by the
Sun Java System Monitoring Console product component,
which is supported by the Sun Java System Monitoring Framework shared component. For more information, see Monitoring Components.
Shared Components
Java ES includes a number of locally installed shared libraries upon
which many system service components and service quality components depend.
Java ES shared components provide
local services to Java ES product
components running on the same host computer.
Shared components are often used to provide portability across different
operating systems. Examples of Java ES shared components include: Java 2 Platform,
Standard Edition (J2SE), Netscape Portable Runtime (NSPR), Network Security Services
(NSS),
Java Security Services for Java (JSS), and so forth. For a complete list, see Shared Components.
Shared components are installed automatically by the Java ES installer
depending on the system service and service quality components that are being
installed.
Components in Sun Java Suites
Java ES is available
both as a single, end-to-end infrastructure software distribution and as
individual suite distributions that target critical business needs. Java ES
includes all Java ES components, while Sun Java System Suites include subsets
of those components selected to meet particular business needs. The Java ES
installer and uninstaller are included in all suite distributions, but are
pared down to handle just the components in the suite. All shared components
are also included in all suite distributions.
The contents of the individual suites and the business requirements
each suite is intended to meet are listed in the following table.
Table 1–4 Components in Sun Java Suites
|
Suite
|
Business Requirement
|
Contents
|
|
Sun Java Application Platform Suite
|
Develop, deploy, and manage next-generation service-oriented architectures
(SOA)
|
Access Manager
Application Server
Directory Server
HADB
Java DB
Message Queue
Monitoring Console
Portal Server (includes Secure Remote Access and Mobile Access)
Service Registry
Web Proxy Server
Web Server
|
|
Sun Java Availability Suite
|
Disaster recovery and high availability for mission-critical applications
|
Sun Cluster software
Sun Cluster Agents
Sun Cluster Geographic Edition
|
|
Sun Java Communications Suite [Components with asterisks (*) are communications components that are
no longer included with Java ES or installed through the Java ES installer.
These components are available as part of the Sun Java Communications Suite.]
|
Secure and reliable messaging and collaboration services
|
Access Manager
Application Server
Calendar Server*
Communications Express*
Delegated Administrator*
Directory Server
HADB
Instant Messaging*
Java DB
Message Queue
Messaging Server*
Monitoring Console
Web Proxy Server
Web Server
|
|
Sun Java Identity Management Suite
|
User identity management across computing infrastructures and application
environments
|
Access Manager
Application Server
Directory Server
HADB
Java DB
Message Queue
Monitoring Console
Web Server
|
|
Sun Java Web Infrastructure Suite
|
Web applications and services for small to medium-sized enterprises
|
Access Manager
Application Server
Directory Server
HADB
Java DB
Message Queue
Monitoring Console
Service Registry
Web Proxy Server
Web Server
|
Working With Java ES
Creating business solutions based on Java ES software involves a number
of standard tasks. These
tasks vary in scope and difficulty depending on your starting point for the
adoption of Java ES and on the nature of the solution that you are trying
to create and deploy.
This section discusses two aspects of working with Java ES: the Java
ES solution life cycle and the adoption scenarios that are typically involved.
Java ES Solution Life Cycle
The tasks involved in creating business solutions based on Java ES software
can be divided into several phases, as shown in the following figure. The
illustration also shows the category of Java ES user that generally performs
the tasks.
Figure 1–3 Solution Life Cycle Phases and User Categories
The life cycle phases shown in the preceding figure can be divided into
the following general groupings:
-
Predeployment. In these phases, a business need is translated into a deployment
scenario, which is a logical architecture and a set of quality of service
requirements. The deployment scenario serves as a specification for designing
a deployment architecture.
-
Deployment. In these phases, a deployment scenario is translated into a deployment
architecture. This architecture can be used as a basis for project approval
and budgeting. The deployment architecture is also the basis for an implementation
specification that provides the details needed to deploy (build, test, and
roll out) a software solution in a production environment.
-
Postdeployment. In the operations phase, a deployed solution is run under production
conditions and monitored and optimized for performance. The deployed solution
is also upgraded to include new functionality as necessary.
The tasks in each life cycle phase shown in Figure 1–3 are discussed more fully in Chapter 4, Java ES Solution Life Cycle.
Figure 1–3 shows the Java ES
users who typically perform the tasks shown for the life cycle phases. The
following table describes the skills and background for each category of user.
Table 1–5 Java ES User Categories
for Life Cycle Tasks
|
User
|
Skills and Background
|
Phases
|
|
Business planner
System analyst
|
Has general rather than in-depth technical knowledge.
Understands strategic direction of the enterprise.
Knows business processes, objectives, and requirements.
|
Business analysis
Technical requirements
Logical design
|
|
Architect
|
Is highly technical.
Has broad knowledge of deployment architectures.
Is familiar with latest technologies.
Understands business requirements and constraints.
|
Technical requirements
Logical design
Deployment design
|
|
System integrator
Field engineer
System administrator
System manager
|
Is highly technical.
Is intimately familiar with information technology environments.
Is experienced in implementing distributed software solutions.
Knows network architecture, protocols, devices, and security.
Knows scripting and programming languages.
|
Deployment design
Deployment implementation
|
|
Specialized system
administrator
Delegated administrator
Support engineer
|
Has specialized technical or product knowledge.
Is familiar with hardware, platforms, directories, and databases.
Is skilled at monitoring, troubleshooting, and upgrading software.
Knows system administration for operating system platforms.
|
Operations
|
Java ES Adoption Scenarios
The business needs that lead to the adoption of Java ES vary widely.
However, the high-level goal for nearly every Java ES deployment fits into
one of the following adoption
scenarios:
-
New system. Starting with no existing software system, you deploy Java ES
software to support a new business solution.
-
Enhancement. Starting with an existing information technology (IT) infrastructure,
you replace one, many, or all parts of that system with Java ES software.
You typically replace systems or subsystems because they are too complicated,
too limited, or too expensive to maintain. For example, you might require
better security, higher availability, increased scalability, more flexibility,
less complexity, additional capabilities (such as single sign-on), or better
use of IT resources.
-
Extension. Starting with an existing IT infrastructure, you deploy Java
ES software that is not currently part of your system. You typically extend
your software system because you need to meet new business needs. You might
need new functional capabilities such as personalized aggregation of existing
services through a Java ES portal or Java authentication and authorization
for existing services.
-
Upgrade. Starting
with an IT infrastructure consisting of an earlier version of Java ES or of
Sun products that predate Java ES, you upgrade to the most current version
of Java ES components.
Each adoption scenario has its own considerations and challenges. Depending
on your adoption scenario, the issues you need to address and the resources
you need to invest in the life cycle phases shown in Figure 1–3 might vary.
The following considerations apply in varying degrees to the adoption
scenarios:
-
Migration. Enhancing
or upgrading the existing infrastructure with new software often requires
the migration of data from the existing system to the new system. The data
could be configuration information, user information, or application information.
You might also need to migrate business or presentation logic due to new programming
interfaces.
-
Integration. Adding new software to an existing system or replacing software subsystems
often requires that you integrate new software components with the remaining
subsystems. Integration might involve developing new interface layers, using
J2EE connectors or resource adaptors, reconfiguring existing components, and
implementing data transformation schemes.
-
Training. Almost any change in
infrastructure implies changes in IT procedures and skill sets. Your IT department
must have adequate time to acquire new skills or transfer old skills to support
Java ES technologies.
-
Hardware. When you replace or
enhance an existing system or subsystem, business constraints might require
you to reuse existing hardware. Depending on your adoption scenario, hardware
resources can become an important factor.
The following table summarizes the nature of the concerns that apply
to each of the Java ES adoption scenarios.
Table 1–6 Java ES Adoption
Scenario Concerns
|
Adoption Scenario
|
Migration
|
Integration
|
Training
|
Hardware
|
|
New system
|
Not a concern
|
Relatively easy to integrate new components
|
Can be a significant concern
|
Trade-offs between equipment costs and labor costs [Using a few powerful computers generally increases equipment costs while
requiring fewer IT resources. Using many smaller computers generally decreases
equipment costs while requiring more IT resources.]
|
|
Enhancement
|
Can be a major concern
|
Need to integrate new components with existing system
|
Can be a significant concern
|
Can involve significant constraints due to existing equipment
|
|
Extension
|
Not normally a concern
|
Might need to integrate new components with existing system
|
Might be a significant concern
|
Usually requires new hardware with same trade-offs as with a new system
|
|
Upgrade
|
Can be a significant concern
|
Relatively easy to integrate upgraded components
|
Relatively minor concern
|
Relatively minor concern
|
Key Terms in This Chapter
This section explains key technical terms used in this chapter, with
an emphasis on clarifying how these terms are used in the Java ES context.
- adoption scenario
-
An overall reason for deploying
Java ES software that describes the software system you start with and the
goal you are trying to achieve. Four basic Java ES adoption scenarios exist:
new system, replacement, extension, and upgrade.
- component
-
A unit of software logic from which distributed applications are
built. A component can be one of the system components included in Java ES or an application component that is custom developed. An application component usually
conforms to a distributed component model (such as CORBA or the J2EETM platform)
and performs a specific computing function. These components, singly or combined,
provide business services and
can be encapsulated as web services.
- distributed enterprise application
-
An application with logic that spans
a network or Internet environment (the distributed aspect) and with a scope
and scale that meet the needs of a production environment or service provider
(the enterprise aspect).
- end user
-
A person who uses a distributed application often through a graphical
user interface such as an Internet browser or mobile device GUI. The number
of concurrent end users supported by an application is an important determinant
of the deployment architecture of the application.
- service
-
A software function performed for one or more clients. This function might
be at a very low level such as a memory management service or at a high level
such as a credit check business service.
A high-level service can consist of a family of individual services. Services
can be local (available to local clients) or distributed (available to remote
clients).
- product component
-
Java ES system
service components, which provide the main Java ES infrastructure
services, and Java ES service
quality components, which enhance those system services. Product components
are selectable within the Java ES installer.
- service quality component
-
A type of system component included in Java ES. These components enhance the availability,
security, scalability, serviceability, and other qualities of system service
components and distributed application components.
- shared component
-
A type of system component included
in Java ES. Shared components, usually libraries, provide local services to
other system components.
- system component
-
Any software package or set of packages included in
Java ES and installed by the Java ES installer. Several kinds of system
components exist: product components that provide Java ES infrastructure services, and shared components that provide
local services to other system components.
- system service
-
One or more distributed services that define the unique functionality provided by Java ES. System
services normally require the support of a number of service quality components, a number of shared components, or some of
both.
- system service component
-
A type of system component included in Java ES. System services components provide
the main Java ES infrastructure services: portal services, identity and security
services, web and application services, and availability services.