Added: tomcat/site/trunk/docs/connectors-doc/reference/printer/status.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/connectors-doc/reference/printer/status.html?rev=1307873&view=auto ============================================================================== --- tomcat/site/trunk/docs/connectors-doc/reference/printer/status.html (added) +++ tomcat/site/trunk/docs/connectors-doc/reference/printer/status.html Sat Mar 31 18:52:20 2012 @@ -0,0 +1,546 @@ +<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>The Apache Tomcat Connector - Reference Guide - Status Worker Reference</title><meta name="author" value="Rainer Jung"><meta name="email" value="rj...@apache.org"><link href="../../style.css" type="text/css" rel="stylesheet"></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="4"><!--PAGE HEADER--><tr><td colspan="2"><!--TOMCAT LOGO--><a href="http://tomcat.apache.org/"><img src="../../images/tomcat.gif" align="left" alt="Apache Tomcat" border="0"></a><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="http://www.apache.org/images/asf-logo.gif" align="right" alt=" :: Apache Software Foundation" border="0"></a></td></tr><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left"><table border="0" width="100%" cellspacing="4"><tr><td align="left" valign="top"><h1>The Apache Tomcat Connector - Reference Guide</h1><h2>Status Worker Reference</h2></td><td align="right" valign="top" nowrap="true"><img src="../../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0" alt=" "></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +Tomcat Connectors has a special type of worker, the so-called status worker. +The status worker does not forward requests to Tomcat instances. Instead it allows +to retrieve status and configuration information at runtime, +and furthermore to change many configuration items dynamically. This can be done +via a simple embedded web interface. +</p> +<p> +The status worker is especially powerful, when used together with load balancing workers. +</p> +<p> +This document does not explain the HTML user interface of the status worker. +Until now it is very simple, so just go ahead and use it. This doc instead +tries to explain the less obvious features of the status worker. We also will give a +complete coverage of the various request parameters and their meaning, so that you can +include the status worker in your automation scripts. +</p> +<p> +The documentation of the status worker starts with <b>jk 1.2.20</b> +</p> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Usage Patterns"><strong>Usage Patterns</strong></a></font></td></tr><tr><td><blockquote> +<br> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Actions"><strong>Actions</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The status worker knows about the following actions: +<ul> +<li> +<b>list</b>: lists the configurations and runtime information of all configured workers. +The output will be grouped by global information first (version data), then load balancer +information, after that AJP worker information and finally the legend. For load balancers, +there will be a summary part, and after that details for each member worker. For all workers, +we also include the URL mappings (forward definitions). +</li> +<li> +<b>show</b>: the same as list, but only shows data for one chosen worker +</li> +<li> +<b>edit</b>: produces a form to edit configuration data for a chosen worker. There is a +special subtype of "edit", that makes it easy to change one attribute for all members of +a load balancer, e.g. their activation state. +</li> +<li> +<b>update</b>: commit changes made in an edit form. <b>Caution</b>: the changes will not be +persisted to the configuration files. As soon as your restart your web server, all changes +made through the status worker will be lost! On the other hand, the changes done by the status +worker will be applied during runtime without a restart of the web server. +</li> +<li> +<b>reset</b>: reset all runtime statistics for a worker. +</li> +<li> +<b>recover</b>: Mark a member of a load balancer, that is in error state, for immediate recovery. +</li> +<li> +<b>version</b>: only show version information of the web server and the JK software +</li> +<li> +<b>dump</b>: list the original workers configuration. <b>Caution</b>: the dump will only contain +the configuration that was used during startup. Any changes applied later by the dynamic management +interface of the status worker itself will not be contained in this dump. +The dump action has been added in version 1.2.27. +</li> +</ul> +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Output Format"><strong>Output Format</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +For most actions you can choose between 4 output formats. +<ul> +<li> +<b>HTML</b>: Used interactively with a browser +</li> +<li> +<b>XML</b>: Mostly useful for automation, when your scripting environment is XML friendly. +This format has rich structure information, but does not work line based, so you would really +like to use it together with XML tools. +</li> +<li> +<b>Properties</b>: This format is a line based format, that conforms to the rules of Java +property files. Most structure information is contained in the hierarchical key. For information, +that is of configuration nature, the format should produce lines very similar to the ones you can +use in workers.properties. It will not produce a complete configuration file! +</li> +<li> +<b>Text</b>: A simple textual output format. +</li> +</ul> +The "edit" action does only make sense for the HTML output type. +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="User Interface Features"><strong>User Interface Features</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +In the HTML view, there is an <b>automatic refresh</b> feature, implemented via the meta refresh +option of HTML. Once you start the automatic refresh, the UI will will respect it for all actions +except edit, update and maintain. Even if you navigate through one of those, the automatic refresh +will start again as soon as you come back to one of the other actions. +</p> +<p> +Many parts of the HTML page can be minimised, if they are not interesting for you. There are a couple +of "Hide" links, which will collapse parts of the information. The feature exists for the following +blocks of information: +<ul> +<li> +<b>Legend</b>: Do not show the legend for the information presented in "list" and "show" actions +</li> +<li> +<b>URI mappings</b>: Do not show the URI mapping for the workers +</li> +<li> +<b>Load Balancing Workers</b>: Do not show workers of type "lb" +</li> +<li> +<b>AJP Workers</b>: Do not show workers of type ajp +</li> +<li> +<b>Balancer Members</b>: Do not show detailed information concerning each member of load balancers +</li> +<li> +<b>Load Balancer Configuration</b>: Do not show configuration data for load balancers +</li> +<li> +<b>Load Balancer Summary</b>: Do not show status summary for load balancers +</li> +<li> +<b>AJP Configuration</b>: Do not show configuration data for ajp workers load balancer members +</li> +</ul> +The last three minimisation features have been added in version 1.2.27. +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Considerations concerning URL Maps and Virtual Hosts"><strong>Special Considerations concerning URL Maps and Virtual Hosts</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +<b>Note: </b>The following restriction has been removed starting with version 1.2.26. +</p> +<p> +The Apache module mod_jk makes use of the internal Apache httpd infrastructure concerning +virtual hosts. The downside of this is, that the status worker can only show URL maps, for +the virtual host it is defined in. It is not able to reach the configuration objects +for other virtual hosts. Of course you can define a status worker in any virtual host you +are using. All information presented apart from the URL maps will be the same, independent +of the virtual host the status worker has been called in. +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The status worker will log changes made to the configuration with log level "info" to the usual +JK log file. Invalid requests will be logged with log level "warn". If you want to report some +broken behaviour, log file content of level "debug" or even "trace" will be useful. +</p> +</blockquote></td></tr></table> + +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote> +<br> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Configuration"><strong>Basic Configuration</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The basic configuration of a status worker is very similar to that of a usual ajp worker. +You need to specify a name for the worker, and the URLs you want to map to it. The first +part of the configuration happens in the workers.properties file. We define a worker named +mystatus of type status: +<div class="example"><pre> +worker.list=mystatus +worker.mystatus.type=status +</pre></div> +Then we define a URL, which should be mapped to this worker, i.e. the URL we use +to reach the functionality of the status worker. You can use any method mod_jk supports +for the web server of your choice. Possibilities are maps inside uriworkermap.properties, +an additional mount attribute in workers.properties, or in Apache JkMount. Here's an +example for a uriworkermap.properties line: +<div class="example"><pre> +/private/admin/mystatus=mystatus +</pre></div> +The URI pattern is case sensitive. +</p> +<p> +As you will learn in the following sections, the status worker is very powerful. You should +use the usual authentication and authorisation methods of your web server to secure this URL. +</p> +<p> +You can also define multiple instances of the status worker, by using different names and URL mappings. +For instance you might want to configure them individually +and then allow special groups of people to use them +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Output Customisation"><strong>Output Customisation</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +There are a couple of attributes for the workers.properties entries, which allow to customise +various aspects of the output of the status worker. +</p> +<p> +The attribute <b>css</b> can be set to the URL of a stylesheet: +<div class="example"><pre> +worker.mystatus.css=/private/admin/static/mystatus.css +</pre></div> +When writing HTML output, the status worker then includes the line +<div class="example"><pre> +<link rel="stylesheet" type="text/css" href="/private/admin/static/mystatus.css" /> +</pre></div> +There is no sample stylesheet included with the mod_jk release, and by default the attribute css +is empty, so no stylesheet reference will be included in the pages. The HTML code +of the status worker output pages does not include any class attributes. If you like to contribute a +stylesheet or improvements to the HTML layout, please contact us on the tomcat developers list. +</p> +<p> +The properties output format can be customised via the attribute <b>prefix</b>. The names of all +properties the status worker does output, will begin with this prefix. The default is "worker". +</p> +<p> +Several attributes influence the format when writing XML output. +The attribute <b>ns</b> allows to set a namespace prefix, that will be used for every status worker+element. +The default is "jk:". Setting it to "-" disables the namespace prefix. +</p> +<p> +With the attribute xmlns you can map the prefix to a namespace URL. The default value +is xmlns:jk="http://tomcat.apache.org". Setting it to "-" disables the output of the URL. +</p> +<p> +Finally you can specify an XML document type via the attribute doctype. The specified string will +be inserted at the beginning of the document, directly after the xml header. The default is empty. +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Securing Access"><strong>Securing Access</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +We urge you to use the builtin access control features of your web server to control +access to the status worker URLs you have chosen. Nevertheless two configuration +attributes of status workers are helpful. The attribute "read_only" disables all features of +the status worker, that can be used to change configurations or runtime status of the other workers. +A read_only status worker will not allow access to the edit, update, reset or recover actions. +The default value is "False", ie. read/write. To enable read_only you need to set it to "True". +</p> +<p> +You could configure two status workers, one has read_only and will be made available to a larger +admin group, the other one will be used fully featured, but only by fewer people: +<div class="example"><pre> +worker.list=jk-watch +worker.jk-watch.type=status +worker.jk-watch.read_only=True +worker.jk-watch.mount=/user/status/jk +worker.list=jk-manage +worker.jk-manage.type=status +worker.jk-manage.mount=/admin/status/jk +</pre></div> +Starting with version 1.2.21, a read/write status worker can also be switched temporarily +into read-only mode by the user via a link in the HTML GUI. The user can always switch it +back to read/write. Only a status worker configured as read-only via the "read_only" attribute +is completely safe from applying any changes. +</p> +<p> +The other attribute you can use is <b>user</b>. By default this list is empty, which means +no limit on the users. You can set "user" to a comma separated list of user names. If your +web server is configured such that it sends the user names with the request, the status worker +will check, if the name attached with the request is contained in it's "user" list. +</p> +<p> +The user list can be split over multiple occurrences of the "user" attribute. +</p> +<p> +By default, the user names are matched case sensitively. Starting with version 1.2.21 you can set +the attribute <b>user_case_insensitive</b> to "True". Then the comparison will be made case insensitive. +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Service Availability Rating"><strong>Service Availability Rating</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +For load balancing workers the status worker shows some interesting overview information. +It categorises the members of the load balancer into the classes "good", "bad" and degraded". +This feature can be combined with external escalation procedures. Depending on your global +system design and your operating practises your preferred categorisation might vary. +</p> +<p> +The categorisation is based on the activation state of the workers (active, disabled or stopped), +which is a pure configuration state, and the runtime state +(OK or ERR with possible substates idle, busy, recovering, probing, and forced recovery) +which only depends on the runtime situation. +</p> +<p> +The runtime substates have the following meaning: +<ul> +<li> +<b>OK (idle)</b>: This worker didn't receive any request since the last balancer +maintenance. By default balancer maintenance runs every 60 seconds. The +worker should be OK, but since we didn't have to use it for some time, we +can't be sure. This state has been called N/A before version 1.2.24. +</li> +<li> +<b>OK (busy)</b>: All connections for this worker are in use for requests. +</li> +<li> +<b>ERROR (recovering)</b>: The worker was in error state for some time and is now +marked for recovery. The next request suitable for this worker will use it. +</li> +<li> +<b>ERROR (probing)</b>: After setting the worker to recovering, we received a request +suitable for this worker. This request is now using the worker. +</li> +<li> +<b>ERROR (forced recovery)</b>: The worker is in error, but we don't have an alternative +worker, so we keep using it. +</li> +</ul> +</p> +<p> +By default the status worker groups into "good" all members, that have activation "active" and +runtime state not equal to "error" with empty substate. +The "bad" group consists of the members, that have either activation +"stopped", or are in runtime state "error" with empty substate. +</p> +<p> +Workers that fit neither of the two groups, are considered to be "degraded". +</p> +<p> +You can define other rules for the grouping into good, bad and degraded. +The two attributes "good" and "bad" can be populated by a comma-separated list ob single characters or +dot-separated pairs. Each character stands for the first character of one of the possible states "active", +"disabled", "stopped", "ok", "idle", "busy", "recovering" and "error". The additional states "probing" +and "forced recovery" are always rated equivalent to "recovering". +Comma-separated entries will be combined +with logical "or", if you combine a configuration and a runtime state with a dot. the are combined with logical +"and". So the default value for "good" is "a.o,a.i,a.b,a.r", for "bad" it is "e,s". +</p> +<p> +The status worker first tries to match against the "bad" definitions, if this doesn't succeed +it tries to match against "good", and finally it chooses "degraded", if no "bad" or "good" match +can be found. +</p> +</blockquote></td></tr></table> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Parameters"><strong>Request Parameters</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +This section should help you building automation scripts based on the jk status +management interface. This interface is stable in the sense, that we only expect +to add further parameters in the future. Existing parameters from previous versions +will keep their original semantics. We also expect the output formats XML, Properties +and Text to be kept stable. So please use those, if you want to parse status worker +output in your automation scripts. +</p> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Actions"><strong>Actions</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The action is determined by the parameter <b>cmd</b>. It can have the values "list", "show", +"edit", "update", "reset", "recover", "version" and "dump". If you omit the <b>cmd</b> parameter, +the default "list" will be used. +All actions except for "list", "refresh", "version" and "dump" need additional parameters. +</p> +<p> +The action "dump" has been added in version 1.2.27. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Output Format"><strong>Output Format</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The format is determined by the parameter <b>mime</b>. It can have the values "html", "xml", +"txt" and "prop". If you omit the <b>mime</b> parameter, the default "html" +will be used. The action "edit" (the edit form) does only make sense for "mime=html". +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Worker Selection"><strong>Worker Selection</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +Actions that operate on a single worker need one or two additional parameters to select +this worker. The parameter <b>w</b> contains the name of the worker from the worker list. +If an action operates on a member (sub worker) of a load balancer, the parameter <b>w</b> +contains the name of the load balancer worker, and the additional parameter <b>sw</b> contains the +name of the sub worker. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Automatic Refresh"><strong>Automatic Refresh</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +During automatic refresh, the parameter <b>re</b> contain the refresh interval in seconds. +If you omit this parameter, automatic refresh will be off. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Hide Options"><strong>Hide Options</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The parameter <b>opt</b> contains a bit mask of activated options. The default is 0, so +by default no options are activated. The following options exist: +<ul> +<li> +<b>0x0001</b>: hide members of lb workers +</li> +<li> +<b>0x0002</b>: hide URL maps +</li> +<li> +<b>0x0004</b>: hide the legend +</li> +<li> +<b>0x0008</b>: hide load balancer workers +</li> +<li> +<b>0x0010</b>: hide ajp workers +</li> +<li> +<b>0x0020</b>: only allow read_only actions for a read/write status worker. +</li> +<li> +<b>0x0040</b>: hide load balancer configuration +</li> +<li> +<b>0x0080</b>: hide load balancer status summary +</li> +<li> +<b>0x0100</b>: hide configuration for ajp and load balancer member workers +</li> +</ul> +Values 0x0040-0x0100 have been added in version 1.2.27. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Data Parameters for the standard Update Action"><strong>Data Parameters for the standard Update Action</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +You can use the edit action with a final click to the update button, to change settings of workers. +But you can also make direct calls to the update action. The following request parameters +contain the configuration information, you want to change. First the list for load balancer workers: +<ul> +<li> +<b>vlr</b>: retries (number) +</li> +<li> +<b>vlt</b>: recover_time (seconds) +</li> +<li> +<b>vlee</b>: error_escalation_time (seconds) +</li> +<li> +<b>vlx</b>: max_reply_timeouts (number) +</li> +<li> +<b>vls</b>: sticky_session (0/f/n/off=off, 1/t/y/on=on; case insensitive) +</li> +<li> +<b>vlf</b>: sticky_session_force (0/f/n/off=off, 1/t/y/on=on; case insensitive) +</li> +<li> +<b>vlm</b>: method (0/r="Requests", 1/t="Traffic", 2/b="Busyness", 3/s="Sessions", 4/s="Next"; case insensitive, only first character is used) +</li> +<li> +<b>vll</b>: lock (0/o="Optimistic", 1/p="Pessimistic"; case insensitive, only first character is used) +</li> +</ul> +And now the list of parameters you can use to change settings for load balancer members: +<ul> +<li> +<b>vwa</b>: activation flag (0/a="active", 1/d="disabled", 2/s="stopped"; case insensitive, only first character is used) +</li> +<li> +<b>vwf</b>: load balancing factor (integer weight) +</li> +<li> +<b>vwn</b>: route for use with sticky sessions (string) +</li> +<li> +<b>vwr</b>: redirect to define simple failover rules (string) +</li> +<li> +<b>vwc</b>: domain to tell JK about your replication design (string) +</li> +<li> +<b>vwd</b>: distance to express preferences (integer) +</li> +</ul> +Finally the list of parameters you can use to change settings for ajp workers and ajp load balancer members: +<ul> +<li> +<b>vahst</b>: host (string) +</li> +<li> +<b>vaprt</b>: port (number) +</li> +<li> +<b>vacpt</b>: connection_pool_timeout (number) +</li> +<li> +<b>vact</b>: connect_timeout (number) +</li> +<li> +<b>vapt</b>: prepost_timeout (number) +</li> +<li> +<b>vart</b>: reply_timeout (number) +</li> +<li> +<b>var</b>: retries (number) +</li> +<li> +<b>varo</b>: recovery_options (number) +</li> +<li> +<b>vamps</b>: max_packet_size (number) +</li> +</ul> +Note that changing the host name or port will only take effect for new connections. +Already established connections to the old address will still be used. +Nevertheless this feature is interesting, because you can provision load balancer +members with port "0", which will automatically be stopped during startup. Later +when you know the final names and ports, you can set them and they will be +automatically activated. +</p> +<p> +The leading character "v" has been added to the parameters in version 1.2.27. +Changing settings for ajp workers has also been introduced in version 1.2.27. +</p> +<p> +For the details of all parameters, we refer to the <a href="workers.html">workers.properties Reference</a>. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Aspect Editing for Load Balancer Members"><strong>Aspect Editing for Load Balancer Members</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +You can use the edit action to edit all settings for a load balancer or for a +member of a load balancer respectively on one page. If you want to edit one +configuration aspect for all members of a load balancer simultaneously, this +will be triggered by the parameter <b>att</b>. The value of the parameter indicates, +which aspect you want to edit. The list is the same as in the previous section, +except for "vahst" and "vaprt": +"vwa", "vwf", "vwn", "vwr", "vwc", "vwd", "vacpt", "vact", "vapt", "vart", "var", +"varo" and "vamps". But here you +need to put the name into the parameter <b>att</b>, instead of using it as a request +parameter name. +</p> +<p> +The values of the common aspect for all the load balancer members will be given +in parameters named "val0", "val1", .... +</p> +</blockquote></td></tr></table> +</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em> + Copyright © 1999-2012, Apache Software Foundation + </em></font></div></td></tr></table></body></html> \ No newline at end of file
Propchange: tomcat/site/trunk/docs/connectors-doc/reference/printer/status.html ------------------------------------------------------------------------------ svn:eol-style = native Added: tomcat/site/trunk/docs/connectors-doc/reference/printer/uriworkermap.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/connectors-doc/reference/printer/uriworkermap.html?rev=1307873&view=auto ============================================================================== --- tomcat/site/trunk/docs/connectors-doc/reference/printer/uriworkermap.html (added) +++ tomcat/site/trunk/docs/connectors-doc/reference/printer/uriworkermap.html Sat Mar 31 18:52:20 2012 @@ -0,0 +1,423 @@ +<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>The Apache Tomcat Connector - Reference Guide - uriworkermap.properties configuration</title><meta name="author" value="Rainer Jung"><meta name="email" value="rj...@apache.org"><meta name="author" value="Mladen Turk"><meta name="email" value="mt...@apache.org"><link href="../../style.css" type="text/css" rel="stylesheet"></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="4"><!--PAGE HEADER--><tr><td colspan="2"><!--TOMCAT LOGO--><a href="http://tomcat.apache.org/"><img src="../../images/tomcat.gif" align="left" alt="Apache Tomcat" border="0"></a><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="http://www.apache.org/images/asf-logo.gif" align="right" alt=" :: Apache Software Foundation" border="0"></a></td></tr><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><! --RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left"><table border="0" width="100%" cellspacing="4"><tr><td align="left" valign="top"><h1>The Apache Tomcat Connector - Reference Guide</h1><h2>uriworkermap.properties configuration</h2></td><td align="right" valign="top" nowrap="true"><img src="../../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0" alt=" "></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The forwarding of requests from the web server to tomcat gets configured by defining mapping rules. +Such a rule maps requests to workers. The request part of the map is described by a URI pattern, +the worker by it's worker name. +</p> +<p> +The so-called <b>uriworkermap</b> file is a mechanism of defining rules, +which works for all web servers. There exist also other web server specific configuration +options for defining rules, which will be mostly discussed on the reference pages for +configuring tomcat connectors for the individual web servers. +</p> +<p> +The name of the file is usually uriworkermap.properties, +although this is configurable in the web server. +Please consult the web server specific documentation pages on +how to enable the uriworkermap file. +</p> +<p> +The main features supported by the uriworkermap file are +<ul> +<li> +Support for comments in the rule file. +</li> +<li> +Exact and wildchar matches, shortcuts to map a directory and all including content. +</li> +<li> +Exclusion rules, disabling of rules and rule priorities. +</li> +<li> +Rule extensions, modifying worker behaviour per rule. +</li> +<li> +Virtual host integration: uri mapping rules can be expressed per virtual host. +The details are web server specific though. +</li> +<li> +Dynamic reloading: The file gets checked periodically for changes. +New versions are automatically reloaded without web server restarts. +</li> +<li> +Integration with the status worker. +</li> +</ul> +The following sections describe these aspects in more detail. +</p> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Syntax"><strong>Syntax</strong></a></font></td></tr><tr><td><blockquote> +<br> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Line format"><strong>Line format</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The file has a line based format. There are no continuation characters, +so each rule needs to be defined on a single line. Each rule is a pair consisting +of a URI pattern and a worker name, combined by an equals sign '=': +<div class="example"><pre> + /myapp=myworker +</pre></div> +The URI pattern is case sensitive. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comments, white space"><strong>Comments, white space</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +All text after and including the character '#' gets ignored and can be used for comments. +Leading and trailing white space gets trimmed around the URI pattern and also around the worker name. +The following definitions are all equivalent: +<div class="example"><pre> + # This is a white space example + /myapp=myworker + /myapp=myworker + /myapp = myworker +</pre></div> +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="URI patterns"><strong>URI patterns</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +Inside the URI pattern three special characters can be used, '*', '?' and '|'. +The character '*' is a wildchar that matches any number of arbitrary characters +in the URI, '?' matches exactly one character. +Each URI pattern has to start with the character '/', or with '*' or with '?', +optionally prefixed by any combination of the modifiers '!' and '-' (see next section). +<div class="example"><pre> + # Mapping the URI /myapp1 and everything under /myapp1/: + /myapp1=myworker-a + /myapp1/*=myworker-a + # Mapping all URI which end with a common suffix: + *.jsp=myworker + *.do=myworker +</pre></div> +Since the first case of mapping a certain location and everything inside +it is very common, the character '|' gives a handy shortcut: +<div class="example"><pre> + # Mapping the URI /myapp1 and everything under /myapp1/: + /myapp1|/*=myworker-a +</pre></div> +The pattern 'X|Y' is exactly equivalent to the two maps 'X' and 'XY'. +</p> +</blockquote></td></tr></table> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Exclusion, Disabling and Priorities"><strong>Exclusion, Disabling and Priorities</strong></a></font></td></tr><tr><td><blockquote> +<br> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Exclusions and rule disabling"><strong>Exclusions and rule disabling</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +Exclusion rules allows to define exclusions from URI rules, which would forward +requests to tomcat. If the exclusion rule matches, the request will not be forwarded. +This is usually used to serve static content by the web server. +A rule is an exclusion rule, if it is suffixed with '!': +<div class="example"><pre> + # Mapping the URI /myapp and everything under /myapp/: + /myapp|/*=myworker + # Exclude the subdirectory static: + !/myapp/static|/*=myworker + # Exclude some suffixes: + !*.html=myworker +</pre></div> +An exclusion rule overrides a normal mapping rule only, if the worker names in the +normal rule and in the exclusion rule are the same. Starting with version 1.2.26 of JK +you can apply an exclusion rule to any worker, by using the star character '*' as +the worker name in the exclusion rule. +More complex patterns in exclusion worker names are not allowed. +<div class="example"><pre> + # Mapping the webapps /myapp1 and /myapp2: + /myapp1|/*=myworker1 + /myapp2|/*=myworker2 + # Exclude the all subdirectories static for all workers: + !/*/static|/*=* + # Exclude some suffixes for all workers: + !*.html=* +</pre></div> +</p> +<p> +Rule disabling comes into play, if your web server merges rules from various sources, +and you want to disable any rule defined previously. Since the uriworkermap file gets +reloaded dynamically, you can use this to temporarily disable request forwarding: +A rule gets disabled, if it is suffixed with '-': +<div class="example"><pre> + # We are not in maintenance. + # The maintenance rule got defined somewhere else. + -/*=maintenance +</pre></div> +Exclusion rules can get disabled as well, then the rule starts with '-!'. +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Mapping priorities"><strong>Mapping priorities</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The most restrictive URI pattern is applied first. More precisely the URI patterns are +sorted by the number of '/' characters in the pattern (highest number first), and +rules with equal numbers are sorted by their string length (longest first). +</p> +<p> +If both distinctions still do not suffice, then the defining source of the rule is considered. +Rules defined in uriworkermap.properties come first, before rules defined by JkMount (Apache) +and inside workers.properties using the mount attribute. +</p> +<p> +All disabled rules are ignored. Exclusion rules are applied after all normal rules +have been applied. +</p> +<p> +There is no defined behaviour, for the following configuration conflict: +using literally the same URI pattern in the same defining source but with +different worker targets. +</p> +</blockquote></td></tr></table> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Rule extensions"><strong>Rule extensions</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +Rule extensions were added in version 1.2.27 and are not available in earlier versions. +</p> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Syntax"><strong>Syntax</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +Rule extensions are additional attributes, that can be attached to any rule. +They are added at the end of the rule, each extension separated by a semicolon: +<div class="example"><pre> + # This is an extension example, + # setting a reply_timeout of 1 minute + # only for this mapping. + /myapp=myworker;reply_timeout=60000 + # + # This is an example using multiple extensions + /myapp=myloadbalancer;reply_timeout=60000;stopped=member1 +</pre></div> +Attributes set via rule extensions always overwrite conflicting +configurations in the worker definition file. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extension reply_timeout"><strong>Extension reply_timeout</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extension <b class="code">reply_timeout</b> sets a reply timeout for a single mapping rule. +<div class="example"><pre> + # Setting a reply_timeout of 1 minute + # only for this mapping. + /myapp=myworker;reply_timeout=60000 +</pre></div> +It overrides any <b class="code">reply_timeout</b> defined for the worker. The extension allows +to set a reasonable default reply timeout to the worker, and a more relaxed +reply timeout to URLs, which are known to start time intensive tasks. +For a general description of reply timeouts see the +<a href="../../generic_howto/timeouts.html#Reply Timeout">timeouts</a> documentation. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extension sticky_ignore"><strong>Extension sticky_ignore</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extension <b class="code">sticky_ignore</b> will disable session stickyness for a single +mapping rule. +<div class="example"><pre> + # Disable session stickyness + # only for this mapping. + /myapp/loginform.jsp=myworker;sticky_ignore=1 +</pre></div> +This extension can be useful to optimize load balancing when using +cookie based session stickyness. In this case, as long as she keeps +her browser open, any request by a user who started a session will +be send to the same Tomcat instance, even if he left the part of +the application which uses the session. You can for instance +set this environment variable when a user requests a login form +to ensure, that this initial session request is balanced non-sticky. +</p> +<p> +This extension is available since version 1.2.33. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extension stateless"><strong>Extension stateless</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extension <b class="code">stateless</b> is only useful when using session based +load balancing. In this case normally any request which does not come with +a session id counts as a new session. If you mark a mapping rule with +the <b class="code">stateless</b> extension, then the requests matching the mapping +rule will not count as a new session, even if they do not come with a session +id. +<div class="example"><pre> + # Don't let static content trash our session balancing + /myapp/static/*=myworker;stateless=1 +</pre></div> +This extension is available since version 1.2.33. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extensions active/disabled/stopped"><strong>Extensions active/disabled/stopped</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extensions <b class="code">active</b>, <b class="code">disabled</b>, and <b class="code">stopped</b> +can be used in a load balancer mapping rule to set selected members +of the load balancer into a special activation state. +<div class="example"><pre> + # Stop forwarding only for member1 of loadbalancer + /myapp=myloadbalancer;stopped=member1 +</pre></div> +Multiple members must be separated by commas or white space: +<div class="example"><pre> + # Stop forwarding for member01 and member02 of loadbalancer + # Disable forwarding for member21 and member22 of loadbalancer + /myapp=myloadbalancer;stopped=member01,member02;disabled=member21,member22 +</pre></div> +For the precise meaning of the activation states see the description of +<a href="../../reference/workers.html#Advanced Worker Directives">activation</a>. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extension fail_on_status"><strong>Extension fail_on_status</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extension <b class="code">fail_on_status</b> can be used in any rule: +<div class="example"><pre> + # Send 503 instead of 404 and 500, + # and if we get a 503 also set the worker to error + /myapp=myworker;fail_on_status=-404,-500,503 +</pre></div> +Multiple status codes must be separated by commas. +For the precise meaning of the attribute see the description of +<a href="../../reference/workers.html#Advanced Worker Directives">fail_on_status</a>. +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extension use_server_errors"><strong>Extension use_server_errors</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extension <b class="code">use_server_errors</b> allows to let the web server +send an error page, instead of the backend (e.g. Tomcat) error page. +This is useful, if one wants to send customized error pages, but those are +not part of all web applications. They can then be put onto the web server. +</p> +<p> +The value of <b class="code">use_server_errors</b> is a positive number. +Any request send to the backend, that returns with an http status +code bigger or equal to <b class="code">use_server_errors</b>, will +be answered to the client with the error page of the web server +for this status code. +<div class="example"><pre> + # Use web server error page for all errors + /myapp=myworker;use_server_errors=400 + # Use web server error page only for technical errors + /myotherapp=myworker;use_server_errors=500 +</pre></div> +</p> +</blockquote></td></tr></table> +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extensions session_cookie and session_path"><strong>Extensions session_cookie and session_path</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The extensions <b class="code">session_cookie</b> and <b class="code">session_path</b> +allows to define the load balancer worker attributes of the same name +per mount. +</p> +</blockquote></td></tr></table> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Virtual host integration"><strong>Virtual host integration</strong></a></font></td></tr><tr><td><blockquote> +<br> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="IIS"><strong>IIS</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +When using IIS you can restrict individual rules to special virtual hosts +by prefixing the URI pattern with the virtual host information. +The rules is that the url must be prefixed with the host name. +<div class="example"><pre> + # Use www.foo.org as virtual host + /www.foo.org/myapp/*=myworker + # Use www.bar.org as virtual host + /www.bar.org/myapp/*=myworker + # Normal mapping + /mysecondapp/*=myworker +</pre></div> +</p> +<p> +Note that /mysecondapp/* will be mapped to all virtual hosts present. +In case one needs to prevent the mappings to some particular virtual host then +the exclusion rule must be used +<div class="example"><pre> + # Make sure the myapp is accessible by all virtual hosts + /myapp/*=myworker + # Disable mapping myapp for www.foo.org virtual host + !/www.foo.org/myapp/*=myworker +</pre></div> +</p> +</blockquote></td></tr></table> + +<table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache httpd"><strong>Apache httpd</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +For Apache you can define individual uriworkermap files per virtual host. +The directive JkMountFile can be used in the main server and in each virtual host. +If a virtual host does not use JkMountfile, but JkMountCopy is set to 'On', +then it inherits the JkMountFile from the main server. If you want all vhost to inherit +mounts from the main server, you can set JkMountCopy to 'All' in the main server. +</p> +</blockquote></td></tr></table> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dynamic reloading"><strong>Dynamic reloading</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +When a request is being processed, tomcat connectors check the file modification time +of the uriworkermap file. To keep the performance penalty low, this happens only, +if the last check happened at least n seconds ago. +</p> +<p> +For Apache you can configure the interval "n" using the directive JkMountFileReload, +for IIS you would use the attribute worker_mount_reload. +The default value is 60 seconds. A value of "0" turns off the reloading. +</p> +<p> +If the file changed, it gets reloaded completely. If there exist rules coming +from other sources than the uriworkermap file (e.g. the workers.properties mount +attribute or JkMount with Apache httpd), the new uriworkermap file gets dynamically +merged with these ones exactly like when you do a web server restart. +</p> +<p> +Until version 1.2.19 reloading behaved slightly differently: it continuously added +the full contents of the uriworkermap file to the rule mapping. The merging rules +were, that duplicated got eliminated and old rules could be disabled, by defining the +rule as disabled in the new file. Rules never got deleted. +</p> +</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Status worker integration"><strong>Status worker integration</strong></a></font></td></tr><tr><td><blockquote> +<br> +<p> +The configuration view of the status worker also shows the various mapping rules. +After each worker's configuration, the rules are listed, that forward to this worker. +The list contains four columns: +<ul> +<li> +the name of the virtual server +</li> +<li> +the URI pattern, prefixed with '-' for a disabled pattern and '!' for an exclusion pattern +</li> +<li> +the type of the rule: Exact or Wildchar +</li> +<li> +and the source of the rule definition: 'worker definition' for the workers.properties file (mount attribute), +'JkMount' for Apache httpd JkMount and it's relatives and finally 'uriworkermap' for the uriworkermap file. +</li> +</ul> +</p> +<p> +<b>Note: </b>The following restriction has been removed starting with version 1.2.26. +<br> +For Apache httpd, there is an important subtlety: the request going to the status worker +gets executed in the context of some server (main or virtual). The status worker will only show the +mapping rules, that are defined for this server (main or virtual). +<br> +Until version 1.2.25 the list contained three columns: +<ul> +<li> +the type of the rule: Exact or Wildchar, eventually prefixed with Disabled or Unmount (for exclusion rules) +</li> +<li> +the URI pattern +</li> +<li> +and the source of the rule definition: 'worker definition' for the workers.properties file (mount attribute), +'JkMount' for Apache httpd JkMount and it's relatives and finally 'uriworkermap' for the uriworkermap file. +</li> +</ul> +</p> +</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em> + Copyright © 1999-2012, Apache Software Foundation + </em></font></div></td></tr></table></body></html> \ No newline at end of file Propchange: tomcat/site/trunk/docs/connectors-doc/reference/printer/uriworkermap.html ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org