| type=page |
| status=published |
| title=Administering Web Applications |
| next=logging.html |
| prev=threadpools.html |
| ~~~~~~ |
| Administering Web Applications |
| ============================== |
| |
| [[GSADG00009]][[gbbjk]] |
| |
| |
| [[administering-web-applications]] |
| 6 Administering Web Applications |
| -------------------------------- |
| |
| This chapter explains how to administer web applications in the |
| GlassFish Server Open Source Edition 5.0 environment. |
| |
| The following topics are addressed here: |
| |
| * link:#beagk[Invoking a Servlet by Alternate Means] |
| * link:#gixud[Changing Log Output for a Servlet] |
| * link:#beagc[Defining Global Features for Web Applications] |
| * link:#gixrb[Redirecting a URL] |
| * link:#gfaad[Administering `mod_jk`] |
| * link:#CIHJDAJD[Administering `mod_proxy_ajp`] |
| |
| Instructions for accomplishing some of these tasks by using the |
| Administration Console are contained in the Administration Console |
| online help. |
| |
| [[beagk]][[GSADG00548]][[invoking-a-servlet-by-alternate-means]] |
| |
| Invoking a Servlet by Alternate Means |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| You can call a servlet deployed to GlassFish Server by using a URL in a |
| browser or embedded as a link in an HTML or JSP file. The format of a |
| servlet invocation URL is as follows: |
| |
| [source,oac_no_warn] |
| ---- |
| http://server:port/context-root/servlet-mapping?name=value |
| ---- |
| |
| The following table describes each URL section. |
| |
| [[GSADG857]][[sthref20]][[fvyhk]] |
| |
| |
| Table 6-1 URL Fields for Servlets Within an Application |
| |
| [width="100%",cols="21%,79%",options="header",] |
| |======================================================================= |
| |URL element |Description |
| |server`:`port a| |
| The IP address (or host name) and optional port number. |
| |
| To access the default web module for a virtual server, specify only this |
| URL section. You do not need to specify the context-root or servlet-name |
| unless you also wish to specify name-value parameters. |
| |
| |context-root a| |
| For an application, the context root is defined in the `context-root` |
| element of the `application.xml`, `sun-application.xml`, or |
| `sun-web.xml` file. For an individually deployed web module, the context |
| root is specified during deployment. |
| |
| For both applications and individually deployed web modules, the default |
| context root is the name of the WAR file minus the `.war` suffix. |
| |
| |servlet-mapping |The `servlet-mapping` as configured in the `web.xml` |
| file. |
| |
| |`?`name`=`value`...` |Optional request parameters. |
| |======================================================================= |
| |
| |
| [[GSADG00166]][[giyhf]] |
| |
| |
| Example 6-1 Invoking a Servlet With a URL |
| |
| In this example, `localhost` is the host name, `MortPages` is the |
| context root, and `calcMortgage` is the servlet mapping. |
| |
| [source,oac_no_warn] |
| ---- |
| http://localhost:8080/MortPages/calcMortgage?rate=8.0&per=360&bal=180000 |
| ---- |
| |
| [[GSADG00167]][[giyib]] |
| |
| |
| Example 6-2 Invoking a Servlet From Within a JSP File |
| |
| To invoke a servlet from within a JSP file, you can use a relative path. |
| For example: |
| |
| [source,oac_no_warn] |
| ---- |
| <jsp:forward page="TestServlet"/><jsp:include page="TestServlet"/> |
| ---- |
| |
| [[gixud]][[GSADG00549]][[changing-log-output-for-a-servlet]] |
| |
| Changing Log Output for a Servlet |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| `ServletContext.log` messages are sent to the server log. By default, |
| the `System.out` and `System.err` output of servlets are sent to the |
| server log. During startup, server log messages are echoed to the |
| `System.err` output. Also by default, there is no Windows-only console |
| for the `System.err` output. |
| |
| You can change these defaults using the Administration Console Write to |
| System Log box. If this box is checked, `System.out` output is sent to |
| the server log. If it is unchecked, `System.out` output is sent to the |
| system default location only. |
| |
| [[beagc]][[GSADG00550]][[defining-global-features-for-web-applications]] |
| |
| Defining Global Features for Web Applications |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| You can use the `default-web.xml` file to define features such as |
| filters and security constraints that apply to all web applications. |
| |
| For example, directory listings are disabled by default for added |
| security. To enable directory listings in your domain's |
| `default-web.xml` file, search for the definition of the servlet whose |
| `servlet-name` is equal to `default`, and set the value of the |
| `init-param` named `listings` to `true`. Then restart the server. |
| |
| [source,oac_no_warn] |
| ---- |
| <init-param> |
| <param-name>listings</param-name> |
| <param-value>true</param-value> |
| </init-param> |
| ---- |
| |
| If `listings` is set to `true`, you can also determine how directory |
| listings are sorted. Set the value of the `init-param` named `sortedBy` |
| to `NAME`, `SIZE`, or `LAST_MODIFIED`. Then restart the server. |
| |
| [source,oac_no_warn] |
| ---- |
| <init-param> |
| <param-name>sortedBy</param-name> |
| <param-value>LAST_MODIFIED</param-value> |
| </init-param> |
| ---- |
| |
| The `mime-mapping` elements in `default-web.xml` are global and |
| inherited by all web applications. You can override these mappings or |
| define your own using `mime-mapping` elements in your web application's |
| `web.xml` file. For more information about `mime-mapping` elements, see |
| the Servlet specification. |
| |
| You can use the Administration Console to edit the `default-web.xml` |
| file, or edit the file directly using the following steps. |
| |
| [[fvymc]][[GSADG00370]][[to-use-the-default-web.xml-file]] |
| |
| To Use the `default-web.xml` File |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| 1. Place the JAR file for the filter, security constraint, or other |
| feature in the domain-dir`/lib` directory. |
| 2. Edit the domain-dir`/config/default-web.xml` file to refer to the |
| JAR file. |
| 3. To apply your changes, restart GlassFish Server. + |
| See link:domains.html#ginqj[To Restart a Domain]. |
| |
| [[gixrb]][[GSADG00551]][[redirecting-a-url]] |
| |
| Redirecting a URL |
| ~~~~~~~~~~~~~~~~~ |
| |
| You can specify that a request for an old URL be treated as a request |
| for a new URL. This is called redirecting a URL. |
| |
| To specify a redirected URL for a virtual server, use the `redirect_n` |
| property, where n is a positive integer that allows specification of |
| more than one. Each of these `redirect_n` properties is inherited by all |
| web applications deployed on the virtual server. |
| |
| The value of each `redirect_n` property has two components which can be |
| specified in any order: |
| |
| * The first component, `from`, specifies the prefix of the requested URI |
| to match. |
| * The second component, `url-prefix`, specifies the new URL prefix to |
| return to the client. The from prefix is replaced by this URL prefix. |
| |
| [[GSADG00168]][[giyis]] |
| |
| |
| Example 6-3 Redirecting a URL |
| |
| This example redirects `from` `dummy` to `etude`: |
| |
| [source,oac_no_warn] |
| ---- |
| <property name="redirect_1" value="from=/dummy url-prefix=http://etude"/> |
| ---- |
| |
| [[gfaad]][[GSADG00552]][[administering-mod_jk]] |
| |
| Administering `mod_jk` |
| ~~~~~~~~~~~~~~~~~~~~~~ |
| |
| The Apache Tomcat Connector `mod_jk` can be used to connect the web |
| container with web servers such as Apache HTTP Server. By using |
| `mod_jk`, which comes with GlassFish Server, you can front GlassFish |
| Server with Apache HTTP Server. |
| |
| You can also use `mod_jk` directly at the JSP/servlet engine for load |
| balancing. For more information about configuring `mod_jk` and Apache |
| HTTP Server for load balancing with GlassFish Server 5.0 refer to |
| "link:../ha-administration-guide/http-load-balancing.html#GSHAG00009[Configuring HTTP Load Balancing]" in GlassFish Server |
| Open Source Edition High Availability Administration Guide. |
| |
| The following topics are addressed here: |
| |
| * link:#gixqw[To Enable `mod_jk`] |
| * link:#gixpx[To Load Balance Using `mod_jk` and GlassFish Server] |
| * link:#gjpat[To Enable SSL Between the `mod_jk` Load Balancer and the |
| Browser] |
| * link:#gjpan[To Enable SSL Between the `mod_jk` Load Balancer and |
| GlassFish Server] |
| |
| [[gixqw]][[GSADG00371]][[to-enable-mod_jk]] |
| |
| To Enable `mod_jk` |
| ^^^^^^^^^^^^^^^^^^ |
| |
| You can front GlassFish Server with Apache HTTP Server by enabling the |
| `mod_jk` protocol for one of GlassFish Server's network listeners, as |
| described in this procedure. A typical use for `mod_jk` would be to have |
| Apache HTTP Server handle requests for static resources, while having |
| requests for dynamic resources, such as servlets and JavaServer Pages |
| (JSPs), forwarded to, and handled by the GlassFish Server back-end |
| instance. |
| |
| When you use the `jk-enabled` attribute of the network listener, you do |
| not need to copy any additional JAR files into the `/lib` directory. You |
| can also create JK connectors under different virtual servers by using |
| the network listener attribute `jk-enabled`. |
| |
| 1. Install Apache HTTP Server and `mod_jk`. |
| * For information on installing Apache HTTP Server, see |
| `http://httpd.apache.org/docs/2.2/install.html`. |
| * For information on installing `mod_jk`, see |
| `http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html`. |
| 2. Configure the following files: |
| * `apache2/conf/httpd.conf`, the main Apache configuration file |
| * `apache2/conf/workers.properties` + |
| link:#gixrq[Example 6-4] and link:#gixqt[Example 6-5] provide examples |
| of configuring these two files. |
| 3. Start Apache HTTP Server (`httpd`). |
| 4. Start GlassFish Server with at least one web application deployed. + |
| In order for the `mod_jk`-enabled network listener to start listening |
| for requests, the web container must be started. Normally, this is |
| achieved by deploying a web application. |
| 5. Create a jk-enabled network listener by using the |
| link:../reference-manual/create-network-listener.html#GSRFM00046[`create-network-listener`] subcommand. + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-network-listener --protocol http-listener-1 \ |
| --listenerport 8009 --jkenabled true jk-connector |
| ---- |
| 6. If you are using the `glassfish-jk.properties` file to use |
| non-default values of attributes described at |
| `http://tomcat.apache.org/tomcat-5.5-doc/config/ajp.html`), set the |
| `jk-configuration-file` property of the network listener to the |
| fully-qualified file name of the `glassfish-jk.properties` file. + |
| [source,oac_no_warn] |
| ---- |
| asadmin> set server-config.network-config.network-listeners.network-listener.\ |
| jk-connector.jk-configuration-file=domain-dir/config/glassfish-jk.properties |
| ---- |
| 7. If you expect to need more than five threads for the listener, |
| increase the maximum threads in the `http-thread-pool` pool: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> set configs.config.server-config.thread-pools.thread-pool.\ |
| http-thread-pool.max-thread-pool-size=value |
| ---- |
| 8. To apply your changes, restart GlassFish Server. + |
| See link:domains.html#ginqj[To Restart a Domain]. |
| |
| [[GSADG00169]][[gixrq]] |
| |
| |
| Example 6-4 `httpd.conf` File for `mod_jk` |
| |
| This example shows an `httpd.conf` file that is set for `mod_jk`. In |
| this example, `mod_jk` used as a simple pass-through. |
| |
| [source,oac_no_warn] |
| ---- |
| LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so |
| JkWorkersFile /etc/httpd/conf/worker.properties |
| # Where to put jk logs |
| JkLogFile /var/log/httpd/mod_jk.log |
| # Set the jk log level [debug/error/info] |
| JkLogLevel debug |
| # Select the log format |
| JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " |
| # JkOptions indicate to send SSL KEY SIZE, |
| JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories |
| # JkRequestLogFormat set the request format |
| JkRequestLogFormat "%w %V %T" |
| # Send all jsp requests to GlassFish |
| JkMount /*.jsp worker1 |
| # Send all glassfish-test requests to GlassFish |
| JkMount /glassfish-test/* worker1 |
| ---- |
| |
| [[GSADG00170]][[gixqt]] |
| |
| |
| Example 6-5 `workers.properties` File for `mod_jk` |
| |
| This example shows a `workers.properties` that is set for `mod_jk`. This |
| `workers.properties` file is referenced in the second line of |
| link:#gixrq[Example 6-4]. |
| |
| [source,oac_no_warn] |
| ---- |
| # Define 1 real worker using ajp13 |
| worker.list=worker1 |
| # Set properties for worker1 (ajp13) |
| worker.worker1.type=ajp13 |
| worker.worker1.host=localhost |
| worker.worker1.port=8009 |
| ---- |
| |
| [[GSADG858]] |
| |
| See Also |
| |
| For more information on Apache, see `http://httpd.apache.org/`. |
| |
| For more information on Apache Tomcat Connector, see |
| `http://tomcat.apache.org/connectors-doc/index.html`. |
| |
| [[gixpx]][[GSADG00372]][[to-load-balance-using-mod_jk-and-glassfish-server]] |
| |
| To Load Balance Using `mod_jk` and GlassFish Server |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Load balancing is the process of dividing the amount of work that a |
| computer has to do between two or more computers so that more work gets |
| done in the same amount of time. Load balancing can be configured with |
| or without security. |
| |
| In order to support stickiness, the Apache `mod_jk` load balancer relies |
| on a `jvmRoute` system property that is included in any `JSESSIONID` |
| received by the load balancer. This means that every GlassFish Server |
| instance that is front-ended by the Apache load balancer must be |
| configured with a unique `jvmRoute` system property. |
| |
| 1. On each of the instances, perform the steps in link:#gixqw[To Enable |
| `mod_jk`]. + |
| If your instances run on the same machine, you must choose different JK |
| ports. The ports must match `worker.worker*.port` in your |
| `workers.properties` file. See the properties file in |
| link:#gixqt[Example 6-5]. |
| 2. On each of the instances, create the `jvmRoute` system property of |
| GlassFish Server by using the link:../reference-manual/create-jvm-options.html#GSRFM00042[`create-jvm-options`] |
| subcommand. + |
| Use the following format: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-jvm-options "-DjvmRoute=/instance-worker-name"/ |
| ---- |
| where instance-worker-name is the name of the worker that you defined to |
| represent the instance in the `workers.properties` file. |
| 3. To apply your changes, restart Apache HTTP Server and GlassFish |
| Server. |
| |
| [[GSADG00171]][[gjjzu]] |
| |
| |
| Example 6-6 `httpd.conf` File for Load Balancing |
| |
| This example shows an `httpd.conf` file that is set for load balancing. |
| |
| [source,oac_no_warn] |
| ---- |
| LoadModule jk_module /usr/lib/httpd/modules/mod_jk.so |
| JkWorkersFile /etc/httpd/conf/worker.properties |
| # Where to put jk logs |
| JkLogFile /var/log/httpd/mod_jk.log |
| # Set the jk log level [debug/error/info] |
| JkLogLevel debug |
| # Select the log format |
| JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " |
| # JkOptions indicate to send SSL KEY SIZE, |
| JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories |
| # JkRequestLogFormat set the request format |
| JkRequestLogFormat "%w %V %T" |
| # Send all jsp requests to GlassFish |
| JkMount /*.jsp worker1 |
| # Send all glassfish-test requests to GlassFish |
| JkMount /glassfish-test/* loadbalancer |
| ---- |
| |
| [[GSADG00172]][[gjjzf]] |
| |
| |
| Example 6-7 `workers.properties` File for Load Balancing |
| |
| This example shows a `workers.properties` or `glassfish-jk.properties` |
| file that is set for load balancing. The `worker.worker*.port` should |
| match with JK ports you created. |
| |
| [source,oac_no_warn] |
| ---- |
| worker.list=worker1,worker2,loadbalancer |
| worker.worker1.type=ajp13 |
| worker.worker1.host=localhost |
| worker.worker1.port=8009 |
| worker.worker1.lbfactor=1 |
| worker.worker1.socket_keepalive=1 |
| worker.worker1.socket_timeout=300 |
| worker.worker2.type=ajp13 |
| worker.worker2.host=localhost |
| worker.worker2.port=8010 |
| worker.worker2.lbfactor=1 |
| worker.worker2.socket_keepalive=1 |
| worker.worker2.socket_timeout=300 |
| worker.loadbalancer.type=lb |
| worker.loadbalancer.balance_workers=worker1,worker2 |
| ---- |
| |
| [[gjpat]][[GSADG00373]][[to-enable-ssl-between-the-mod_jk-load-balancer-and-the-browser]] |
| |
| To Enable SSL Between the `mod_jk` Load Balancer and the Browser |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| To activate security for `mod_jk` on GlassFish Server, you must first |
| generate a Secure Socket Layer (SSL) self-signed certificate on the |
| Apache HTTP Server with the `mod_ssl` module. The tasks include |
| generating a private key, a Certificate Signing Request (CSR), a |
| self-signed certificate, and configuring SSL-enabled virtual hosts. |
| |
| [[GSADG859]] |
| |
| Before You Begin |
| |
| The `mod_jk` connector must be enabled. |
| |
| 1. Generate the private key as follows: + |
| [source,oac_no_warn] |
| ---- |
| openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024 |
| ---- |
| where `file1:file2:` and so on represents the random compressed files. |
| 2. Remove the pass-phrase from the key as follows: + |
| [source,oac_no_warn] |
| ---- |
| openssl rsa -in server.key -out server.pem |
| ---- |
| 3. Generate the CSR is as follows: + |
| [source,oac_no_warn] |
| ---- |
| openssl req -new -key server.pem -out server.csr |
| ---- |
| Enter the information you are prompted for. |
| 4. Generate a temporary certificate as follows: + |
| [source,oac_no_warn] |
| ---- |
| openssl x509 -req -days 60 -in server.csr -signkey server.pem -out server.crt |
| ---- |
| This temporary certificate is good for 60 days. |
| 5. Create the `http-ssl.conf` file under the `/etc/apache2/conf.d` |
| directory. |
| 6. In the `http-ssl.conf` file, add one of the following redirects: |
| * Redirect a web application, for example, `JkMount /hello/* worker1`. |
| * Redirect all requests, for example, `JkMount /* worker1`. + |
| [source,oac_no_warn] |
| ---- |
| # Send all jsp requests to GlassFish |
| JkMount /*.jsp worker1 |
| # Send all glassfish-test requests to GlassFish |
| JkMount /glassfish-test/* loadbalancer |
| ---- |
| |
| [[GSADG00173]][[gjpnc]] |
| |
| |
| Example 6-8 `http-ssl.conf` File for `mod_jk` Security |
| |
| A basic SSL-enabled virtual host will appear in the `http-ssl.conf` |
| file. In this example, all requests are redirected. |
| |
| [source,oac_no_warn] |
| ---- |
| Listen 443 |
| <VirtualHost _default_:443> |
| SSLEngine on |
| SSLCipherSuite ALL:!ADH:!EXP56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL |
| SSLCertificateFile "/etc/apache2/2.2/server.crt" |
| SSLCertificateKeyFile "/etc/apache2/2.2/server.pem" |
| JkMount /* worker1 |
| </VirtualHost> |
| ---- |
| |
| [[gjpan]][[GSADG00374]][[to-enable-ssl-between-the-mod_jk-load-balancer-and-glassfish-server]] |
| |
| To Enable SSL Between the `mod_jk` Load Balancer and GlassFish Server |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| This procedure does not enable SSL transfer between `mod_jk` and |
| GlassFish Server. It enables `mod_jk` to forward SSL-encrypted |
| information from the browser to GlassFish Server. |
| |
| [[GSADG860]] |
| |
| Before You Begin |
| |
| The self-signed certificate must be configured. |
| |
| 1. Perform the steps in link:#gixqw[To Enable `mod_jk`]. |
| 2. Start another GlassFish Server with at least one web application |
| deployed. + |
| In order for the `mod_jk`-enabled network listener to start listening |
| for requests, the web container must be started. Normally, this is |
| achieved by deploying a web application. |
| 3. Follow instructions from link:http_https.html#ggnbj[To Configure an |
| HTTP Listener for SSL] on the `mod_jk` connector. + |
| Use the following format: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-ssl --type http-listener --certname sampleCert new-listener |
| ---- |
| 4. Add the following directives in the `httpd.conf` file under the |
| `/etc/apache2/conf.d` directory: + |
| [source,oac_no_warn] |
| ---- |
| # Should mod_jk send SSL information (default is On) |
| JkExtractSSL On |
| # What is the indicator for SSL (default is HTTPS) |
| JkHTTPSIndicator HTTPS |
| # What is the indicator for SSL session (default is SSL_SESSION_ID) |
| JkSESSIONIndicator SSL_SESSION_ID |
| # What is the indicator for client SSL cipher suit (default is SSL_CIPHER ) |
| JkCIPHERIndicator SSL_CIPHER |
| # What is the indicator for the client SSL certificated? (default is SSL_CLIENT_CERT ) |
| JkCERTSIndicator SSL_CLIENT_CERT |
| ---- |
| 5. To apply your changes, restart Apache HTTP Server and GlassFish |
| Server. |
| |
| [[CIHJDAJD]][[GSADG861]][[administering-mod_proxy_ajp]] |
| |
| Administering `mod_proxy_ajp` |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| The Apache Connector `mod_proxy_ajp` can be used to connect the web |
| container with Apache HTTP Server. By using `mod_proxy_ajp`, you can |
| front GlassFish Server with Apache HTTP Server. |
| |
| [[GSADG862]][[sthref21]] |
| |
| |
| [[to-enable-mod_proxy_ajp]] |
| To Enable `mod_proxy_ajp` |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| You can front GlassFish Server with Apache HTTP Server and its |
| `mod_proxy_ajp` connector by enabling the AJP protocol for one of |
| GlassFish Server's network listeners, as described in this procedure. A |
| typical use for `mod_proxy_ajp` would be to have Apache HTTP Server |
| handle requests for static resources, while having requests for dynamic |
| resources, such as servlets and JavaServer Pages (JSPs), forwarded to, |
| and handled by the GlassFish Server back-end instance. |
| |
| 1. Install Apache HTTP Server. + |
| For information on installing Apache HTTP Server, see |
| `http://httpd.apache.org/docs/2.2/install.html`. |
| 2. Configure `apache2/conf/httpd.conf`, the main Apache configuration |
| file. + |
| For example: + |
| [source,oac_no_warn] |
| ---- |
| LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so |
| LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so |
| |
| Listen 1979 |
| NameVirtualHost *:1979 |
| <VirtualHost *:1979> |
| ServerName localhost |
| ErrorLog /var/log/apache2/ajp.error.log |
| CustomLog /var/log/apache2/ajp.log combined |
| |
| <Proxy *> |
| AddDefaultCharset Off |
| Order deny,allow |
| Allow from all |
| </Proxy> |
| |
| ProxyPass / ajp://localhost:8009/ |
| ProxyPassReverse / ajp://localhost:8009/ |
| </VirtualHost> |
| ---- |
| 3. Start Apache HTTP Server (`httpd`). |
| 4. Create a jk-enabled network listener by using the |
| `create-network-listener` subcommand. + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-network-listener --protocol http-listener-1 \ |
| --listenerport 8009 --jkenabled true jk-connector |
| ---- |
| 5. If you expect to need more than five threads for the listener, |
| increase the maximum threads in the `http-thread-pool` pool: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> set configs.config.server-config.thread-pools.thread-pool.\ |
| http-thread-pool.max-thread-pool-size=value |
| ---- |
| 6. To apply your changes, restart GlassFish Server. + |
| See link:domains.html#ginqj[To Restart a Domain]. |
| |
| [[GSADG863]] |
| |
| See Also |
| |
| For more information on Apache, see `http://httpd.apache.org/`. |
| |
| For more information on the Apache `mod_proxy_ajp` Connector, see |
| `http://httpd.apache.org/docs/2.1/mod/mod_proxy.html` and |
| `http://httpd.apache.org/docs/2.1/mod/mod_proxy_ajp.html`. |
| |
| For more information on the AJP protocol, see |
| `http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html`. |
| |
| [[GSADG1049]][[sthref22]] |
| |
| |
| [[to-load-balance-using-mod_proxy_ajp-and-glassfish-server]] |
| To Load Balance Using `mod_proxy_ajp` and GlassFish Server |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Load balancing is the process of dividing the amount of work that a |
| computer has to do between two or more computers so that more work gets |
| done in the same amount of time. In the GlassFish Server context, load |
| balancing is most frequently used to distribute work among the instances |
| in a GlassFish Server cluster. |
| |
| To configure load balancing using `mod_proxy_ajp`, you must use the |
| `mod_proxy_balancer` Apache module in addition to `mod_proxy_ajp`. |
| |
| In order to support stickiness, the `mod_proxy_balancer` load balancer |
| relies on a `jvmRoute` system property that is included in any |
| `JSESSIONID` received by the load balancer. Consequently, every |
| GlassFish Server instance that is front-ended by the Apache load |
| balancer must be configured with a unique `jvmRoute` system property. |
| |
| 1. Install Apache HTTP Server. + |
| For information on installing Apache HTTP Server, see |
| `http://httpd.apache.org/docs/2.2/install.html`. |
| 2. [[BABIFEEC]] + |
| Configure `apache2/conf/httpd.conf`, the main Apache configuration file. + |
| For example: + |
| [source,oac_no_warn] |
| ---- |
| LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so |
| LoadModule proxy_ajp_module /usr/lib/httpd/modules/mod_proxy_ajp.so |
| LoadModule proxy_balancer_module /usr/lib/httpd/modules/mod_proxy_balancer.so |
| |
| # Forward proxy needs to be turned off |
| ProxyRequests Off |
| # Keep the original Host Header |
| ProxyPreserveHost On |
| |
| <Proxy *> |
| Order deny,allow |
| Deny from all |
| Allow from localhost |
| </Proxy> |
| |
| # Each BalancerMember corresponds to an instance in the GlassFish Server |
| # cluster. The port specified for each instance must match the ajp port |
| # specified for that instance. |
| <Proxy balancer://localhost> |
| BalancerMember ajp://localhost:8009 |
| BalancerMember ajp://localhost:8010 |
| BalancerMember ajp://localhost:8011 |
| </Proxy> |
| ---- |
| 3. Start Apache HTTP Server (`httpd`). |
| 4. In GlassFish Server, use the `create-network-listener` subcommand to |
| create a jk-enabled network listener targeted to the cluster. + |
| For example: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-network-listener --jkenabled true --target cluster1 \ |
| --protocol http-listener-1 --listenerport ${AJP_PORT} jk-listener |
| ---- |
| In this example, `cluster1` is the name of the cluster and `jk-listener` |
| is the name of the new listener. |
| 5. If you expect to need more than five threads for the listener, |
| increase the maximum threads in the `http-thread-pool` pool: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> set configs.config.cluster1-config.thread-pools.thread-pool.\ |
| http-thread-pool.max-thread-pool-size=value |
| ---- |
| 6. Use the `create-jvm-options` subcommand to create the `jvmRoute` |
| property targeted to the cluster. + |
| For example: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-jvm-options --target cluster1 \ |
| "-DjvmRoute=\${AJP_INSTANCE_NAME}" |
| ---- |
| 7. Use the `create-system-properties` subcommand to define the |
| `AJP_PORT` and `AJP_INSTANCE_NAME` properties for each of the instances |
| in the cluster, making sure to match the port values you used in |
| Step link:#BABIFEEC[2] when specifying the load balancer members. + |
| For example: + |
| [source,oac_no_warn] |
| ---- |
| asadmin> create-system-properties --target instance1 AJP_PORT=8009 |
| asadmin> create-system-properties --target instance1 \ |
| AJP_INSTANCE_NAME=instance1 |
| asadmin> create-system-properties --target instance2 AJP_PORT=8010 |
| asadmin> create-system-properties --target instance2 \ |
| AJP_INSTANCE_NAME=instance2 |
| asadmin> create-system-properties --target instance3 AJP_PORT=8011 |
| asadmin> create-system-properties --target instance3 \ |
| AJP_INSTANCE_NAME=instance3 |
| ---- |
| In this example, `instance1`, `instance2` and `instance3` are the names |
| of the GlassFish Server instances in the cluster. |
| 8. To apply your changes, restart GlassFish Server. + |
| See link:domains.html#ginqj[To Restart a Domain]. |
| |
| |