Skip Headers

Oracle9iAS Reports Services Publishing Reports to the Web
Release 2 (9.0.2)

Part Number A92102-01
Go To Table Of Contents
Contents
Go To Index
Index

Go to previous page Go to next page

1
Oracle9iAS Reports Services Architecture

When you're ready to publish your reports, all the Web server and application server tools you'll need are available in the Oracle9i Application Server (Oracle9iAS). This chapter describes the architecture of relevant Oracle9iAS components in combination with its reports publishing component: Oracle9iAS Reports Services. It also provides an overview of reports runtime processing and offers some things to consider when you set up your server environment.

This chapter includes the following sections:

1.1 Overview of Oracle9iAS Reports Services

Oracle9iAS is a comprehensive and integrated application server that runs any Web site, portal, or Internet application. It enables you to make applications available from Web browsers, mobile devices, and command lines. Oracle9iAS Reports Services is the reports publishing component of Oracle9iAS. It is an enterprise reporting service for producing high quality production reports that dynamically retrieve, format, and distribute any data, in any format, anywhere. You can use Oracle9iAS Reports Services to publish in both Web-based and non-Web-based environments.

Oracle9iAS Reports Services provides a scalable, flexible architecture for the distribution and automated management of report generation engines on the same server and across multiple servers. Additionally, it caches report outputs for reuse on similar requests. It integrates into standard Web environments with JSPs, Java Servlets, and CGI. It enables you to run reports on both local and remote application servers and to implement a multi-tiered architecture for running your reports.

When used in conjunction with servlet, JSP, or CGI (maintained only for backward compatibility), Oracle9iAS Reports Services enables you to run reports on any platform from a Web browser using a standard URL syntax. For servlet implementations, the in-process server is available for faster response and easier administration. The in-process server cuts down on the communication expense between processes and consequently increases response times.

Oracle9iAS Reports Services handles client requests to run reports by entering all requests into a job queue. When one of the server's engines becomes available, the next job in the queue is dispatched to run. As the number of jobs in the queue increases, the server can start more engines until it reaches the maximum limit specified in your server configuration. Similarly, engines are shut down automatically after having been idle for a period of time that you specify (see Chapter 3, "Configuring Oracle9iAS Reports Services").

Oracle9iAS Reports Services keeps track of all jobs submitted to the server, including jobs that are running, scheduled to run, finished, or failed. The Reports Queue Manager (Windows), the Reports Queue Viewer (UNIX), the showjobs command (Web), and the Reports Services pages in Oracle Enterprise Manager (OEM) enable you to view information on when jobs are scheduled, queued, started, finished, and failed, as well as the job output and the final status of the report.

With Oracle9iAS Reports Services, job objects are persistent. This means that if the server is shut down then restarted, all jobs are recovered, Foot 1 not just scheduled jobs.

When used in a Web environment, the Oracle9iAS Reports Services architecture consists of four tiers:

When used in a non-Web environment, there are three tiers (a Web server being unnecessary):

The way you set up these tiers can range from having all of them on one machine to having each of them on a separate machine. Additionally, you can have multiple Web servers on multiple machines as well as multiple application servers on multiple machines.

If you choose to have your Web server on multiple machines, the Oracle9iAS HTTP Server provides a load balancing feature to allow sharing of the Web server load across multiple machines. If you choose to have your application server on multiple machines, Oracle9iAS Reports Services provides peer-level clustering to allow sharing of the Reports Server load among multiple machines.

The difference between load balancing and peer clustering is that with load balancing, one machine manages the traffic across all machines; while with peer clustering, all machines are aware of the traffic on each machine, and each machine shares the task of monitoring and responding to requests. The advantage of peer-level clustering is the elimination of a single point of failure, further supporting the possibility of a fail-safe environment.

Oracle9iAS Reports Services provides event-based reporting. This uses database events to trigger the generation of a report. For example, you can define an event that signals a change in revenue levels above or below a particular watermark. If the change occurs in the database (the event), a report is automatically generated. This feature is discussed in detail in Chapter 11, "Event-Driven Publishing".

Oracle9iAS Reports Services includes a distribution module that uses XML to define unique configurations for the distribution of reports. Call the desired XML file from the runtime command line or URL to generate one report, and let the server handle diverse outputs and destinations. Processing time is significantly reduced and configuration changes can all be handled within the XML file. This feature is discussed in detail in Chapter 9, "Creating Advanced Distributions".

1.2 Oracle9iAS Reports Services Components

Figure 1-1 Oracle9iAS Reports Services Components

Text description of arch_01.gif follows.

Text description of the illustration arch_01.gif

Figure 1-1 illustrates the components of a working Oracle9iAS Reports Services environment. This includes:

  1. The Oracle9i AS HTTP Server:

    Oracle9iAS provides a Web server called the Oracle9iAS HTTP Server. It incorporates an OpenSSL module to provide support for Secure Sockets Layer (SSL) and HTTP Secure Sockets Layer (HTTPS). It also provides a servlet engine to support the running of Java Servlet applications.

  2. The module mod_oc4j. This is used by the Oracle9iAS HTTP Listener to redirect requests from servlets and JSPs to Oracle9iAS Containers for Java 2 Enterprise Edition (OC4J). OC4J provides a complete J2EE environment that includes a JSP translator, a JSP servlet engine (OJSP), and an Enterprise JavaBeans (EJB) container. It provides a fast, lightweight, highly scalable, easy-to-use, complete J2EE environment. It is written entirely in Java and executes on the standard Java Development Kit (JDK) Virtual Machine (JVM).

  3. The Reports Servlet is a component of Oracle9iAS Reports Services that runs inside of the Web server's servlet engine; the Reports Servlet translates and delivers information between HTTP and the Reports Server. It includes:

  4. The Reports CGI component of the Web server translates and delivers information between HTTP and the Reports Server.

  5. The Reports Server processes client requests, which includes ushering them through its various services, such as authentication and authorization checking, scheduling, caching, and distribution (including distribution to custom--or pluggable--output destinations). Reports Server also spawns runtime engines for generating requested reports, fetches completed reports from the Reports cache, and notifies the client that the job is ready.

  6. The Reports Cache securely stores completed job outputs.

  7. The Reports Engine includes components for running SQL- and Pluggable Data Source-based reports. It fetches requested data from the data source, formats the report, sends the output to cache, and notifies the Reports Server that the job is complete.

  8. The Pluggable Engines are custom engines that use Java APIs to pass jobs to the Reports Server, as well as leverage the server's other features, such as scheduling, distribution, notification, and caching. Oracle9iAS Reports Services provides an out-of-the-box pluggable engine called the URL engine. The URL engine enables you to distribute content from any publicly available URL to such destinations such as e-mail, Oracle9iAS Portal, and WebDav.

1.3 Oracle9iAS Reports Services Runtime Process

Here is how the various components of Oracle9iAS Reports Services contribute to the process of running a report:

  1. The client requests a report by contacting a server through either a URL (Web) or a non-Web, Reports-related command, such as rwclient.

  2. The rwservlet or the Reports CGI (rwcgi, maintained only for backward compatibility) component translates requests between HTTP and the Reports Server and sends requests to the Reports Server:

  3. The Reports Server processes the request:

    If the request includes a TOLERANCE argument, then the Reports Server checks its cache to determine whether it already has output that satisfies the request. If it finds acceptable output in its cache, then it immediately returns that output rather than rerunning the report.

    If the request is the same as a currently running job, then the request will reuse the output from the current job rather than rerunning the report.

    If neither of these conditions is met, the Reports Server processes the request:

    1. If configured, the Reports Server initiates an authentication and authorization check through mod_osso, part of the Oracle HTTP Server.

    2. If the report is scheduled, the Reports Server stores the request in the scheduled job queue, and the report is run according to schedule. If the report is not scheduled, it is queued in the current job queue for execution when a Reports Engine becomes available.

    3. At runtime, the Reports Server spawns a Reports Engine and sends the request to that engine to be run.

  4. The Reports Engine retrieves and formats the data.

  5. The Reports Engine populates the Reports cache.

  6. The Reports Engine notifies the Reports Server that the report is ready.

  7. The Reports Server accesses the cache and sends the report to output according to the runtime parameters specified in either the URL, the command line, or the keyword section in the cgicmd.dat file (URL requests only).

Another way to create a report is through event-driven publishing. With event-driven publishing, the client is the database (rather than the end user). Events are defined through the Event-Driven Publishing API. The event invokes a database trigger, an advanced queuing application, or a PL/SQL package that calls the Event-Driven Publishing API to submit jobs to the Reports Server. Event-Driven Publishing is discussed in detail in Chapter 11, "Event-Driven Publishing".

1.4 Things to Consider When You Set Up Your System

The way you set up Oracle9iAS Reports Services can vary widely depending upon the requirements of your system. Before you set up Oracle9iAS Reports Services, you must make some decisions based upon your requirements. By making these decisions beforehand, you can greatly simplify the set-up process.

The following subsections discuss some of the decisions involved in:

1.4.1 Choosing the Types of Requests You Will Service

Oracle9iAS Reports Services can be configured to accept both Web and non-Web job requests.

In the Web case, you can run reports by clicking or typing a URL in a Web browser. Depending on the URL, the report output is then served back to you in your browser or sent to a specified destination (for example, a printer). To enable users to launch reports from a browser, you will use either the Oracle9iAS Reports Servlet, a JSP, or Oracle9iAS Reports CGI components with your Web server. One or the other of these components must be present on the Web server to enable communications between it and the Oracle9iAS Reports Server and to enable the processing of report requests from Web clients.

In the non-Web case, you can send job requests using the rwclient executable, installed on each of your user's machines.

From the perspective of configuration, these are the key differences between enabling Web and non-Web requests:

The Web case is clearly the most cost effective because it reduces client maintenance costs. But there might be cases where launching non-Web requests is a necessity. Oracle9iAS Reports Services supports the implementation of both Web and non-Web requests in a single deployment environment.

1.4.2 Choosing Servlet, JSP, or CGI

To use Oracle9iAS Reports Services in a Web environment, you must use a servlet, JSP, or CGI implementation. Our recommendation is that you choose servlet or JSP. The CGI implementation in Oracle9iAS Reports Services is being maintained only for backward compatibility.

Between servlet and JSP there are additional considerations. A JSP-only implementation means that you can publish a layout that is optimized for Web delivery. The servlet enables you to include paper layouts in your report publishing solution and fully leverage the distribution features of Oracle9iAS Reports Services.

Using the servlet does not imply that you cannot also use JSP files because JSP files can contain both Web and paper layouts. When you run a report stored in a JSP, you specify the servlet in the URL and call the JSP with the command line argument: report=< myreport >.jsp.

For more information on running reports, see Chapter 8, "Running Report Requests".

1.4.3 Choosing Single- Or Multiple-Machine Configurations

You can place Oracle9iAS Reports Services on the same machine as your Web server or on a different machine. Both scenarios have pros and cons.

For example, while it's true that having Oracle9iAS Reports Services and the Web server on the same machine requires more of the machine's memory and disk space, it's also true that such an implementation reduces network traffic. This is because requests traveling between the Web server and the application server do not have to travel across a network, only incoming requests must do so.

If you are using the in-process server (available only with servlet implementations) you can further amplify the performance advantages of a single machine. The in-process server speeds up processing time by allowing for faster and more efficient communication between Oracle9iAS Reports Services components. We recommend that you use the in-process server unless you will not use the Reports Servlet to deploy reports.

On the other hand, if you have a single machine configuration and that machine fails, everything fails.

While there is a greater amount of network traffic when the Web server and the application server are on different machines, you also benefit from the increase in system resources, in the form of additional CPUs, more disk space, and more available memory. Even in a multiple machine configuration, the in-process server will aid performance by speeding communication between Oracle9iAS Reports Services components

Another possibility is placing your Web server and your application server each on multiple machines. This will require additional configuration, but it allows you to implement load balancing on the Web server.

If you will be deploying reports in multiple languages, you'll want to set up multiple Reports Servers: one or more for each language.

1.4.4 Choosing Whether to Cluster Multiple Servers

A cluster is a virtual grouping of servers into a community for the purpose of sharing request processing efficiently across members of the cluster. Unlike in previous versions, clustering in Oracle9iAS Reports Services is peer-level, rather than master/slave. Peer-level clustering means that all members of the cluster take equal responsibility for sharing and processing incoming requests. Incoming requests are sent to the cluster as a whole rather than any one Reports Server in the cluster. Thus, if one member is shut down, the other members carry on managing the request load. There is no single-point-of-failure, where one machine's malfunction brings the whole system down.

Each cluster member machine must be configured in more or less the same way to allow a report to run on each server member in the same way. This means that configuration files should have most of the same settings: a distinction can be drawn between job-related settings and machine-related settings. Job-related settings must be the same from cluster member to cluster member. Job-related settings include settings related to security, data sources, and destination types. Machine-related settings include such attributes as maxEngine, minEngine, maxIdle, initEngine, and the like--these can be different from member to member.

Additionally, for cluster members:

For servers to be members of the same cluster, they must share a cluster name (appended to each server's server name) and have the same public and private keys.

If your machines require different job-related configuration settings, you will not benefit from clustering.

If you must set your servers up for different languages, you'll want to set up multiple clusters: one or more for each language.


1 Only synchronous jobs and jobs that are currently running are lost in this case.