The mod_ose module in the Oracle HTTP server (powered
by Apache) serves as a conduit between Apache and OSE. It uses HTTP tunneling
over Net8 as the protocol between Apache and OSE, thus, leveraging Net8
features such as load balancing, firewall support, connection manager.
Unlike mod_jserv which closes connection for every request, mod_ose holds
on to the connection to the OSE for the duration of the client connection
for stateful application. For, stateless connections, the connection survives
for the scope of Apache process. mod_ose uses HTTP chunking for efficient
data transfer. (Please refer to Chapter 5
of Oracle Servlet Engine User's Guide for more details on mod_ose).
Configuration Issues :
The default configuration (the minimum needed
Apache directives and location directives for servlets in default configuration)
for mod_ose is in the file mod__ose.conf under $APACHE_HOME/Apache/conf.
This file is included in oracle_apache.conf, which in turn is included
in httpd{s}.conf. The configuration needs to be regenerated using
exportwebdomain, if new servlets have been published in the OSE's
JNDI namespace. Apache has to be restarted for the new configurations to
be effective.
mod_ose is pre-installed and configured, but won't
run out of box unless minor changes are made to the configuration
file.
For a MTS enabled database, make sure you
have an alias name in tnsnames.ora with PRESENTATION, SERVICE_NAME and
SERVER set in the CONNECT_DATA clause and use this entry for AuroraService
command (in IfModule directive) in mod__ose.conf. Ex:
In tnsnames.ora : inst1_http = (DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=server27)(PORT=5521))
(CONNECT_DATA=
(SERVICE_NAME=rdbms817.rdbms.dev.us.oracle.com)
(SERVER=shared)
(PRESENTATION=http://admin)
)
)
In mod__ose.conf : AuroraService inst1_http
For a non MTS enabled database, mod_ose needs
MTS to run and hence won't run if the database doesn't have any MTS dispatchers/servers.
Here is the recommended work around:
Create a MTS dispatcher and server with a MODOSE
service
name (as a matter of fact we can have any service name other than database
service name) as follows:
Thus, we will have MTS dispatcher and server that
won't be used by other clients and just used be mod_ose.
mod_ose and SSL
You can have SSL connection between mod_ose and OSE
just like SSL connection between client and the Apache. Make sure
you have the following to get this working :
correct Wallet
tcps listener
Aurora service referenced to a tns alias name with
tcps protocol and tcps listener port. Ex :
admin webserver doesn't have index.html and
instead has index.htm. Apache by default will send the index.html if you
have asked for the admin webservice root through mod_ose and hence
will fail. The solution is to explicitly request for index.html.
Because of an Apache bug, if you requested a jsp
file with mod_ose that also exist in the local Apache htdocs in the same
path, your request will fail. For example, if you have hellouser.jsp
under $APACHE_DOCUMENT_ROOT/demo/basic, then a request to mod_ose for /demo/basic/hellouser.jsp
(http://server27:3000/demo/basic/hellouser.jsp) will fail. The solution
is to make sure that there is no local copy in the same path.