Oracle Application Server Containers for J2EE Support for JavaServer Pages Developer's Guide 10g (9.0.4) Part Number B10320-01 |
|
The JSP container provided with Oracle Application Server Containers for J2EE (OC4J) in the Oracle Application Server is a complete implementation of the JSP 1.2 specification. This functionality depends upon servlet 2.3 functionality, and the OC4J servlet container is a complete implementation of the servlet 2.3 specification.
This chapter provides overviews of the Oracle Application Server, OC4J, the OC4J JSP implementation and features, and custom tag libraries and utilities that are also supplied (documented in the Oracle Application Server Containers for J2EE JSP Tag Libraries and Utilities Reference).
The following sections are included:
The following sections provide a brief overview of the Oracle Application Server, its J2EE environment, its JSP implementation, and its Web server:
Oracle 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 services, and management and security. For performance, scalability, and dependability, there are also clustering and load-balancing features.
To deliver this range of content and services, the Oracle Application Server incorporates many components, including the Oracle HTTP Server, Oracle Application Server Web Cache, Oracle Application Server Web Services, Oracle Application Server Portal, Oracle Application Server Wireless, Oracle Application Server Forms Services and Oracle Application Server Reports Services (to support Oracle Forms-based applications and reports generation), Oracle Application Server Personalization, and business logic runtime environments that support Enterprise JavaBeans, stored procedures, and Oracle Business Components for Java.
For its Java environment, Oracle Application Server provides the Oracle Application Server Containers for J2EE (OC4J), a J2EE 1.3-compliant set of containers and services. This includes the JSP container described in this manual, a servlet container, and an EJB container.
For administration, you can fully manage and configure Oracle Application Server and OC4J using the HTML-based Oracle Enterprise Manager. This includes full support for managing clustering, configuration, and deployment.
Notes:
|
Oracle HTTP Server, powered by the Apache Web server, is included with Oracle 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.
Oracle Application Server 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
:
This is accomplished through enhanced use of cookies. Routing information is maintained in the cookie itself to ensure that stateful servlets are always routed to the same OC4J JVM.
A mod_oc4j
module can restart an OC4J instance automatically, if necessary.
Notes:
|
The following sections provide an overview of features of OC4J, the J2EE component of the Oracle Application Server:
OC4J is a high-performance, J2EE-compliant set of containers and services providing a scalable and reliable server infrastructure. In Oracle Application Server 10g (9.0.4), OC4J complies with the J2EE 1.3 specification.
For developer convenience, OC4J has been integrated with Oracle JDeveloper and other development tools, and can run in a standalone mode separate from Oracle Application Server during the development process.
Java applications built with any development tool can be deployed to OC4J, which supports standard EAR or WAR file deployment. You can debug applications deployed to OC4J through standard Java profiling and debugging facilities.
For security, OC4J supports Secure Socket Layer (SSL) and HTTPS functionality.
OC4J supports the following Java and J2EE services:
See the Oracle Application Server Containers for J2EE Services Guide for information.
The OC4J 9.0.4 implementation supplies the following J2EE containers:
The JSP bundle also supplies tag libraries to implement Web services, caching capabilities, SQL access, file access, and other features. For further overview of the JSP container provided with OC4J, see "Overview of the JSP Implementation in OC4J".
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.
The OC4J servlet container supports the following key features:
See the Oracle Application Server Containers for J2EE Servlet Developer's Guide for information.
The OC4J EJB container supports the following:
EJB support in OC4J also includes these features:
See the Oracle Application Server Containers for J2EE Enterprise JavaBeans Developer's Guide for information.
In a production environment, it is typical to use OC4J inside a complete Oracle Application Server environment, including the Oracle HTTP Server (as described in "Oracle HTTP Server and mod_oc4j"), OracleAS 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/tech/java/oc4j
).
When using OC4J standalone, you can use its own HTTP Web listener through port 8888. For information about OC4J standalone, see the Oracle Application Server Containers for J2EE Stand Alone User's Guide (downloadable with OC4J_extended.zip) and the Oracle Application Server Containers for J2EE Servlet Developer's Guide.
The JSP container in Oracle Application Server 10g (9.0.4) is compliant with the JSP 1.2 specification.
In general, a JSP 1.2 environment requires a servlet 2.3 environment, such as the OC4J servlet container. The OC4J 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.
These features are discussed in the following sections:
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. 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.
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".
In the OC4J 9.0.4 implementation, the OC4J JSP container is fully compliant with the JSP 1.2 specification. Most functionality introduced in this specification is in the area of custom tag libraries.
web.xml
file. This enables you to more conveniently manage application and session resources associated with usage of the tag library.
See Chapter 8, "JSP Tag Libraries" for details about these features, and "Overview of Tag Library Changes Between the JSP 1.1 and 1.2 Specifications" for a more detailed summary.
See Chapter 5, "JSP XML Support" for information about these features.
The OC4J JSP implementation supports the pageEncoding
attribute of the page
directive. This enables you to specify a character encoding for the page source that is different than the character encoding for the response (specified in the contentType
attribute).
In addition to JSP 1.2 compliance, the OC4J JSP container in Oracle Application Server 10g (9.0.4) includes the following notable features.
Also see "Overview of Oracle Value-Added Features".
The following have been supported since the OC4J 9.0.3 implementation:
The JSP specification mandates translation errors if you have duplicate settings for the same directive attribute within a single JSP translation unit, except for the page
directive import
attribute. These errors may be unwanted or inappropriate, for example, if a page and an included file both set an attribute to the same value (such as language="java"
).
In "JSP Configuration Parameter Descriptions", see the description of the forgive_dup_dir_attr
parameter.
web.xml
file and TLD files (OC4J or JServ)
Validation of web.xml
is disabled by default but can be enabled. Validation of TLD files is enabled by default but can be disabled.
In "JSP Configuration Parameter Descriptions", see the descriptions of the xml_validate
and no_tld_xml_validate
parameters.
Use this to automatically import certain Java packages beyond the JSP defaults.
In "JSP Configuration Parameter Descriptions", see the description of the extra_imports
parameter.
You can specify a directory where tag library JAR files can be placed for sharing across multiple Web applications.
In "JSP Configuration Parameter Descriptions", see the description of the well_known_taglib_loc
parameter.
You can specify a timeout value for JSP pages, after which a page is removed from memory if it has not been requested again. In "JSP-Related OC4J Configuration Parameter Descriptions", see the description of the jsp-timeout
parameter.
The following features have been supported since the OC4J 9.0.2 implementation:
You have a choice of: 1) running JSP pages without any automatic reloading or retranslation of JSP pages; 2) automatically reloading any page implementation classes (but not JavaBeans or other dependency classes); or 3) automatically retranslating any JSP pages that have changed.
In "JSP Configuration Parameter Descriptions", see the description of the main_mode
parameter.
To save time in tag handler creation and garbage collection, you can optionally enable pooling of tag handler instances. They are pooled in application
scope. You can use different settings in different pages, or even in different sections of the same page. See "Disabling or Enabling Runtime or Compile-Time Tag Handler Reuse".
You can print an empty string instead of the default "null" string for null output from a JSP page.
In "JSP-Related OC4J Configuration Parameter Descriptions", see the description of the jsp-print-null
parameter.
For single-threaded (non-thread-safe) JSP pages, page instances are pooled. There is no switch for this feature--it is always enabled.
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 servlet context and HTTP session objects.
Because of this extended functionality, the OC4J JSP container is not limited by the underlying servlet environment.
Visual Java programming tools now typically support JSP coding. In particular, Oracle JDeveloper supports JSP development and includes the following features:
See "Application Deployment with Oracle 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
(You will need an Oracle Technology Network membership, which is free of charge.) For an overview of JSP tag libraries provided with JDeveloper, see the Oracle Application Server Containers for J2EE JSP Tag Libraries and Utilities Reference.
Note: Other key IDE vendors have built plug-in modules that allow seamless integration with OC4J. This provides developers with the capability to build, deploy, and debug J2EE applications running on OC4J directly from within the IDE. You can refer to the following Web site for more information: http://otn.oracle.com/products/ias/9ias_partners.html |
OC4J value-added features for JSP pages can be grouped into three major categories:
The rest of this section provides feature summaries and overviews in 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 Oracle Application Server Containers for J2EE JSP Tag Libraries and Utilities Reference.
This section provides a brief summary of extended OC4J JSP features that are implemented through standards-compliant custom tag libraries, custom JavaBeans, and other classes. These features are documented in the Oracle Application Server Containers for J2EE JSP Tag Libraries and Utilities Reference:
JspScopeListener
for event-handling
Note: See "Overview of Tags and API for Caching Support" for an overview of additional tag libraries for caching. |
This section provides an overview of Oracle-specific programming extensions supported by the OC4J JSP container:
Important: SQLJ is being desupported after the current release. Consult MetaLink, at the following location, for the desupport notice: http://metalink.oracle.com/ |
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".
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".
DMS adds performance-monitoring features to a number of Oracle Application Server 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). Times are in milliseconds.
(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 application.xml
and default-web-site.xml
configuration file. Use the Enterprise Manager to access DMS, display DMS information, and, if appropriate, alter DMS configuration.
Also see the Oracle Application Server 10g Performance Guide, which contains precise definitions of the JSP metrics and detailed instructions for viewing and analyzing them.
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.
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:
The OracleAS Web Cache provides an ESI engine.
The Web Object Cache uses the Oracle Application Server Java Object Cache as its default repository.
These features are documented in the Oracle Application Server Containers for J2EE JSP Tag Libraries and Utilities Reference.
With Oracle Application Server 10g (9.0.4), 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:
The expression language further simplifies the code required to access and manipulate application data, making it possible to avoid request-time attributes as well as scriptlets.
The term "I18N" refers to an internationalization standard.
Tag support is organized into four JSTL sublibraries according to these functional areas.
For a more complete summary of JSTL support, you can refer to the Oracle Application Server 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
|
![]() Copyright © 2000, 2003 Oracle Corporation. All Rights Reserved. |
|