|  | type=page | 
|  | status=published | 
|  | title=Product Concepts | 
|  | next=planning.html | 
|  | prev=preface.html | 
|  | ~~~~~~ | 
|  |  | 
|  | = Product Concepts | 
|  |  | 
|  | [[GSPLG00001]][[abfaq]] | 
|  |  | 
|  |  | 
|  | [[product-concepts]] | 
|  | == 1 Product Concepts | 
|  |  | 
|  | {productName} provides a robust platform for the | 
|  | development, deployment, and management of Jakarta EE applications. Key | 
|  | features include scalable transaction management, web services | 
|  | performance, clustering, security, and integration capabilities. | 
|  |  | 
|  | The following topics are addressed here: | 
|  |  | 
|  | * link:#abfar[Jakarta EE Platform Overview] | 
|  | * link:#abfay[{productName} Components] | 
|  | * link:#abfca[Configuration Roadmap for High Availability of {productName}] | 
|  |  | 
|  | [[abfar]][[GSPLG00016]][[java-ee-platform-overview]] | 
|  |  | 
|  | === Jakarta EE Platform Overview | 
|  |  | 
|  | {productName} implements Java platform, Enterprise Edition (Jakarta EE) | 
|  | 7 technology. The Jakarta EE platform is a set of standard specifications | 
|  | that describe application components, APIs, and the runtime containers | 
|  | and services of an application server. | 
|  |  | 
|  | [[abfas]][[GSPLG00040]][[java-ee-applications]] | 
|  |  | 
|  | ==== Jakarta EE Applications | 
|  |  | 
|  | Jakarta EE applications are made up of components such as JavaServer Pages | 
|  | (JSP), Java servlets, and Enterprise JavaBeans (EJB) modules. These | 
|  | components enable software developers to build large-scale, distributed | 
|  | applications. Developers package Jakarta EE applications in Java Archive | 
|  | (JAR) files (similar to zip files), which can be distributed to | 
|  | production sites. Administrators install Jakarta EE applications onto | 
|  | {productName} by deploying Jakarta EE JAR files onto one or more server | 
|  | instances (or clusters of instances). | 
|  |  | 
|  | [[abfat]][[GSPLG00041]][[containers]] | 
|  |  | 
|  | ==== Containers | 
|  |  | 
|  | Each server instance includes two containers: web and EJB. A container | 
|  | is a runtime environment that provides services such as security and | 
|  | transaction management to Jakarta EE components. Web components, such as | 
|  | Java Server Pages and servlets, run within the web container. Enterprise | 
|  | JavaBeans run within the EJB container. | 
|  |  | 
|  | [[abfau]][[GSPLG00042]][[java-ee-services]] | 
|  |  | 
|  | ==== Jakarta EE Services | 
|  |  | 
|  | The Jakarta EE platform provides services for applications, including: | 
|  |  | 
|  | * Naming - A naming and directory service binds objects to names. A Java | 
|  | EE application can locate an object by looking up its Java Naming and | 
|  | Directory Interface (JNDI) name. | 
|  | * Security - The Java Authorization Contract for Containers (JACC) is a | 
|  | set of security contracts defined for the Jakarta EE containers. Based on | 
|  | the client's identity, containers can restrict access to the container's | 
|  | resources and services. | 
|  | * Transaction management - A transaction is an indivisible unit of work. | 
|  | For example, transferring funds between bank accounts is a transaction. | 
|  | A transaction management service ensures that a transaction is either | 
|  | completed, or is rolled back. | 
|  | * Message Service - Applications hosted on separate systems can | 
|  | communicate with each other by exchanging messages using the Java | 
|  | Message Service (JMS). JMS is an integral part of the Jakarta EE platform | 
|  | and simplifies the task of integrating heterogeneous enterprise | 
|  | applications. | 
|  |  | 
|  | [[abfav]][[GSPLG00043]][[web-services]] | 
|  |  | 
|  | ==== Web Services | 
|  |  | 
|  | Clients can access a Jakarta EE application as a remote web service in | 
|  | addition to accessing it through HTTP, RMI/IIOP, and JMS. Web services | 
|  | are implemented using the Java API for XML-based web services (JAX-WS). | 
|  | A Jakarta EE application can also act as a client to web services, which | 
|  | would be typical in network applications. | 
|  |  | 
|  | Web Services Description Language (WSDL) is an XML format that describes | 
|  | web service interfaces. Web service consumers can dynamically parse a | 
|  | WSDL document to determine the operations a web service provides and how | 
|  | to execute them. {productName} distributes web services interface | 
|  | descriptions using a registry that other applications can access through | 
|  | the Java API for XML Registries (JAXR). | 
|  |  | 
|  | [[abfaw]][[GSPLG00044]][[client-access]] | 
|  |  | 
|  | ==== Client Access | 
|  |  | 
|  | Clients can access Jakarta EE applications in several ways. Browser clients | 
|  | access web applications using hypertext transfer protocol (HTTP). For | 
|  | secure communication, browsers use the HTTP secure (HTTPS) protocol that | 
|  | uses secure sockets layer (SSL). | 
|  |  | 
|  | Rich client applications running in the Application Client Container can | 
|  | directly lookup and access Enterprise JavaBeans using an Object Request | 
|  | Broker (ORB), Remote Method Invocation (RMI) and the internet inter-ORB | 
|  | protocol (IIOP), or IIOP/SSL (secure IIOP). They can access applications | 
|  | and web services using HTTP/HTTPS, JMS, and JAX-WS. They can use JMS to | 
|  | send messages to and receive messages from applications and | 
|  | message-driven beans. | 
|  |  | 
|  | Clients that conform to the Web Services-Interoperability (WS-I) Basic | 
|  | Profile can access Jakarta EE web services. WS-I is an integral part of the | 
|  | Jakarta EE standard and defines interoperable web services. It enables | 
|  | clients written in any supporting language to access web services | 
|  | deployed to {productName}. | 
|  |  | 
|  | The best access mechanism depends on the specific application and the | 
|  | anticipated volume of traffic. {productName} supports separately | 
|  | configurable listeners for HTTP, HTTPS, JMS, IIOP, and IIOP/SSL. You can | 
|  | set up multiple listeners for each protocol for increased scalability | 
|  | and reliability. | 
|  |  | 
|  | Jakarta EE applications can also act as clients of Jakarta EE components such | 
|  | as Enterprise JavaBeans modules deployed on other servers, and can use | 
|  | any of these access mechanisms. | 
|  |  | 
|  | [[abfax]][[GSPLG00045]][[external-systems-and-resources]] | 
|  |  | 
|  | ==== External Systems and Resources | 
|  |  | 
|  | On the Jakarta EE platform, an external system is called a resource. For | 
|  | example, a database management system is a JDBC resource. Each resource | 
|  | is uniquely identified and by its Java Naming and Directory Interface | 
|  | (JNDI) name. Applications access external systems through the following | 
|  | APIs and components: | 
|  |  | 
|  | * Java Database Connectivity (JDBC) - A database management system | 
|  | (DBMS) provides facilities for storing, organizing, and retrieving data. | 
|  | Most business applications store data in relational databases, which | 
|  | applications access via JDBC. {productName} includes the Java DB | 
|  | database for use sample applications and application development and | 
|  | prototyping, though it is not suitable for deployment. {productName} | 
|  | provides certified JDBC drivers for connecting to major relational | 
|  | databases. These drivers are suitable for deployment. | 
|  | * Java Message Service - Messaging is a method of communication between | 
|  | software components or applications. A messaging client sends messages | 
|  | to, and receives messages from, any other client via a messaging | 
|  | provider that implements the Java Messaging Service (JMS) API. {productName} includes a high-performance JMS broker, Open Message Queue. | 
|  | * Jakarta EE Connectors - The Jakarta EE Connector architecture enables | 
|  | integrating Jakarta EE applications and existing Enterprise Information | 
|  | Systems (EIS). An application accesses an EIS through a portable Jakarta EE | 
|  | component called a connector or resource adapter, analogous to using | 
|  | JDBC driver to access an RDBMS. Resource adapters are distributed as | 
|  | standalone Resource Adapter Archive (RAR) modules or included in Jakarta EE | 
|  | application archives. As RARs, they are deployed like other Jakarta EE | 
|  | components. {productName} includes evaluation resource adapters that | 
|  | integrate with popular EIS. | 
|  | * JavaMail - Through the JavaMail API, applications can connect to a | 
|  | Simple Mail Transport Protocol (SMTP) server to send email and to an | 
|  | IMAP or POP3 server to receive email. | 
|  |  | 
|  | [[abfay]][[GSPLG00017]][[glassfish-server-components]] | 
|  |  | 
|  | === {productName} Components | 
|  |  | 
|  | This section describes the components in {productName}. | 
|  |  | 
|  | The following topics are addressed here: | 
|  |  | 
|  | * link:#abfaz[Server Instances] | 
|  | * link:#abfba[Administrative Domains] | 
|  | * link:#abfbc[Clusters] | 
|  | * link:#abfbe[Named Configurations] | 
|  | * link:#abfbf[HTTP Load Balancer Plug-in] | 
|  | * link:#abfbh[IIOP Load Balancing in a Cluster] | 
|  | * link:#abfbi[Message Queue and JMS Resources] | 
|  |  | 
|  | The administration tools, such as the browser-based Administration | 
|  | Console, communicate with the domain administration server (DAS), which | 
|  | in turn communicates with the server instances. | 
|  |  | 
|  | [[abfaz]][[GSPLG00046]][[server-instances]] | 
|  |  | 
|  | ==== Server Instances | 
|  |  | 
|  | A server instance is a {productName} running in a single | 
|  | Java Virtual Machine (JVM) process. | 
|  | {productName} is certified with Java platform, Standard Edition (Java SE) 11. | 
|  |  | 
|  | It is usually sufficient to create a single server instance on a | 
|  | machine, since {productName} and accompanying JVM are both designed | 
|  | to scale to multiple processors. However, it can be beneficial to create | 
|  | multiple instances on one machine for application isolation and rolling | 
|  | upgrades. In some cases, a large server with multiple instances can be | 
|  | used in more than one administrative domain. The administration tools | 
|  | makes it easy to create, delete, and manage server instances across | 
|  | multiple machines. | 
|  |  | 
|  | [[abfba]][[GSPLG00047]][[administrative-domains]] | 
|  |  | 
|  | ==== Administrative Domains | 
|  |  | 
|  | An administrative domain (or simply domain) is a group of server | 
|  | instances that are administered together. A server instance belongs to a | 
|  | single administrative domain. The instances in a domain can run on | 
|  | different physical hosts. | 
|  |  | 
|  | You can create multiple domains from one installation of {productName}. By grouping server instances into domains, different | 
|  | organizations and administrators can share a single {productName} | 
|  | installation. Each domain has its own configuration, log files, and | 
|  | application deployment areas that are independent of other domains. | 
|  | Changing the configuration of one domain does not affect the | 
|  | configurations of other domains. Likewise, deploying an application on | 
|  | one domain does not deploy it or make it visible to any other domain. | 
|  |  | 
|  |  | 
|  | [NOTE] | 
|  | ==== | 
|  | All hosts in a domain on which the DAS and {productName} instances | 
|  | are running must have the same operating system. | 
|  | ==== | 
|  |  | 
|  |  | 
|  | [[abfbb]][[GSPLG00024]][[domain-administration-server-das]] | 
|  |  | 
|  | ===== Domain Administration Server (DAS) | 
|  |  | 
|  | A domain has one Domain Administration Server (DAS), a specially | 
|  | designated {productName} instance that hosts the administrative | 
|  | applications. The DAS authenticates the administrator, accepts requests | 
|  | from administration tools, and communicates with server instances in the | 
|  | domain to carry out the requests. | 
|  |  | 
|  | The administration tools are the `asadmin` command-line tool and the | 
|  | browser-based Administration Console. {productName} also provides a | 
|  | RESTful API for server administration. The administrator can view and | 
|  | manage a single domain at a time, thus enforcing secure separation. | 
|  |  | 
|  | The DAS is also sometimes referred to as the admin server or default | 
|  | server. It is referred to as the default server because it is the | 
|  | default target for some administrative operations. | 
|  |  | 
|  | Since the DAS is a {productName} instance, it can also host Jakarta EE | 
|  | applications for testing purposes. However, do not use it to host | 
|  | production applications. You might want to deploy applications to the | 
|  | DAS, for example, if the clusters and instances that will host the | 
|  | production application have not yet been created. | 
|  |  | 
|  | The DAS keeps a repository containing the configuration of its domain | 
|  | and all the deployed applications. If the DAS is inactive or down, there | 
|  | is no impact on the performance or availability of active server | 
|  | instances, however administrative changes cannot be made. In certain | 
|  | cases, for security purposes, it may be useful to intentionally stop the | 
|  | DAS process, for example to reboot the host operating system to install | 
|  | a kernel patch or a hardware upgrade. | 
|  |  | 
|  | Administrative commands are provided to backup and restore the domain | 
|  | configuration and applications. With the standard backup and restore | 
|  | procedures, you can quickly restore working configurations. If the DAS | 
|  | host fails, you must create a new DAS installation to restore the | 
|  | previous domain configuration. For instructions, see | 
|  | "link:administration-guide/domains.html#GSADG00006[Administering Domains]" in {productName} Administration Guide. | 
|  |  | 
|  | [[abfbc]][[GSPLG00048]][[clusters]] | 
|  |  | 
|  | ==== Clusters | 
|  |  | 
|  | A cluster is a named collection of server instances that share the same | 
|  | applications, resources, and configuration information. You can group | 
|  | server instances on different machines into one logical cluster and | 
|  | administer them as one unit. You can easily control the lifecycle of a | 
|  | multi-machine cluster with the DAS. | 
|  |  | 
|  | Clusters enable horizontal scalability, load balancing, and failover | 
|  | protection. By definition, all the instances in a cluster have the same | 
|  | resource and application configuration. When a server instance or a | 
|  | machine in a cluster fails, the load balancer detects the failure, | 
|  | redirects traffic from the failed instance to other instances in the | 
|  | cluster, and recovers the user session state. Since the same | 
|  | applications and resources are on all instances in the cluster, an | 
|  | instance can failover to any other instance in the cluster. | 
|  |  | 
|  |  | 
|  | [NOTE] | 
|  | ==== | 
|  | All hosts in a cluster on which the DAS and {productName} instances | 
|  | are running must have the same operating system. | 
|  | ==== | 
|  |  | 
|  |  | 
|  | Clusters, domains, and instances are related as follows: | 
|  |  | 
|  | * An administrative domain can have zero or more clusters. | 
|  | * A cluster has one or more server instances. | 
|  | * A cluster belongs to a single domain. | 
|  |  | 
|  | [[abfbe]][[GSPLG00049]][[named-configurations]] | 
|  |  | 
|  | ==== Named Configurations | 
|  |  | 
|  | A named configuration is an abstraction that encapsulates {productName} property settings. Clusters and stand-alone server instances | 
|  | reference a named configuration to get their property settings. With | 
|  | named configurations, Jakarta EE containers' configurations are independent | 
|  | of the physical machine on which they reside, except for particulars | 
|  | such as IP address, port number, and amount of heap memory. Using named | 
|  | configurations provides power and flexibility to {productName} | 
|  | administration. | 
|  |  | 
|  | To apply configuration changes, you simply change the property settings | 
|  | of the named configuration, and all the clusters and stand-alone | 
|  | instances that reference it pick up the changes. You can only delete a | 
|  | named configuration when all references to it have been removed. A | 
|  | domain can contain multiple named configurations. | 
|  |  | 
|  | {productName} comes with a default configuration, called | 
|  | default-config. The default configuration is optimized for developer | 
|  | productivity. | 
|  |  | 
|  | You can create your own named configuration based on the default | 
|  | configuration that you can customize for your own purposes. Use the | 
|  | Administration Console and `asadmin` command line utility to create and | 
|  | manage named configurations. | 
|  |  | 
|  | [[abfbf]][[GSPLG00050]][[http-load-balancer-plug-in]] | 
|  |  | 
|  | ==== HTTP Load Balancer Plug-in | 
|  |  | 
|  | The load balancer distributes the workload among multiple physical | 
|  | machines, thereby increasing the overall throughput of the system. The | 
|  | {productName} includes the load balancer plug-ins for Oracle iPlanet | 
|  | Web Server, Oracle HTTP Server, Apache Web Server, and Microsoft | 
|  | Internet Information Server. | 
|  |  | 
|  | The load balancer plug-in accepts HTTP and HTTPS requests and forwards | 
|  | them to one of the {productName} instances in the cluster. Should an | 
|  | instance fail, become unavailable (due to network faults), or become | 
|  | unresponsive, requests are redirected to existing, available machines. | 
|  | The load balancer can also recognize when a failed instance has | 
|  | recovered and redistribute the load accordingly. | 
|  |  | 
|  | For simple stateless applications, a load-balanced cluster may be | 
|  | sufficient. However, for mission-critical applications with session | 
|  | state, use load balanced clusters with replicated session persistence. | 
|  |  | 
|  | To setup a system with load balancing, in addition to {productName}, | 
|  | you must install a web server and the load-balancer plug-in. Then you | 
|  | must: | 
|  |  | 
|  | * Create {productName} clusters that you want to participate in load | 
|  | balancing. | 
|  | * Deploy applications to these load-balanced clusters. | 
|  |  | 
|  | Server instances and clusters participating in load balancing have a | 
|  | homogenous environment. Usually that means that the server instances | 
|  | reference the same server configuration, can access the same physical | 
|  | resources, and have the same applications deployed to them. Homogeneity | 
|  | enables configuration consistency, and improves the ability to support a | 
|  | production deployment. | 
|  |  | 
|  | Use the `asadmin` command-line tool to create a load balancer | 
|  | configuration, add references to clusters and server instances to it, | 
|  | enable the clusters for reference by the load balancer, enable | 
|  | applications for load balancing, optionally create a health checker, | 
|  | generate the load balancer configuration file, and finally copy the load | 
|  | balancer configuration file to your web server `config` directory. An | 
|  | administrator can create a script to automate this entire process. | 
|  |  | 
|  | For more details and complete configuration instructions, see | 
|  | "link:ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in {productName} High Availability Administration Guide. | 
|  |  | 
|  | [[abfbg]][[GSPLG00051]][[session-persistence]] | 
|  |  | 
|  | ==== Session Persistence | 
|  |  | 
|  | Jakarta EE applications typically have significant amounts of session state | 
|  | data. A web shopping cart is the classic example of a session state. | 
|  | Also, an application can cache frequently-needed data in the session | 
|  | object. In fact, almost all applications with significant user | 
|  | interactions need to maintain a session state. Both HTTP sessions and | 
|  | stateful session beans (SFSBs) have session state data. | 
|  |  | 
|  | While the session state is not as important as the transactional state | 
|  | stored in a database, preserving the session state across server | 
|  | failures can be important to end users. {productName} provides the | 
|  | capability to save, or persist, this session state in a repository. If | 
|  | the {productName} instance that is hosting the user session | 
|  | experiences a failure, the session state can be recovered. The session | 
|  | can continue without loss of information. | 
|  |  | 
|  | {productName} supports the following session persistence types: | 
|  |  | 
|  | * Memory | 
|  | * Replicated | 
|  | * File | 
|  | * Coherence | 
|  | * Web | 
|  |  | 
|  | With memory persistence, the state is always kept in memory and does not | 
|  | survive failure. With replicated persistence, {productName} uses | 
|  | other server instances in the cluster as the persistence store for both | 
|  | HTTP and SFSB sessions. With file persistence, {productName} | 
|  | serializes session objects and stores them to the file system location | 
|  | specified by session manager properties. For SFSBs, if replicated | 
|  | persistence is not specified, {productName} stores state information | 
|  | in the session-store subdirectory of this location. For more information | 
|  | about Coherence*Web, see | 
|  | http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/glassfish.html[Using | 
|  | Coherence*Web with {productName}] | 
|  | (`http://docs.oracle.com/cd/E18686_01/coh.37/e18690/glassfish.html`). | 
|  |  | 
|  | Checking an SFSB's state for changes that need to be saved is called | 
|  | checkpointing. When enabled, checkpointing generally occurs after any | 
|  | transaction involving the SFSB is completed, even if the transaction | 
|  | rolls back. For more information on developing stateful session beans, | 
|  | see "link:application-development-guide/ejb.html#GSDVG00147[Using Session Beans]" in {productName} Application Development Guide. For more information on | 
|  | enabling SFSB failover, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00211[Stateful Session Bean | 
|  | Failover]" in {productName} High Availability | 
|  | Administration Guide. | 
|  |  | 
|  | Apart from the number of requests being served by {productName}, the | 
|  | session persistence configuration settings also affect the session | 
|  | information in each request. | 
|  |  | 
|  | For more information on configuring session persistence, see | 
|  | "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High Availability Session Persistence and | 
|  | Failover]" in {productName} High Availability | 
|  | Administration Guide. | 
|  |  | 
|  | [[abfbh]][[GSPLG00052]][[iiop-load-balancing-in-a-cluster]] | 
|  |  | 
|  | ==== IIOP Load Balancing in a Cluster | 
|  |  | 
|  | With IIOP load balancing, IIOP client requests are distributed to | 
|  | different server instances or name servers. The goal is to spread the | 
|  | load evenly across the cluster, thus providing scalability. IIOP load | 
|  | balancing combined with EJB clustering and availability features in | 
|  | {productName} provides not only load balancing but also EJB failover. | 
|  |  | 
|  | There are two steps to IIOP failover and load balancing. The first step, | 
|  | bootstrapping, is the process by which the client sets up the initial | 
|  | naming context with one ORB in the cluster. The client attempts to | 
|  | connect to one of the IIOP endpoints. When launching an application | 
|  | client using the `appclient` script, you specify these endpoints using | 
|  | the `-targetserver` option on the command line or `target-server` | 
|  | elements in the `sun-acc.xml` configuration file. The client randomly | 
|  | chooses one of these endpoints and tries to connect to it, trying other | 
|  | endpoints if needed until one works. | 
|  |  | 
|  | The second step concerns sending messages to a specific EJB. By default, | 
|  | all naming look-ups, and therefore all EJB accesses, use the cluster | 
|  | instance chosen during bootstrapping. The client exchanges messages with | 
|  | an EJB through the client ORB and server ORB. As this happens, the | 
|  | server ORB updates the client ORB as servers enter and leave the | 
|  | cluster. Later, if the client loses its connection to the server from | 
|  | the previous step, the client fails over to some other server using its | 
|  | list of currently active members. In particular, this cluster member | 
|  | might have joined the cluster after the client made the initial | 
|  | connection. | 
|  |  | 
|  | When a client performs a JNDI lookup for an object, the Naming Service | 
|  | creates an `InitialContext` (IC) object associated with a particular | 
|  | server instance. From then on, all lookup requests made using that IC | 
|  | object are sent to the same server instance. All `EJBHome` objects | 
|  | looked up with that `InitialContext` are hosted on the same target | 
|  | server. Any bean references obtained henceforth are also created on the | 
|  | same target host. This effectively provides load balancing, since all | 
|  | clients randomize the list of live target servers when creating | 
|  | `InitialContext` objects. If the target server instance goes down, the | 
|  | lookup or EJB method invocation will failover to another server | 
|  | instance. | 
|  |  | 
|  | Adding or deleting new instances to the cluster does not update the | 
|  | existing client's view of the cluster. You must manually update the | 
|  | endpoints list on the client side. | 
|  |  | 
|  | [[abfbi]][[GSPLG00053]][[message-queue-and-jms-resources]] | 
|  |  | 
|  | ==== Message Queue and JMS Resources | 
|  |  | 
|  | The Open Message Queue (Message Queue) provides reliable, asynchronous | 
|  | messaging for distributed applications. Message Queue is an enterprise | 
|  | messaging system that implements the Java Message Service (JMS) | 
|  | standard. Message Queue provides messaging for Jakarta EE application | 
|  | components such as message-driven beans (MDBs). | 
|  |  | 
|  | {productName} implements the Java Message Service (JMS) API by | 
|  | integrating Message Queue into {productName}. {productName} | 
|  | includes the Enterprise version of Message Queue which has failover, | 
|  | clustering and load balancing features. | 
|  |  | 
|  | For basic JMS administration tasks, use the {productName} | 
|  | Administration Console and `asadmin` command-line utility. | 
|  |  | 
|  | For advanced tasks, including administering a Message Queue cluster, use | 
|  | the tools provided in the as-install``/mq/bin`` directory. For details | 
|  | about administering Message Queue, see the link:../openmq/mq-admin-guide.html#GMADG[Open Message | 
|  | Queue Administration Guide]. | 
|  |  | 
|  | For information on deploying JMS applications and Message Queue | 
|  | clustering for message failover, see link:planning.html#abfdn[Planning | 
|  | Message Queue Broker Deployment]. | 
|  |  | 
|  | [[abfca]][[GSPLG00018]][[configuration-roadmap-for-high-availability-of-glassfish-server]] | 
|  |  | 
|  | === Configuration Roadmap for High Availability of {productName} | 
|  |  | 
|  | The following procedure lists the major tasks for configuring {productName} for high availability. The procedure also provides | 
|  | cross-references to detailed instructions for performing each task. | 
|  |  | 
|  | [[sthref6]][[to-configure-glassfish-server-for-high-availability]] | 
|  |  | 
|  | ==== To Configure {productName} for High Availability | 
|  |  | 
|  | 1. Determine your requirements and goals for performance and QoS. + | 
|  | For more information, see the following documentation: | 
|  | * link:planning.html#abfcc[Establishing Performance Goals] | 
|  | * link:planning.html#abfcp[Planning the Network Configuration] | 
|  | * link:planning.html#abfcy[Planning for Availability] | 
|  |  | 
|  | 2. Size your system. + | 
|  | For more information, see link:planning.html#abfdg[Design Decisions]. | 
|  |  | 
|  | 3. Install {productName} and related subcomponents such as a web server. + | 
|  | For more information, see the following documentation: | 
|  | * link:installation-guide.html#GSING[{productName} Installation Guide] | 
|  | * Installation guides for related subcomponents, for example, Oracle | 
|  | iPlanet Web Server 7.0.9 Installation and Migration Guide | 
|  | (`http://docs.oracle.com/cd/E19146-01/821-1832/index.html`) | 
|  |  | 
|  | 4. If you plan to administer your clusters centrally, set up secure | 
|  | shell (SSH) for centralized administration. + | 
|  | For more information, see "link:ha-administration-guide/ssh-setup.html#GSHAG00003[ | 
|  | Setting Up SSH for Centralized Administration]" in {productName} | 
|  | High Availability Administration Guide. | 
|  |  | 
|  | 5. Configure domains, nodes, clusters, {productName} instances, and | 
|  | virtual servers as required. + | 
|  | For more information, see the following documentation: | 
|  | * "link:administration-guide/domains.html#GSADG00006[Administering Domains]" in {productName} Administration Guide | 
|  | * "link:ha-administration-guide/nodes.html#GSHAG00004[Administering {productName} Nodes]" in {productName} High Availability Administration Guide | 
|  | * "link:ha-administration-guide/clusters.html#GSHAG00005[Administering {productName} Clusters]" in | 
|  | {productName} High Availability Administration Guide | 
|  | * "link:ha-administration-guide/instances.html#GSHAG00006[Administering {productName} Instances]" in | 
|  | {productName} High Availability Administration Guide | 
|  | * "link:administration-guide/http_https.html#GSADG00589[Administering Virtual Servers]" in {productName} Administration Guide | 
|  |  | 
|  | 6. Configure your load balancer. + | 
|  | For more information, see "link:administration-guide/webapps.html#GSADG00552[Administering mod_jk]" in | 
|  | {productName} Administration Guide. | 
|  |  | 
|  | 7. Configure the web container and EJB container for replicated session persistence. + | 
|  | For more information, see "link:ha-administration-guide/session-persistence-and-failover.html#GSHAG00011[Configuring High | 
|  | Availability Session Persistence and Failover]" in {productName} High Availability Administration Guide. | 
|  |  | 
|  | 8. If you are using messaging extensively, configure Java Message | 
|  | Service (JMS) clusters for failover . + | 
|  | For more information, see the following documentation: | 
|  | * link:planning.html#abfdn[Planning Message Queue Broker Deployment] | 
|  | * "link:ha-administration-guide/jms.html#GSHAG00012[Configuring Java Message Service High Availability]" | 
|  | in {productName} High Availability Administration | 
|  | Guide | 
|  | * link:../openmq/mq-admin-guide.html#GMADG[Open Message Queue Administration Guide] | 
|  |  | 
|  | 9. Deploy applications and configure them for high availability and session failover. + | 
|  | For more information, see the link:application-deployment-guide.html#GSDPG[{productName} Application Deployment Guide]. |