Oracle JavaServer Pages Developer's Guide and Reference Release 8.1.7 Part Number A83726-01 |
Library | Service | Contents | Index

## Support for OracleJSP in Oracle Environments

This section provides brief overviews of Oracle environments that support and provide OracleJSP, covering the following topics:

- Overview of the Oracle Servlet Engine (OSE)

- Overview of the Oracle Internet Application Server

- Role of the Oracle HTTP Server, Powered by Apache

- Oracle Web Application Database Access Strategies

- Overview of Other Oracle JSP Environments

The Oracle Servlet Engine (OSE), a Web server and servlet container that runs inside the Oracle8i database, supports a JSP pre-translation model. JSP pages are translated into servlets prior to or during deployment into the database and subsequently run in the database address space.

For the other Oracle environments, the OracleJSP container supports the typical on-demand translation model, typically translating the pages at runtime. OracleJSP is designed to run effectively in either situation and provide consistent semantics regardless of your choice of server.

### Overview of the Oracle Servlet Engine (OSE)

If your JSP pages are intended to access an Oracle8i database, you can execute them directly in the database--the Oracle Servlet Engine (OSE), which is included with Oracle8i JServer, incorporates the OracleJSP container. This reduces communication overhead compared to JSP execution in a middle tier. Access to the database is through the Oracle JDBC server-side internal driver.

The OSE execution model requires the developer to take some special steps to deploy the JSP pages into the Oracle8i database. This includes translating the pages, loading them into the server, and "publishing" them to make them available for execution.

During installation of Oracle8i release 8.1.7, the Oracle HTTP Server, powered by Apache, is set as the default Web server, acting as a front-end for JSP and servlet applications running in OSE. Refer to your installation instructions if you want to change this setting.

Oracle Servlet Engine release 8.1.7 supports the servlet 2.2 and JSP 1.1 specifications, incorporating OracleJSP release 8.1.7 (1.1.0.0.0).

### Overview of the Oracle Internet Application Server

The Oracle Internet Application Server is a scalable, secure, middle-tier application server. It can be used to deliver Web content, host Web applications, connect to back-office applications, and make these services accessible to any client browser. Users can access information, perform business analysis, and run business applications on the Internet or corporate intranets or extranets.

To deliver this range of content and services, Oracle Internet Application Server release 1.0.x incorporates the Oracle HTTP Server release 1.0.0 (powered by Apache), the iCache for database caching and applications in the middle tier, Oracle Forms Services and Oracle Reports Services to support Oracle Forms-based applications and reports generation, and various business logic runtime environments that support Enterprise JavaBeans, stored procedures, and Oracle Business Components for Java.

For database access, the Oracle HTTP Server can route HTTP requests to servlets or JSP pages running in either of the following scenarios:

- directly in Oracle8i (routing is through the Apache `mod_ose` module)

  In this scenario, database access is through the JDBC server-side internal driver (using either JDBC or SQLJ code).

- in the Apache/JServ environment (routing is through the Apache `mod_jserv` module)

  In this scenario, database access is through client-side/middle-tier JDBC drivers (using either JDBC or SQLJ code).

Oracle Internet Application Server release 1.0.x provides servlet and JSP environments as follows:

- Both release 1.0.0 and 1.0.1 include the Apache/JServ servlet environment, supporting the servlet 2.0 specification.

- Release 1.0.0 includes OracleJSP release 1.0.0.6.1, supporting the JSP 1.0 specification.

- Release 1.0.1 includes OracleJSP release 1.1.0.0.0, supporting the JSP 1.1 specification.

See the Oracle Internet Application Server 8i Documentation Library for more information about the Internet Application Server.

Note: Future releases of Oracle Internet Application Server may replace the Apache/JServ environment with an alternative servlet environment.

### Role of the Oracle HTTP Server, Powered by Apache

Oracle HTTP Server release 1.0.0, powered by the Apache Web server, is included with Oracle Internet Application Server release 1.0.x and Oracle8i release 8.1.7 as the HTTP entry point for Web applications accessing the Oracle8i database.

You can employ the Oracle HTTP Server to access Oracle8i from applications running either inside or outside the database. It accesses the database through appropriate Apache add-on modules.

The remainder of this section covers the following topics:

- Use of Apache Mods

- More About mod_ose

- More About mod_jserv

  Notes: The Oracle Servlet Engine itself can function as a Web server; however, it is advisable to use it as a servlet container in conjunction with the Oracle HTTP Server, particularly for applications with static HTML. The `mod_ose` module allows access to OSE through the Oracle HTTP Server. In the Oracle Internet Application Server framework, you can use the Oracle HTTP Server to access either the Oracle iCache (for read-only data that has been cached) or the back-end Oracle8i database. For Internet Application Server releases 1.0.0 and 1.0.1, however, you cannot use the `mod_ose`/OSE scenario because those releases of iCache do not yet include the Oracle Servlet Engine.

#### Use of Apache Mods

In using the Oracle HTTP Server, powered by Apache, dynamic content is delivered through various Apache mod components provided either by Apache or by other vendors such as Oracle. (Static content is typically delivered from the file system.) An Apache mod is typically a module of C code, running in the Apache address space, that passes requests to a particular mod-specific processor. (The mod software will have been written specifically for use with the particular processor.)

The following Apache mods are of interest to OracleJSP developers:

- `mod_ose` is provided by Oracle for JSP pages and servlets that have been deployed into the Oracle8i database and will be executed by the Oracle Servlet Engine inside the database address space.

- `mod_jserv` is provided by Apache and can be used in accessing the Oracle8i database from JSP pages or servlets running in the Apache/JServ servlet environment in a middle-tier JVM.

  Note: Many additional Apache "mod" components are available for use in an Apache environment, provided by Apache for general use or by Oracle for Oracle-specific use, but they are not relevant for JSP applications.

#### More About mod_ose

The `mod_ose` component, supplied by Oracle, delegates HTTP requests to JSP pages or servlets running in OSE. It communicates with OSE using HTTP over the Net8 protocol and can handle either stateless or stateful requests. Each virtual domain configured in the Oracle HTTP Server is associated with a database connection string (a Net8 name-value list) that indicates where to make a connection to execute the request. The connection uses Net8 directly, providing the same load balancing and hot backup functionality as OCI.

If an application running in an Oracle Internet Application Server framework uses `mod_ose`, then the Internet Application Server's Apache/JServ servlet 2.0 environment is not involved. The Oracle Servlet Engine's own servlet 2.2 environment is used instead.

JSP applications and servlets running in OSE use the Oracle JDBC server-side internal driver for rapid database access. For an overview of OSE, see "Overview of the Oracle Servlet Engine (OSE)".

You can use the JServer session shell `exportwebdomain` command to configure `mod_ose` to find published servlets and JSP pages in the database.

See the Oracle8i Oracle Servlet Engine User's Guide for more information about `mod_ose` and for information about the `exportwebdomain` command.

#### More About mod_jserv

The `mod_jserv` component, supplied by Apache, delegates HTTP requests to JSP pages or servlets running in the Apache/JServ servlet container in a middle-tier JVM. Oracle Internet Application Server release 1.0.x includes the Apache/JServ servlet container, which supports the servlet 2.0 specification, and either JDK 1.1.8 or 1.2.2. The middle-tier environment may or may not be on the same physical host as the back-end Oracle8i database.

Communication between `mod_jserv` and middle-tier JVMs uses a proprietary Apache/JServ protocol over TCP/IP. The `mod_jserv` component can delegate requests to multiple JVMs in a pool for load balancing.

JSP applications running in middle-tier JVMs use the Oracle JDBC OCI driver or Thin driver to access the database.

Servlet 2.0 environments (as opposed to servlet 2.1 or 2.2 environments) have issues that require special consideration. See "Considerations for Apache/JServ Servlet Environments".

Refer to Apache documentation for `mod_jserv` configuration information. (This documentation is provided with Oracle8i and with the Oracle Internet Application Server.)

### Oracle Web Application Database Access Strategies

Developers who are targeting the Oracle8i database from JSP applications have a number of options, including the following:

1. Run in the Apache/JServ servlet container through the Oracle HTTP Server (using `mod_jserv`).

2. Run in the Oracle Servlet Engine through the Oracle HTTP Server (using `mod_ose`).

3. Run in the Oracle Servlet Engine and use it as the Web server directly (although it is generally recommended to use Oracle HTTP Server).

   Note: When you use the Oracle HTTP Server, be aware that the Apache/JServ servlet container has a different default doc root for static files than the Oracle Servlet Engine has. See "Doc Root for Oracle Internet Application Server Versus Oracle Servlet Engine".

Running in Apache/JServ, because it uses a standard JVM (currently JDK 1.2.2 or 1.1.8), is necessary if you want to use the JDBC OCI driver or if the application requires Java features not available in the Oracle8i JServer environment (JNI, for example).

However, running in Apache/JServ has the disadvantage of requiring a pool of multiple JVMs that must be configured manually. (For more information, refer to the Apache `mod_jserv` documentation provided with Oracle8i or the Oracle Internet Application Server.)

If you do not require Java features such as JNI, especially for applications that are SQL-intensive, running in OSE is usually preferable for the following reasons:

- OSE offers speedier database access, because it runs in the Oracle8i address space and uses the Oracle JDBC server-side internal driver.

- OSE offers greater security.

- OSE offers stronger support for statefulness.

Although employing the Oracle Servlet Engine directly as the Web server is feasible, and may be preferable in some situations, accessing it through the Oracle HTTP Server and `mod_ose` is the typical scenario and is recommended.

In particular, Oracle HTTP Server and `mod_ose` can handle the following situations that OSE by itself cannot:

- database access through a Net8-certified firewall

- implementation of a fault-tolerant system using multiple databases

- database access through port 80

  This is typically not possible when using OSE as a Web server directly. In a UNIX environment, for example, port 80 is accessible only from the `root` account, and end-users do not have `root` access.

- connection pooling for stateless applications so that session startup overhead is mostly avoided

The default installation of Oracle8i release 8.1.7 uses the Oracle HTTP Server as the front-end Web server for JSP pages and servlets that run in OSE.

### Overview of Other Oracle JSP Environments

In addition to the Oracle Servlet Engine and Oracle Internet Application Server, the following Oracle environments support OracleJSP:

- Oracle Application Server

- Oracle Web-to-go

- Oracle JDeveloper

#### Oracle Application Server

Oracle Application Server (OAS) is a scalable, standards-based middle-tier environment for application logic, offering database integration in supporting business applications in both corporate and e-business environments.

New customers will presumably use Oracle Internet Application Server, discussed previously, instead of OAS. For existing OAS customers, however, Oracle Application Server release 4.0.8.2 includes a servlet 2.1 environment and OracleJSP release 1.0.0.6.0 (supporting the JSP 1.0 specification).

Refer to the Oracle Application Server Developer's Guide: JServlet and JSP Applications for more information.

#### Oracle Web-to-go

Oracle Web-to-go, a component of Oracle8i Lite, consists of a collection of modules and services that facilitate development, deployment, and management of mobile Web applications.

Web-to-go lets developers extend Web-based applications to intermittently connected users without coding the infrastructure required for replication, synchronization, and other networking issues. Unlike traditional mobile computing technologies, which rely on custom or proprietary application-programming interfaces (APIs), Web-to-go uses industry-standard Internet technologies.

Web-to-go release 1.3 provides a servlet 2.1 environment and OracleJSP release 1.0.0.6.1 (supporting the JSP 1.0 specification). Future releases will offer a servlet 2.2 environment and OracleJSP 1.1.x.

Refer to the Oracle Web-to-go Implementation Guide for more information.

#### Oracle JDeveloper

JDeveloper is a Java development tool, rather than a "platform" like the other Oracle products listed here, but incorporates a Web listener, servlet runner, and the OracleJSP container for execution and testing.

See "Oracle JDeveloper Support for OracleJSP" for more information.

JDeveloper version 3.1 provides a servlet 2.1 environment and OracleJSP release 1.0.0.6.1 (supporting the JSP 1.0 specification). Future releases will offer a servlet 2.2 environment and OracleJSP 1.1.x.

| Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
Library | Service | Contents | Index