Apache::OWA Module README
=========================
This module makes it possible to run scripts written using Oracle's PL/SQL
Web Toolkit under Apache. This code is copyright Svante Sörmark,
svinto@ita.chalmers.se, and distributable under the same terms as Apache.
Available from http://www.ita.chalmers.se/~svinto/
REQUIREMENTS:
============
Apache 1.3.6
mod_perl 1.20
DBI
DBD::Oracle
Apache::Request
Oracle PL/SQL Web Toolkit, any version should work. Tested with 1.1, 3.0 and
4,0. Check owa.initialize to find the version-number.
Apache::DBI is optional, but highly recommended. Take a look at the benchmark
below, and you'll see why.
This module has only been tested on Solaris 2.6, Oracle 8.0.5.1.
INSTALLATION
============
Unpack the file, run "perl Makefile.PL", "make" and then "make install".
"make test" does nothing useful at the moment.
Next you need to edit your httpd.conf. Here is a sample configuration where
the database user and password is provided. Use this for applications that use
their own authentication-mechanisms, or that don't need any authenticaton.
can be anything you want, but it will be used as the schema
when executing your pl/sql. If you don't like this you can use
"PerlSetVar SCHEMA blabla" to override this. Example:
SetHandler perl-script
PerlHandler Apache::OWA
PerlSetVar DAD scott/tiger@oracle1
This means that calling "http://server/scott/print_cgi_env" executes the
pl/sql procedure "scott.print_cgi_env". If you write:
SetHandler perl-script
PerlHandler Apache::OWA
PerlSetVar DAD scott/tiger@oracle1
PerlSetVar SCHEMA oas_public
the same url would now execute "oas_public.cgi_print_env".
Next, a configuration where all users have to log in using their Oracle
user-id and password, and applications are executed under their user-id in the
database, but the schema works the same as adbove. This means that they need
execute permissions on the application, proper synonyms set up and "create
session" priveliges.
AuthName ows_db_auth
AuthType Basic
PerlAuthenHandler Apache::OWA
Require valid-user
PerlSetVar DB oracle1 # defaults to $ORACLE_SID
PerlSetVar SCHEMA oas_public
PerlSetVar DB_AUTH true
The final metod is authentication using a custom database function that takes
the username and password as arguments and then returns zero for success and
non-zero for failure. The format of the DB_PROC_AUTH variable is:
.. Remember that the user in the DAD-string needs permission
to execute this function.
AuthName db_proc_auth
AuthType Basic
PerlAuthenHandler Apache::OWA
Require valid-user
PerlSetVar DAD user/password@oracle
PerlSetVar DB_PROC_AUTH user.authen
BUGS
====
Probably lots. Here's the ones I know about.
- Headers get screwed up sometimes. I don't know if this is my fault, Oracle's
or mod_perl's fault.
- Url -> pl/sql procedure-name translation is a bit flaky.
TODO
====
Contributions are welcome!
- owa.auth_scheme checking not implemented.
- owa.protection_realm checking not implemented.
- owa_util.ident_array and owa_image.point apparently need some other form
of input data. Not implemented.
- No transaction support. I've never used it and don't know how it works.
Maybe Apache::SESSION could be used for this?
- Maybe my authentication-stuff could be merged wuth Apache::AuthDBI ?
CREDITS
=======
Many thanks to Marcelo F. Ochoa and Martin Kuzela for writing OWSKiller
(http://www.adela.sk/kuzela/OWSKiller/), which gave me the inspiration to
write this. If you need support for any of the things not implemented in this
module, have a look at OWSKiller. It is much more complete.
BENCHMARK
=========
The fun part :)
Oracle Application Server 4.0.7.1:
----------------------------------
> ./ab -n 100 http://rand.ita.chalmers.se:8080/prick/plsql/print_cgi_env
This is ApacheBench, Version 1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
Server Software: Oracle_Web_Listener/4.0.7.1.0EnterpriseEdition
Server Hostname: rand.ita.chalmers.se
Server Port: 8080
Document Path: /prick/plsql/print_cgi_env
Document Length: 421 bytes
Concurrency Level: 1
Time taken for tests: 21.746 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 59700 bytes
HTML transferred: 42100 bytes
Requests per second: 4.60
Transfer rate: 2.75 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 0
Processing: 207 216 240
Total: 207 216 240
Oracle Application Server 4.0.7.1 with Apache 1.2.6:
----------------------------------------------------
> ./ab -n 100 http://rand.ita.chalmers.se:8000/prick/plsql/print_cgi_env
This is ApacheBench, Version 1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
Server Software: Oracle_Application_Server/4.0
Server Hostname: rand.ita.chalmers.se
Server Port: 8000
Document Path: /prick/plsql/print_cgi_env
Document Length: 395 bytes
Concurrency Level: 1
Time taken for tests: 12.825 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 56800 bytes
HTML transferred: 39500 bytes
Requests per second: 7.80
Transfer rate: 4.43 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 0
Processing: 107 127 265
Total: 107 127 265
Apache 1.3.6 and Apache::OWA _with_ Apache::DBI :
-------------------------------------------------
> ./ab -n 100 http://rand.ita.chalmers.se/prick/print_cgi_env
This is ApacheBench, Version 1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
Server Software: Apache/1.3.6
Server Hostname: rand.ita.chalmers.se
Server Port: 80
Document Path: /prick/print_cgi_env
Document Length: 530 bytes
Concurrency Level: 1
Time taken for tests: 7.519 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 72400 bytes
HTML transferred: 53000 bytes
Requests per second: 13.30
Transfer rate: 9.63 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 0
Processing: 65 74 330
Total: 65 74 330
Apache 1.3.6 and Apache::OWA _without_ Apache::DBI :
----------------------------------------------------
> ./ab -n 100 http://rand.ita.chalmers.se/prick/print_cgi_env
This is ApacheBench, Version 1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
Server Software: Apache/1.3.6
Server Hostname: rand.ita.chalmers.se
Server Port: 80
Document Path: /prick/print_cgi_env
Document Length: 530 bytes
Concurrency Level: 1
Time taken for tests: 23.284 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 72400 bytes
HTML transferred: 53000 bytes
Requests per second: 4.29
Transfer rate: 3.11 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 0 0
Processing: 208 232 351
Total: 208 232 351