<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"> <link rel="Start" href="index.html"> <link rel="previous" href="Netcgi.html"> <link rel="next" href="Netcgi_scgi.html"> <link rel="Up" href="index.html"> <link title="Index of types" rel=Appendix href="index_types.html"> <link title="Index of exceptions" rel=Appendix href="index_exceptions.html"> <link title="Index of values" rel=Appendix href="index_values.html"> <link title="Index of class attributes" rel=Appendix href="index_attributes.html"> <link title="Index of class methods" rel=Appendix href="index_methods.html"> <link title="Index of classes" rel=Appendix href="index_classes.html"> <link title="Index of class types" rel=Appendix href="index_class_types.html"> <link title="Index of modules" rel=Appendix href="index_modules.html"> <link title="Index of module types" rel=Appendix href="index_module_types.html"> <link title="Uq_gtk" rel="Chapter" href="Uq_gtk.html"> <link title="Equeue" rel="Chapter" href="Equeue.html"> <link title="Unixqueue" rel="Chapter" href="Unixqueue.html"> <link title="Uq_engines" rel="Chapter" href="Uq_engines.html"> <link title="Uq_socks5" rel="Chapter" href="Uq_socks5.html"> <link title="Unixqueue_mt" rel="Chapter" href="Unixqueue_mt.html"> <link title="Equeue_intro" rel="Chapter" href="Equeue_intro.html"> <link title="Uq_ssl" rel="Chapter" href="Uq_ssl.html"> <link title="Uq_tcl" rel="Chapter" href="Uq_tcl.html"> <link title="Netcgi_common" rel="Chapter" href="Netcgi_common.html"> <link title="Netcgi" rel="Chapter" href="Netcgi.html"> <link title="Netcgi_ajp" rel="Chapter" href="Netcgi_ajp.html"> <link title="Netcgi_scgi" rel="Chapter" href="Netcgi_scgi.html"> <link title="Netcgi_cgi" rel="Chapter" href="Netcgi_cgi.html"> <link title="Netcgi_fcgi" rel="Chapter" href="Netcgi_fcgi.html"> <link title="Netcgi_dbi" rel="Chapter" href="Netcgi_dbi.html"> <link title="Netcgi1_compat" rel="Chapter" href="Netcgi1_compat.html"> <link title="Netcgi_test" rel="Chapter" href="Netcgi_test.html"> <link title="Netcgi_porting" rel="Chapter" href="Netcgi_porting.html"> <link title="Netcgi_plex" rel="Chapter" href="Netcgi_plex.html"> <link title="Http_client" rel="Chapter" href="Http_client.html"> <link title="Telnet_client" rel="Chapter" href="Telnet_client.html"> <link title="Ftp_data_endpoint" rel="Chapter" href="Ftp_data_endpoint.html"> <link title="Ftp_client" rel="Chapter" href="Ftp_client.html"> <link title="Nethttpd_types" rel="Chapter" href="Nethttpd_types.html"> <link title="Nethttpd_kernel" rel="Chapter" href="Nethttpd_kernel.html"> <link title="Nethttpd_reactor" rel="Chapter" href="Nethttpd_reactor.html"> <link title="Nethttpd_engine" rel="Chapter" href="Nethttpd_engine.html"> <link title="Nethttpd_services" rel="Chapter" href="Nethttpd_services.html"> <link title="Nethttpd_plex" rel="Chapter" href="Nethttpd_plex.html"> <link title="Nethttpd_intro" rel="Chapter" href="Nethttpd_intro.html"> <link title="Netplex_types" rel="Chapter" href="Netplex_types.html"> <link title="Netplex_mp" rel="Chapter" href="Netplex_mp.html"> <link title="Netplex_mt" rel="Chapter" href="Netplex_mt.html"> <link title="Netplex_log" rel="Chapter" href="Netplex_log.html"> <link title="Netplex_controller" rel="Chapter" href="Netplex_controller.html"> <link title="Netplex_container" rel="Chapter" href="Netplex_container.html"> <link title="Netplex_sockserv" rel="Chapter" href="Netplex_sockserv.html"> <link title="Netplex_workload" rel="Chapter" href="Netplex_workload.html"> <link title="Netplex_main" rel="Chapter" href="Netplex_main.html"> <link title="Netplex_config" rel="Chapter" href="Netplex_config.html"> <link title="Netplex_kit" rel="Chapter" href="Netplex_kit.html"> <link title="Rpc_netplex" rel="Chapter" href="Rpc_netplex.html"> <link title="Netplex_cenv" rel="Chapter" href="Netplex_cenv.html"> <link title="Netplex_intro" rel="Chapter" href="Netplex_intro.html"> <link title="Netshm" rel="Chapter" href="Netshm.html"> <link title="Netshm_data" rel="Chapter" href="Netshm_data.html"> <link title="Netshm_hashtbl" rel="Chapter" href="Netshm_hashtbl.html"> <link title="Netshm_array" rel="Chapter" href="Netshm_array.html"> <link title="Netshm_intro" rel="Chapter" href="Netshm_intro.html"> <link title="Netconversion" rel="Chapter" href="Netconversion.html"> <link title="Netchannels" rel="Chapter" href="Netchannels.html"> <link title="Netstream" rel="Chapter" href="Netstream.html"> <link title="Mimestring" rel="Chapter" href="Mimestring.html"> <link title="Netmime" rel="Chapter" href="Netmime.html"> <link title="Netsendmail" rel="Chapter" href="Netsendmail.html"> <link title="Neturl" rel="Chapter" href="Neturl.html"> <link title="Netaddress" rel="Chapter" href="Netaddress.html"> <link title="Netbuffer" rel="Chapter" href="Netbuffer.html"> <link title="Netdate" rel="Chapter" href="Netdate.html"> <link title="Netencoding" rel="Chapter" href="Netencoding.html"> <link title="Netulex" rel="Chapter" href="Netulex.html"> <link title="Netaccel" rel="Chapter" href="Netaccel.html"> <link title="Netaccel_link" rel="Chapter" href="Netaccel_link.html"> <link title="Nethtml" rel="Chapter" href="Nethtml.html"> <link title="Netstring_str" rel="Chapter" href="Netstring_str.html"> <link title="Netstring_pcre" rel="Chapter" href="Netstring_pcre.html"> <link title="Netstring_mt" rel="Chapter" href="Netstring_mt.html"> <link title="Netmappings" rel="Chapter" href="Netmappings.html"> <link title="Netaux" rel="Chapter" href="Netaux.html"> <link title="Nethttp" rel="Chapter" href="Nethttp.html"> <link title="Netchannels_tut" rel="Chapter" href="Netchannels_tut.html"> <link title="Netmime_tut" rel="Chapter" href="Netmime_tut.html"> <link title="Netsendmail_tut" rel="Chapter" href="Netsendmail_tut.html"> <link title="Netulex_tut" rel="Chapter" href="Netulex_tut.html"> <link title="Neturl_tut" rel="Chapter" href="Neturl_tut.html"> <link title="Netsys" rel="Chapter" href="Netsys.html"> <link title="Netpop" rel="Chapter" href="Netpop.html"> <link title="Rpc_auth_dh" rel="Chapter" href="Rpc_auth_dh.html"> <link title="Rpc_key_service" rel="Chapter" href="Rpc_key_service.html"> <link title="Rpc_time" rel="Chapter" href="Rpc_time.html"> <link title="Rpc_auth_local" rel="Chapter" href="Rpc_auth_local.html"> <link title="Rtypes" rel="Chapter" href="Rtypes.html"> <link title="Xdr" rel="Chapter" href="Xdr.html"> <link title="Rpc" rel="Chapter" href="Rpc.html"> <link title="Rpc_program" rel="Chapter" href="Rpc_program.html"> <link title="Rpc_portmapper_aux" rel="Chapter" href="Rpc_portmapper_aux.html"> <link title="Rpc_packer" rel="Chapter" href="Rpc_packer.html"> <link title="Rpc_transport" rel="Chapter" href="Rpc_transport.html"> <link title="Rpc_client" rel="Chapter" href="Rpc_client.html"> <link title="Rpc_simple_client" rel="Chapter" href="Rpc_simple_client.html"> <link title="Rpc_portmapper_clnt" rel="Chapter" href="Rpc_portmapper_clnt.html"> <link title="Rpc_portmapper" rel="Chapter" href="Rpc_portmapper.html"> <link title="Rpc_server" rel="Chapter" href="Rpc_server.html"> <link title="Rpc_auth_sys" rel="Chapter" href="Rpc_auth_sys.html"> <link title="Rpc_intro" rel="Chapter" href="Rpc_intro.html"> <link title="Rpc_mapping_ref" rel="Chapter" href="Rpc_mapping_ref.html"> <link title="Rpc_ssl" rel="Chapter" href="Rpc_ssl.html"> <link title="Rpc_xti_client" rel="Chapter" href="Rpc_xti_client.html"> <link title="Shell_sys" rel="Chapter" href="Shell_sys.html"> <link title="Shell" rel="Chapter" href="Shell.html"> <link title="Shell_uq" rel="Chapter" href="Shell_uq.html"> <link title="Shell_mt" rel="Chapter" href="Shell_mt.html"> <link title="Shell_intro" rel="Chapter" href="Shell_intro.html"> <link title="Netsmtp" rel="Chapter" href="Netsmtp.html"><link title="Setup" rel="Section" href="#setup"> <link title="Apache" rel="Subsection" href="#3_Apache"> <link title="Other web severs" rel="Subsection" href="#3_Otherwebsevers"> <link title="Workers.properties" rel="Subsection" href="#3_Workersproperties"> <title>Ocamlnet 2 Reference Manual : Netcgi_ajp</title> </head> <body> <div class="navbar"><a href="Netcgi.html">Previous</a> <a href="index.html">Up</a> <a href="Netcgi_scgi.html">Next</a> </div> <center><h1>Module <a href="type_Netcgi_ajp.html">Netcgi_ajp</a></h1></center> <br> <pre><span class="keyword">module</span> Netcgi_ajp: <code class="code">sig</code> <a href="Netcgi_ajp.html">..</a> <code class="code">end</code></pre>Apache JServ Protocol (AJP) 1.3 connector. <p> See the <a href="Netcgi_ajp.html#setup"><i>Setup</i></a> section at the end of this file to know how to configure your web server.<br> <hr width="100%"> <pre><span class="keyword">val</span> <a name="VALarg_parse"></a>arg_parse : <code class="type">(Arg.key * Arg.spec * Arg.doc) list -><br> Arg.anon_fun -> Arg.usage_msg -> (string * string) list</code></pre><div class="info"> <code class="code">arg_parse speclist anon_fun usage_msg</code> parses the command line and return an associative list describing the content of the property file (see <a href="Netcgi_ajp.html#VALprops_of_file"><code class="code">Netcgi_ajp.props_of_file</code></a>). This function allows to fakes the "java" command (JVM startup): <p> <ul> <li>the option <code class="code">-classpath <path></code> is ignored;</li> <li>the first anonymous argument (Java class name) is ignored;</li> <li>the second anonymous argument is the name of the property file;</li> <li>other options are interpreted according to the <code class="code">speclist</code>.</li> </ul> <br> <b>Raises</b> <code>Failure</code> and prints a usage message if the property file cannot be read.<br> </div> <pre><span class="keyword">val</span> <a name="VALprops_of_file"></a>props_of_file : <code class="type">string -> (string * string) list</code></pre><div class="info"> <code class="code">props_of_file fname</code> parses the property file <code class="code">fname</code> and returns it as an associative list. The following properties are used: <p> <ul> <li>"bindaddress": The address the server socket is bound to. Can be specified as IP address or hostname or "*" (default: "localhost").</li> <li>"port": The port number the server socket is bound to. Defaults to 8007.</li> <li>"security.authentication": If "true", the server expects that the web server authenticates itself. Defaults to "true".</li> <li>"security.challengeSize": The length of the challenge string. Defaults to 5.</li> <li>"security.secretKey": The file containing the secret key used for authentication.</li> <li>"security.allowHost": Only the web server with this IP address is allowed to connect (this option can occur several times). DNS names are resolved at startup time.</li> <li>"jakarta.servletSubString": The substring that is used as indicator for the servlet name (for mod_jk only). Defaults to "/servlets/".</li> <li>"ocamlnet.https": Whether HTTPS is assumed as basic protocol or not. Defaults to "false".</li> </ul> Other properties are ignored.<br> <b>Raises</b> <code>Invalid_argument</code> if the file does not exist or is not readable.<br> </div> <pre><span class="keyword">val</span> <a name="VALrun"></a>run : <code class="type">?props:(string * string) list -><br> ?config:<a href="Netcgi.html#TYPEconfig">Netcgi.config</a> -><br> ?script_name:string -><br> ?allow:(Unix.sockaddr -> bool) -><br> ?output_type:<a href="Netcgi.html#TYPEoutput_type">Netcgi.output_type</a> -><br> ?arg_store:<a href="Netcgi.html#TYPEarg_store">Netcgi.arg_store</a> -><br> ?exn_handler:<a href="Netcgi.html#TYPEexn_handler">Netcgi.exn_handler</a> -> ?port:int -> (<a href="Netcgi.cgi.html">Netcgi.cgi</a> -> unit) -> unit</code></pre><div class="info"> <code class="code">run f</code> executes <code class="code">f cgi</code> for each AJP request.<br> </div> <div class="param_info"><code class="code">config</code> : Default: <a href="Netcgi.html#VALdefault_config"><code class="code">Netcgi.default_config</code></a></div> <div class="param_info"><code class="code">allow</code> : Tells whether a connection from the socket is allowed. Default: allow from all.</div> <div class="param_info"><code class="code">output_type</code> : Default: <code class="code">`Direct ""</code></div> <div class="param_info"><code class="code">arg_store</code> : Default: <code class="code">`Automatic</code> for all arguments.</div> <div class="param_info"><code class="code">exn_handler</code> : See <a href="Netcgi.html#TYPEexn_handler"><code class="code">Netcgi.exn_handler</code></a>. Default: delegate all exceptions to the default handler.</div> <div class="param_info"><code class="code">port</code> : The port used by the web server to send the requests (Default: 8009).</div> <pre><span class="keyword">val</span> <a name="VALhandle_request"></a>handle_request : <code class="type">?script_name:string -><br> <a href="Netcgi.html#TYPEconfig">Netcgi.config</a> -><br> <a href="Netcgi.html#TYPEoutput_type">Netcgi.output_type</a> -><br> <a href="Netcgi.html#TYPEarg_store">Netcgi.arg_store</a> -><br> <a href="Netcgi.html#TYPEexn_handler">Netcgi.exn_handler</a> -><br> (<a href="Netcgi.cgi.html">Netcgi.cgi</a> -> unit) -><br> log:(string -> unit) option -> Unix.file_descr -> <a href="Netcgi.html#TYPEconnection_directive">Netcgi.connection_directive</a></code></pre><div class="info"> <code class="code">handle_request config output_type arg_store eh f ~log fd</code>: This is a lower-level interface that processes exactly one request arriving on the existing connection <code class="code">fd</code>. <p> <code class="code">log</code> is the error logger function or <code class="code">None</code>, in which case errors are passed through to the FCGI client. <p> The other arguments are just like for <code class="code">run</code>. <p> The return value indicates whether the connection can be kept open or must be closed.<br> </div> <br> <a name="setup"></a> <h2>Setup</h2> <p> <a name="3_Apache"></a> <h3>Apache</h3> <p> You need to use mod_jk to have support for AJP/1.3. To install it, please see <a href="http://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html">Working with mod_jk</a>. <p> In httpd.conf or in a file, say mod_jk.conf, in /etc/apache2/conf.d/ (or /etc/apache2/conf.d/ for Apache 1.x), add the following: <pre> # Shared memory file name (Unix only). The parent dir must exist. JkShmFile /var/tmp/jk-runtime-status LoadModule jk_module mod_jk.so # Declare the module for <IfModule> (remove this line on Apache 2.x) AddModule mod_jk.c <IfModule mod_jk.c> # Configure mod_jk # Apache 1.x #JkWorkersFile /etc/libapache-mod-jk/workers.properties #JkLogFile /var/log/apache/mod_jk.log # Apache 2.x JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkLogLevel info # JkMount [URL prefix] [Worker name] JkMount /*.jsp ajp13_worker JkMount /servlet/* ajp13_worker </IfModule> </pre> <p> <a name="3_Otherwebsevers"></a> <h3>Other web severs</h3> <p> Please go to this <a href="http://tomcat.apache.org/connectors-doc/index.html">configuration page</a>. Mail us specific instructions or tips for other web servers so we can include them here. <p> <a name="3_Workersproperties"></a> <h3>Workers.properties</h3> <p> Here is an example of workers.properties: <pre> # Comma separated list of worker names: worker.list=ajp13_worker # Set properties for ajp13_worker worker.ajp13_worker.type=ajp13 worker.ajp13_worker.host=localhost worker.ajp13_worker.port=8009 worker.ajp13_worker.cachesize=1 </pre><br> </body></html>