Skip Headers

Oracle9iAS Containers for J2EE Support for JavaServer Pages Developer's Guide
Release 2 (9.0.3)

Part Number A97679-01
Go To Core Documentation
Core
Go To Platform Documentation
Platform
Go To Table Of Contents
Contents
Go To Index
Index

Go to previous page Go to next page

2
Overview of the Oracle JSP Implementation

The JSP container provided with Oracle9iAS Containers for J2EE (OC4J) in the Oracle9i Application Server is a complete implementation of the Sun Microsystems JavaServer Pages Specification, Version 1.2. JSP 1.2 functionality depends upon servlet 2.3 functionality, and the OC4J servlet container is a complete implementation of the Sun Microsystems Java Servlet Specification, Version 2.3.

This chapter provides overviews of the Oracle9i Application Server, OC4J, the OC4J JSP implementation and features, and custom tag libraries and utilities that are also supplied (documented in the Oracle9iAS Containers for J2EE JSP Tag Libraries and Utilities Reference).

The following topics are covered here:

Overview of the Oracle9i Application Server and JSP Support

This section provides a brief overview of the Oracle9i Application Server, its J2EE environment, its JSP implementation, and its Web server:


Note:

Users of earlier Oracle9iAS releases can refer to Oracle9i Application Server Migrating to Release 2 (9.0.3) for information about issues in migrating to Oracle9iAS release 2.


Overview of the Oracle9i Application Server

Oracle9i 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. Major areas of functionality include business intelligence, e-business integration, J2EE Web services, performance and caching, portals, wireless, and management and security.

To deliver this range of content and services, the Oracle9i Application Server incorporates many components, including the Oracle HTTP Server, Oracle9iAS Web Cache, Oracle9iAS Web Services, Oracle9iAS Portal, Oracle9iAS Wireless, Oracle9iAS Forms Services and Reports Services (to support Oracle Forms-based applications and reports generation), Oracle9iAS Personalization, and various business logic runtime environments that support Enterprise JavaBeans, stored procedures, and Oracle Business Components for Java.

For its J2EE environment, Oracle9iAS provides the Oracle9iAS Containers for J2EE (OC4J), which includes the JSP container described in this manual, a servlet container, and an EJB container.

(In addition, Oracle9iAS includes an Apache JServ servlet environment, documented in Appendix B, "The Apache JServ Environment".)

Overview of OC4J

OC4J is a high-performance J2EE-compliant environment providing a scalable and reliable server infrastructure by supporting clusters and load balancing. (See the Oracle9i Application Server Performance Guide for information about clustering.) With Oracle9iAS release 2 (9.0.3), OC4J complies with the J2EE 1.3 specification.

OC4J General Features

Each OC4J instance runs in a single Java virtual machine. The JVM running an OC4J instance is referred to as a node. One or more nodes--typically about two to four--form an island. Multiple islands together form a cluster. For each OC4J cluster, there is a JVM for each OC4J instance, plus a JVM for the load balancer. (Other types of clusters are possible in Oracle9iAS as well, as discussed in the Oracle9i Application Server Administrator's Guide.)

In addition to load balancing, which improves performance by distributing requests among multiple servers, the clustering mechanism provides fault tolerance, which allows any particular server to redirect a client to another server in the event of failure.

Java applications built with any development tool can be deployed to OC4J, which supports standard EAR/WAR/JAR deployment. You can debug applications deployed to OC4J through standard Java profiling and debugging facilities.

In an Oracle9iAS environment, OC4J can be fully managed and configured using the HTML-based Oracle Enterprise Manager. This includes full support for managing clustering, configuration, and deployment.

OC4J Services

OC4J supports the following Java and J2EE services:

OC4J Containers

OC4J supplies the following J2EE containers:

OC4J containers have been instrumented to support the Dynamic Monitoring Service (DMS) to provide runtime performance data. You can view this data through Enterprise Manager.


Note:

Servlet 2.3 compliance is required in order to support JSP 1.2 compliance.


Key Servlet Container Features

The OC4J servlet container supports stateful failover and cluster deployment in addition to the following key features:

Key EJB Container Features

The OC4J EJB container supports the following:

EJB support in OC4J also includes these features:

OC4J Standalone

In a production environment, it is typical to use OC4J inside a complete Oracle9iAS environment, including the Oracle HTTP Server (as described in "Role of the Oracle HTTP Server and mod_oc4j"), Oracle9iAS Web Cache, and Enterprise Manager.

For a development environment, OC4J is also available as a standalone component by downloading OC4J_extended.zip from the Oracle Technology Network (http://otn.oracle.com).

When using OC4J standalone, you can use its own HTTP Web listener through port 8888. For information about OC4J standalone, see the standalone version of the Oracle9iAS Containers for J2EE User's Guide (downloadable with OC4J_extended.zip) and the Oracle9iAS Containers for J2EE Servlet Developer's Guide.

Overview of the JSP Implementation in OC4J

The JSP container in OC4J is compliant with the Sun Microsystems JSP 1.2 specification.

In general, a JSP 1.2 environment requires a servlet 2.3 environment, such as the OC4J servlet container. The Oracle JSP implementation, however, also supports running on Apache JServ, a servlet 2.0 environment. To make this possible, the OC4J JSP container emulates required servlet features beyond the 2.0 specification.

For a variety of reasons, though, it is generally advisable to use the OC4J servlet 2.3 environment.

This section offers additional information on the following topics:

History and Integration of JSP Containers

In Oracle9iAS release 1.0.2.2, the first release to include OC4J, there were two JSP containers: 1) a container developed by Oracle and known as "OracleJSP"; 2) a container licensed from Ironflare AB and known as the "Orion JSP container".

The OracleJSP container offered several advantages, including useful value-added features and enhancements such as for globalization and SQLJ support. The Orion container also offered advantages, including superior speed, but had disadvantages as well. It did not always exhibit standard behavior when compared to the JSP reference implementation (Tomcat), and its support for internationalization and globalization was not as complete.

Oracle9iAS release 2 (9.0.2) first integrated the OracleJSP and Orion containers into a single JSP container referred to in this manual as the "OC4J JSP container". This container offers the best features of both previous versions, runs efficiently as a servlet in the OC4J servlet container, and is integrated with other OC4J containers as well. The integrated container primarily consists of the OracleJSP translator and the Orion container runtime, running with a simplified dispatcher and the OC4J core runtime classes.

JSP Front-End Servlet and Configuration

The JSP container in OC4J uses the front-end servlet oracle.jsp.runtimev2.JspServlet. See "JSP Configuration in OC4J".

For non-OC4J environments, including Apache JServ, use the old front-end servlet, oracle.jsp.JspServlet. See "Getting Started in a JServ Environment".

OC4J JSP Features for JSP 1.2

Beginning with the OC4J 9.0.3 implementation, the OC4J JSP container is fully compliant with the JSP 1.2 specification. Most of the new functionality is in the area of custom tag libraries. Here is a summary of new features:

Configurable JSP Extensions in OC4J

In addition to JSP 1.2 compliance, the OC4J JSP container in Oracle9iAS release 2 (9.0.3) includes the following configurable features.

Also see "Overview of Oracle Value-Added Features".

The following features are new in the OC4J 9.0.3 implementation:

The following features have been supported since the OC4J 9.0.2 implementation:

Portability Across Servlet Environments

The JSP container is provided as a component of OC4J, but is portable to other environments. Because the OC4J JSP container itself emulates certain required servlet features, this portability extends to older servlet environments, in particular the Apache JServ servlet 2.0 environment. (Generally, a servlet 2.3 environment is required in order to support JSP 1.2 compliance.)

The servlet 2.0 specification was limited in that it provided only a single servlet context for each Java virtual machine, instead of a servlet context for each application. The OC4J JSP servlet emulation allows a full application framework in a servlet 2.0 environment, including providing applications with distinct ServletContext and HttpSession objects.

Because of this extended functionality, the OC4J JSP container is not limited by the underlying servlet environment.

In addition to JServ 1.1, the OC4J JSP container has been tested with Tomcat 3.1 (servlet 2.2) from the Apache Software Foundation, and JSWDK 1.0 (JavaServer Web Developer's Kit, servlet 2.1) from Sun Microsystems.

Role of the Oracle HTTP Server and mod_oc4j

Oracle HTTP Server, powered by the Apache Web server, is included with Oracle9i Application Server as the HTTP entry point for Web applications, particularly in a production environment. By default, it is the front-end for all OC4J processes--client requests go through Oracle HTTP Server first.

When the Oracle HTTP Server is used, dynamic content is delivered through various Apache mod components provided either by the Apache Software Foundation or by Oracle. Static content is typically delivered from the file system, which is more efficient in this case. 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.

Oracle9iAS supplies the mod_oc4j Apache mod, which is used for communication between the Oracle HTTP Server and OC4J. It routes requests from the Oracle HTTP Server to OC4J processes, and forwards responses from OC4J processes to Web clients.

Communication is through the Apache JServ protocol (AJP). AJP was chosen over HTTP because of a variety of AJP features allowing faster communication, including use of binary format and more efficient processing of message headers.

The following features are provided with mod_oc4j:


Notes:

  • Oracle9iAS also includes mod_jserv, from Apache, for the JServ servlet environment. This feature is documented in Appendix B, "The Apache JServ Environment". Additional Apache mod components provided with Oracle9iAS are not relevant for JSP applications.

  • It is possible to bypass the Oracle HTTP Server and access OC4J directly through its own Web listener, which is convenient for development or basic testing. And for OC4J standalone, Oracle HTTP Server is not available. For information about port configuration and default settings, see the Oracle9iAS Containers for J2EE User's Guide. For an introduction to OC4J standalone, see "OC4J Standalone".


Oracle9i JDeveloper JSP Support

Visual Java programming tools now typically support JSP coding. In particular, Oracle9i JDeveloper supports JSP development and includes the following features:

See "Application Deployment with Oracle9i JDeveloper" for more information about JSP deployment support.

For debugging, JDeveloper can set breakpoints within JSP page source and can follow calls from JSP pages into JavaBeans. This is much more convenient than manual debugging techniques, such as adding print statements within the JSP page to output state into the response stream (for viewing in your browser) or to the server log (through the log() method of the implicit application object).

For information about JDeveloper, refer to the JDeveloper online help, or to the following site on the Oracle Technology Network:

http://otn.oracle.com/products/jdev/content.html

For an overview of JSP tag libraries provided with JDeveloper, see the Oracle9iAS Containers for J2EE JSP Tag Libraries and Utilities Reference.

Overview of Oracle Value-Added Features

OC4J value-added features for JSP pages can be grouped into three major categories:

The rest of this section provides feature overviews in each of these areas, plus a brief summary of Oracle support for the JavaServer Pages Standard Tag Library (JSTL). JSTL support is summarized more fully in the Oracle9iAS Containers for J2EE JSP Tag Libraries and Utilities Reference.

Overview of Tag Libraries and Utilities Provided with OC4J

This section provides an overview of extended OC4J JSP features that are implemented through standards-compliant custom tag libraries, custom JavaBeans, and other classes. These features are fully documented in the Oracle9iAS Containers for J2EE JSP Tag Libraries and Utilities Reference. Here is a summary list:

Extended Type JavaBeans

JSP pages generally rely on core Java types in representing scalar values. However, neither of the following type categories is fully suitable for use in JSP pages:

To work around these limitations, OC4J provides the JmlBoolean, JmlNumber, JmlFPNumber, and JmlString JavaBean classes in package oracle.jsp.jml to wrap the most common Java types.

JspScopeListener for Event-Handling

OC4J provides the JspScopeListener interface for lifecycle management of Java objects of various scopes within a JSP application.

Standard servlet and JSP event-handling is provided through the javax.servlet.http.HttpSessionBindingListener interface, but this handles session-based events only. You can integrate the Oracle JspScopeListener with HttpSessionBindingListener to handle session-based events, as well as page-based, request-based, and application-based events.

Tags Supporting XML

OC4J provides standard JSP XML support as prescribed by the JSP 1.2 specification and described in Chapter 5, "JSP XML Support". In addition, OC4J offers extended support through XML-related custom tags.

There are special tags to specify that all or part of a JSP page should be transformed through an XSL stylesheet before it is output. Input can be from the tag body or from an XML DOM object, and output can be to an XML DOM object to the browser. You can use these tags multiple times in a single JSP page if you want to specify different style sheets for different portions of the page.

There is additional XML support as well:

Custom Data-Access JavaBeans

OC4J supplies a set of custom JavaBeans for database access. The following beans are provided in the oracle.jsp.dbutil package:

Custom Data-Access Tag Library

OC4J provides a custom SQL tag library for database access. The following tags are provided:

JSP Markup Language (JML) Custom Tag Library

Although the Sun Microsystems JavaServer Pages Specification, Version 1.2 supports scripting languages other than Java, Java is the primary language used. Even though JavaServer Pages technology is designed to separate the dynamic/Java development effort from the static/HTML development effort, it is no doubt still a hindrance if the Web developer does not know any Java, especially in small development groups where no Java experts are available.

OC4J provides custom tags as an alternative--the JSP Markup Language (JML). The Oracle JML tag library provides an additional set of JSP tags so that you can script your JSP pages without using Java statements. JML provides tags for variable declarations, flow control, conditional branches, iterative loops, parameter settings, and calls to objects. The JML tag library also supports XML functionality, as noted previously.

The following example shows use of the jml:for tag, repeatedly printing "Hello World" in progressively smaller headings (H1, H2, H3, H4, H5):

<jml:for id="i" from="<%= 1 %>" to="<%= 5 %>" >
     <H<%=i%>>
            Hello World!
     </H<<%=i%>>
</jml:for>


Notes:

  • The custom JML tag library provided with OC4J pre-dates the JavaServer Pages Standard Tag Library (JSTL) and has areas of duplicate functionality. Going forward, for standards compliance, it is advisable to use JSTL instead of the custom libraries as a general rule. Oracle is not desupporting the existing tags, however. For features in the custom library that are not yet available in JSTL, where there seems to be general usefulness, Oracle will try in the future to have the features adopted into the JSTL standard as appropriate.

  • Oracle JSP implementations preceding the JSP 1.1 specification used an Oracle-specific compile-time implementation of the JML tag library. This implementation is still supported as an alternative to the standard runtime implementation.


Oracle9iAS Personalization Tag Library

Web site personalization is a mechanism to personalize recommendations to users of a site, based on behavioral and demographic data. Recommendations are made in real-time, during a user's Web session. User behavior is saved to a database repository for use in building models for predictions of future user behavior.

Oracle9iAS Personalization uses data mining algorithms in the Oracle database to choose the most relevant content available for a user. Recommendations are calculated by an Oracle9iAS Personalization recommendation engine, using typically large amounts of data regarding past and current user behavior. This is superior to other approaches that rely on common-sense heuristics and require manual definition of rules in the system.

The Oracle9iAS Personalization tag library brings this functionality to a wide audience of JSP developers for use in HTML, XML, or JavaScript pages. The tag interface is layered on top of the lower level Java API of the recommendation engine.

Web Services Tag Library

The Web services tag library provided with OC4J enables developers to conveniently create JSP pages for Web service client applications. The implementation uses a SOAP-based, RPC-style mechanism. A client application would access a Web Services Definition Language (WSDL) document, then use the WSDL information to access the operations of a Web service.

The tag library uses Oracle9iAS Web Services and the Oracle implementation of the dynamic invocation API, described in the Oracle9iAS Web Services Developer's Guide. When a client application acquires a WSDL document at runtime, the dynamic invocation API is the vehicle for invoking any SOAP operation described in the WSDL document.

JSP Utility Tags

OC4J provides utility tags to accomplish the following from within Web applications:

For sending e-mail messages, you can use the sendMail tag or the oracle.jsp.webutil.email.SendMailBean JavaBean.

For uploading files, you can use the httpUpload tag or the oracle.jsp.webutil.fileaccess.HttpUploadBean JavaBean. For downloading, there is the httpDownload tag or the HttpDownloadBean JavaBean.

For using EJBs, there are tags to create a home instance, create an EJB instance, and iterate through a collection of EJBs.

There are also utility tags for displaying a date, displaying an amount of money in the appropriate currency, displaying a number, iterating through a collection, evaluating and including the tag body depending on whether the user belongs to a specified role, and displaying the last modification date of the current file.

Overview of Oracle-Specific Features

This section provides an overview of Oracle-specific programming extensions supported by the OC4J JSP container:

SQLJ Support

Dynamic server pages commonly include data extracted from databases. JSP developers typically rely on the standard Java Database Connectivity (JDBC) API or a custom set of database JavaBeans.

SQLJ is a standard syntax for embedding static SQL instructions directly in Java code, greatly simplifying database-access programming. The OC4J JSP container supports SQLJ programming in JSP scriptlets.

SQLJ statements are indicated by the #sql token. You can trigger the JSP translator to invoke the Oracle SQLJ translator by using the file name extension .sqljsp for the JSP source code file, or by specifying language="sqlj" in a page directive.

For more information, see "JSP Support for Oracle SQLJ".

Global Includes

The OC4J JSP container provides a feature called global includes. You can use this feature to specify one or more files to statically include into JSP pages in (or under) a specified directory, through virtual JSP include directives. During translation, the JSP container looks for a configuration file, /WEB-INF/ojsp-global-include.xml, that specifies the included files and the directories for the pages.

This enhancement is particularly useful in migrating applications that had used globals.jsa or translate_params functionality in previous Oracle JSP releases. For more information, see "Oracle JSP Global Includes".

Support for Dynamic Monitoring Service

The Dynamic Monitoring Service (DMS) adds performance-monitoring features to a number of Oracle9iAS components, including OC4J. The goal of DMS is to provide information about runtime behavior through built-in performance measurements, so that users can diagnose, analyze, and debug any performance problems. DMS provides this information in a package that can be used at any time, including during live deployment. Data are published through HTTP and can be viewed with a browser.

The OC4J JSP container supports DMS features, calculating relevant statistics and providing information to DMS servlets such as the spy servlet and monitoring agent. Statistics include the following (using averages, maximums, and minimums, as applicable):

(Counts of JSP instances are applicable only for single-threaded situations, where isThreadSafe is set to false in a page directive.)

Standard configuration for these servlets is in the OC4J global-web-application.xml configuration file. Use the Enterprise Manager to access DMS, display DMS information, and, as appropriate, alter DMS configuration.

Also see the Oracle9i Application Server Performance Guide, which contains precise definitions of the JSP metrics and instructions for viewing and analyzing them.

Enhanced Servlet 2.0 Support

OC4J supports special features for the servlet 2.0 JServ environment. It is highly advisable to migrate to the OC4J servlet 2.3 environment as soon as practical, but in the meantime, be aware of the following:

The referenced sections include information for migration to OC4J.

Overview of Tags and API for Caching Support

Faced with Web performance challenges, e-businesses must invest in more cost-effective technologies and services to improve the performance of their Internet sites. Web caching, the caching of both static and dynamic Web content, is a key technology in this area. Benefits of Web caching include performance, scalability, high availability, cost savings, and network traffic reduction.

OC4J provides the following support for Web caching technologies:

These features are documented in the Oracle9iAS Containers for J2EE JSP Tag Libraries and Utilities Reference.

Support for the JavaServer Pages Standard Tag Library

With Oracle9iAS release 2 (9.0.3), the OC4J JSP product supports the JavaServer Pages Standard Tag Library (JSTL), as specified in the Sun Microsystems JavaServer Pages Standard Tag Library, Version 1.0 specification.

JSTL is intended as a convenience for JSP page authors who are not familiar or not comfortable with scripting languages such as Java. Historically, scriptlets have been used in JSP pages to process dynamic data. With JSTL, the intent is for JSTL tag usage to replace the need for scriptlets.

Key JSTL features include the following:

Tag support is broken into four JSTL sublibraries according to these functional areas.

For a more complete summary of JSTL support, you can refer to the Oracle9iAS Containers for J2EE JSP Tag Libraries and Utilities Reference. For complete information about JSTL, refer to the specification at the following location:

http://www.jcp.org/aboutJava/communityprocess/first/jsr052/index.html


Note:

The custom JML, XML, and SQL tag libraries provided with OC4J pre-date JSTL and have areas of duplicate functionality. Going forward, for standards compliance, it is advisable to use JSTL instead of the custom libraries as a general rule. Oracle is not desupporting the existing tags, however. For features in the custom libraries that are not yet available in JSTL, where there seems to be general usefulness, Oracle will try in the future to have the features adopted into the JSTL standard as appropriate.



Go to previous page Go to next page
Oracle
Copyright © 2000, 2002 Oracle Corporation.

All Rights Reserved.
Go To Core Documentation
Core
Go To Platform Documentation
Platform
Go To Table Of Contents
Contents
Go To Index
Index