Index   Search   Add FAQ   Ask Question  
 

Please note: This page is not maintained anymore. Please visit the new and improved FAQ at http://www.orafaq.com/faq/application_server

Oracle Internet/Web Application Server (iAS) FAQ

$Date: 01-Jul-2001 $
$Revision: 2.82 $
$Author: Frank Naudé $
$Contributors: Steve Kilbane $

The tangled webs we're weaving

Topics

  • What is the Web/ Application Server thing and how does it work?
  • How does one start and stop the Oracle Web Listener?
  • How does one program using the PL/SQL Web Agent?
  • How does one develop PL/SQL Server pages?
  • How can one page forward and backwards through a table?
  • Can one use Designer/2000 to generate Web applications?
  • Can one use a different Web Server from the one included by Oracle?
  • What is the differences between the various Oracle Web Server versions?
  • Should one access Oracle via the CGI interface or the WRB?
  • How to do multi-user updates using the Oracle WebServer?
  • We want to do some more advanced authentication. What are my options?
  • Right, I'm storing userids in a table. How does one encrypt the passwords?
  • Are there alternatives to keeping authentication information in the configuration file?
  • How does one program using the WRB API?
  • Can one store and retrieve images from an Oracle table?
  • How does one use HTTP COOKIEs?
  • Can a Web page be refreshed/reloaded after a given interval?
  • We've lost the Web Server Administrator's password. What can we do?
  • Why does one get "Requested URL was not found on this server"?
  • Why does one get "Request failed. We were unable to process your request at this time"?
  • I've change the permissions of my script, but the Web Server hasn't noticed. Why is this?
  • Where can one get more info about the Oracle Web/Application Server?

  • Back to Oracle FAQ Index

    What is the Web/ Application Server thing and how does it work?

    The Oracle Web/ Application Server or iAS (Internet Application Server) enables users using Web Browsers to access HTML pages (static content) and data from Oracle databases (dynamic content). Cartridges or plug-in's are provided to execute PL/SQL code, Java, Perl and other programming language code. It can also execute standard CGI-BIN programs. Look at this simplified example: NOTE: The "PL/SQL Cartridge" was formerly called OWA (Oracle Web Agent).

  • Back to top of file

  • How does one start and stop the Oracle Web Listener?

    V1:   wlctl   start <port_number>       eg. wlctl   start 8888
          wlctl   stop  <port_number>
    
    V2.0: wlctl2  start <listener_name>     eg. wlctl2  start admin
          wlctl2  stop  <listener_name>
    
    V2.1: wlctl21 start <listener_name>     eg. wlctl21 start admin
          wlctl21 stop  <listener_name>
    
    V3.0: Starting the webserver (note the sequence):
          owsctl start wrb   ... start webrequest broker
          owsctl start admin ... start admin listener
          owsctl start yourweb ... start your weblistener
    
          Stopping the webserver (note the sequence):
          owsctl stop yourweb
          owsctl stop admin
          owsctl stop wrb
    
    V4.0: Starting the webserver (note the sequence):
          owsctl start -nodemgr   ... start the node manager on port 8888
          owsctl start            ... start listeners and oraoas process
    
          Stopping the webserver (note the sequence):
          owsctl stop            ... stop listeners and oraoas process
          owsctl stop -nodemgr   ... stop the node manager on port 8888
    
    Note: with V1 one use the 'port number' that your listener is using to "listen" for connections.

  • Back to top of file

  • How does one program using the PL/SQL Web Agent?

    The Oracle Web Agent extends the Common Gateway Interface (CGI) to Oracle PL/SQL stored procedures. Programming is done in PL/SQL using the following set of packaged procedures:
    Example PL/SQL procedure:
            CREATE OR REPLACE PROCEDURE HelloWorld AS
            BEGIN
               htp.htitle('My first dynamic Web page');
               htp.print('Hello world');
               htp.line;
            END HelloWorld;
            /
    To run this example, one would typically provide an URL like this to a Web Browser:
            http://your.host.name/oracle_connect_descriptor/owa/HelloWorld
    
  • Back to top of file

  • How does one develop PL/SQL Server pages?

    Using PL/SQL Server Pages, a technology similar to Active Server Pages and JavaServer Pages: The basic design is created in a visual tool, for instance an HTML designer and the PL/SQL code (also called scriptlets) is written in special tags. Only the absolute minimum of PL/SQL will have to be written and the HTML designer and PL/SQL programmer can share the same file. A PSP file is compiled into a PL/SQL stored procedure, which means that the PSP compile is used during the development phase only.

    Two PSP products exist on the market: Oracle PL/SQL Server Pages (OPSP) and ChangeGroup PL/SQL Server Pages (CGPSP). OPSP comes with Oracle8i Release 2 and newer and has a command line interface only.

    CGPSP is compatible with OPSP and integrates 100% with editors and tools, has visual error correction in a browser-based environment, automatic security and synonym setup, project facilities such as make, install script generation, and much more. CGPSP works with Oracle7, 8, and 8i, O(W)AS 3.0 and newer, iAS 1.0 and newer, plus all Apache-based Web servers. See more information about CGPSP at . www.changegroup.dk/en/cgpsp.htm.

    Contributed by: Finn E. Nielsen

  • Back to top of file

  • How can one page forward and backwards through a table?

    Externalize ROWNUM by implementing queries like this:
            SELECT ...
            FROM  (SELECT ROWNUM rnum, ... FROM ...)
            WHERE rnum BETWEEN :low AND :high
              AND rownum < (:high - :low + 1);
    
    where :low and :high are dynamically generated values depending on which result page the user is viewing. Typically, they are used to show "Next 15 matches", "Previous 15 matches" links at the bottom of each page.

  • Back to top of file

  • How to do multi-user updates using the Oracle WebServer?

    Because the Web is stateless, there is no way to lock data between a SELECT and an UPDATE initiated from a Web Browser. One workaround is to let the procedure that display the data for updating also store the data values in hidden fields. Eg:
       for c1 in (select rowid, a.* from emp a) loop
          htp.FormHidden('the_rowid', c1.rowid);
          htp.Print('Enter new Employee Name:');
          htp.FormHidden('old_ename', c1.ename);
          htp.FormText('new_ename', c1.ename);
       end loop;
    
    The update procedure can now compare the hidden values in the form with the current table values before allowing the update to continue. Eg:
       UPDATE emp SET ename = new_ename
       WHERE rowid = the_rowid
         AND ename = old_ename;
    
       if (SQL%ROWCOUNT = 0) then
          htp.print('Someone else changed this row, please re-query before updating.');
       else
          htp.print('1 row updated.');
       end if;
    

  • Back to top of file

  • Can one use Designer/2000 to generate Web applications?

    Yes, Designer/2000 (CASE) V1.2A and above includes a Web Server Generator that can generate QUERY-ONLY applications.

    From Designer/2000 1.3W one can generate applications that can do Insert, Update and Delete operations. 1.3W also generates JavaScript (NOT JAVA!) code to do client side validation!!!

  • Back to top of file

  • Can one use a different Web Server from the one included by Oracle?

    With the Oracle Web Server version 1.0 you have a CGI-BIN program called OWA that works with any HTTP webserver.

    With version 2.0 you have a CGI-BIN program called OWA that works with any webserver, in addition to a Web Request Broker (WRB) OWA cartridge. The WRB cartridge with 2.0 works with the Oracle Web Server (with 2.0 you can still use the web agent with any server, but you can't use the WRB component with any other server).

    With version 2.1 you have the CGI-BIN program... in addition to a Web Request Broker OWA cartridge. The WRB cartridge with 2.1 works with the Oracle Web Server and/or the Netscape Fasttrack Server.

    With version 3.0 you will have the CGI-BIN program... the cartridge... which works with Oracle Web Server, Netscape fasttrack/enterprise/commerce server, MSIIS, and perhaps others.

  • Back to top of file

  • What is the differences between the various Oracle Web Server versions?

    NOTE: From V3.0 the DCD (Database Connect Descriptor) is called the DAD (Data Access Descriptor).

  • Back to top of file

  • Should one access Oracle via the CGI interface or the WRB?

    The Oracle Web Request Broker (WRB) is faster and more scalable than the CGI-BIN program OWA, but can only be used with certain Web servers. CGI programs are spawned off each time a HTTP request is made to it while the WRB will only start new brokers if the workload increase.

    Note that the OWS-BIN OWA program's configuration parameters are stored in the SV*.CFG file while the WRB OWA is configured from SV*.APP.

  • Back to top of file

  • We want to do some more advanced authentication. What are my options?

    Mainly, the best we've come up with is:
  • Back to top of file

  • Right, I'm storing userids in a table. How does one encrypt the passwords?

    Port crypt. :-) More seriously, We don't have an answer for this.

  • Back to top of file

  • Are there alternatives to keeping authentication information in the configuration file?

    One can keep authentication information in a file separate from the sv<server>.cfg file. In this case the following information in the sv<server>.cfg file...
    ************
    [Security]
    Basic {
    (Users)
    users: passwords
    (Groups)
    groups: users   <-----   Single group should not exceed 200 users
    (Realms)
    realms: groups  <-----   Be sure to include all groups
    }
    ;
    [Protection]
    /secret-dir/         Basic(Realm)
    ************
    
         could be replaced with....
    
    ************
    [Security]
    Basic @/path/to/user/authentication/file
    ;
    [Protection]
    /secret-dir/         Basic(Realm)
    ************
    
        The file referred to above should contain the following information...
    
    ************
    (Users)
    users: passwords
    (Groups)
    groups: users   <-----   Single group should not exceed 200 users
    (Realms)
    realms: groups  <-----   Be sure to include all groups
    ************

  • Back to top of file

  • How does one program using the WRB API?

    Download and look at the following working source code example:

    OWA2 is a replacement for the Oracle PL/SQL Web Request Broker Cartridge. Other than Oracle's PL/SQL Cartridge, OWA2 :

    It was written, compiled and tested on a SUN6000E running Solaris 2.5, Oracle 7.3 and the Oracle WebServer V2.0.3. If you make any changes to OWA2 or port it to a different environment, please mail the source code back to us.

    If you find OWA2 useful, PLEASE tell me!!!

  • Back to top of file

  • Can one store and retrieve images from an Oracle table?

    Sure you can, consider the following:

  • Back to top of file

  • How does one use HTTP COOKIEs?

    Cookies allow any site to store information on a WEB Browser's hard disk (cookie.txt file). This information is sent back to the originating site whenever you access it again.

    Look at this code example:

       owa_util.mime_header ('text/html', FALSE);
       owa_cookie.send (cuid, xsession_id, sysdate);
       owa_util.http_header_close;
    
  • Back to top of file

  • I've lost the Web Server Administrator's password. What can one do?

    The Oracle WebServer Administrator's userid and password can be found in your $ORACLE_HOME/ows21/admin/svadmin.cfg file. The password is not encrypted!!!

  • Back to top of file

  • Can a Web page be refreshed/reloaded after a given interval?

    Yes, look at the META tag in the following example:
    <HTML>
    <HEAD>
    <META HTTP-EQUIV="REFRESH" CONTENT="3; URL=any_valid_url">
    <TITLE>Stay tuned!  3 Seconds until relocation</TITLE>
    ...
    </HTML>
    
    ... or use owa_util.redirect_url.

  • Back to top of file

  • Why does one get "Requested URL was not found on this server"?

    Symptom:
    When attempting to access URLs such as: the server responds with "Requested URL was not found on this server".

    Causes:

    Fix:

  • Back to top of file

  • Why does one get "Request failed. We were unable to process your request at this time. Please try again later"?

    Symptom:
    When attempting to access URLs such as: the server responds with "Request failed. We were unable to process your request at this time. Please try again later."

    Cause:

    Fix:

  • Back to top of file

  • I've change the permissions of my script to make it readable and executable, but the webserver hasn't noticed. Why is this?

    Symptom: webserver doesn't notice file permissions have changed.

    The webserver caches the modification time of the directory, and of all the files within it. If a URL is not available because of permissions problems, and you fix that, the webserver will continue to say that the URL is not available, because the directory modification date hasn't changed, so it doesn't bother to check the file itself. Renaming the file to something and back again will make the webserver see the change. This is configurable, however. On the Web Listener configuration page, there is a parameter which determines how long the Web Server will go without re-scanning a directory that appears to have not changed yet, including the ability to never rescan unless the modification date changes.

  • Back to top of file

  • Where can one get more info about the Oracle Web/Application Server?

  • Back to top of file
  • HOME | ASK QUESTION | ADD FAQ | SEARCH | E-MAIL US