Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: We should be using CATALINA_OPTS instead of JAVA_OPTS.
Info

Apache Tomcat is the recommended servlet container to use with uPortal 4. While uPortal 4 requires a Servlet 3.0-compatible servlet container and another servlet container may be used, most uPortal implementers deploy to Apache Tomcat. Choosing Tomcat 78.x will likely allow uPortal adopters to get the best advice from the community.

...

Linux/Unix Installation

1. Download Apache Tomcat 78.x

2. Untar the package as follows:

No Format
tar -zxvf apache-tomcat-78.0.4233.tar.gz

3.Optionally rename your install to something more meaningful:

No Format
mv apache-tomcat-78.0.4233 uportal-tomcat

4.Set your environment variables:

...

Windows Installation

1. Download  Apache Tomcat 78.x for Windows

2. Unzip the download into a suitable directory. For example, you may unzip the file into the C:\ directory. This will create a directory like C:\apache-tomcat-78.x containing your Tomcat files.

...

No Format
 CATALINA_HOME : C:\apache-tomcat-78.x
 JAVA_HOME : C:\Program Files\Java\jdk1.x

...

4. Start Tomcat. Try starting up Tomcat by running the C:\apache-tomcat-68.x\bin\startup.bat batch file. Point your browser to http://localhost:8080 and you should see the default Tomcat home page (see above image). To shutdown the server run C:\apache-tomcat-68.x\bin\shutdown.bat batch file.

...

uPortal places libraries in CATALINA_BASE/shared/lib The default Tomcat 7 or 8 download does not enable libraries to be loaded from this directory.

...

To enable this feature for Tomcat 7 .0or 8,  add the sessionCookiePath="/" to CATALINA_BASE/conf/context.xml.

Code Block
titleExample Tomcat 7.0 /8 Connector Configuration
<Context sessionCookiePath="/">

Increase Resource Cache Size

uPortal and the typical collection of portlets take a lot of space. Tomcat 8.5 issues warnings about running out of resource cache space. Add the following cache configuration just before the close of the Context node.

Code Block
languagexml
titleAdd resource caching size in Context
    <Resources cachingAllowed="true" cacheMaxSize="100000" />
</Context>

 

JVM Heap Configuration

uPortal requires a larger than standard PermGen space (Java 7 only) and more heap than may be allocated by default. A good conservative set of heap settings are -XX:MaxPermSize=384m (Java 7 only) -Xmx1024mXmx2048m. To add these, create a file called either setenv.sh (Linux/Mac) or setenv.bat (Windows) in your CATALINA_HOME/bin directory and add the configuration as follows:.  Note for production settings you would typically want more heap space, at least 4GB.  See Additional Tomcat Configuration below.

Code Block
titlesetenv.sh or setenv.bat
JAVACATALINA_OPTS="$JAVA$CATALINA_OPTS -XX:+PrintCommandLineFlags -XX:MaxPermSize=384m -Xms1024m -Xmx1024mXmx2048m -Djsse.enableSNIExtension=false"

CATALINA_OPTS vs JAVA_OPTS

The uPortal instructions above previously recommended using JAVA_OPTS for heap sizing. This can lead to problems on memory constrained systems because JAVA_OPTS will be used when trying to stop Tomcat with its own scripts. You don't typically need a large heap at all for that operation. It is recommended to use CATALINA_OPTS, this is a better choice for sizing the heap in setenv scripts, because that var will only be used for Tomcat's http-serving runtime. 

Required file permissions

...

If you are fronting Tomcat wtih Apache or other hardware systems, you may want to do the compression in Apache or those systems instead.

Tomcat 7/8 parallel startup (optional)

Tomcat 7.0.23+ can be configured to have multiple webapps start up in parallel, reducing server startup time.  Set the startStopThreads attribute of a Host to a value greater than one.  See http://wiki.apache.org/tomcat/HowTo/FasterStartUp for more details and other suggestions.

...

Some sites have chosen to disable SSLv3 on their CAS server due to various vulnerabilities.  That can cause problems with the CAS client used in uPortal being unable to establish an HTTPS connection to the CAS server to validate the service ticket and throwing an exception
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

One solution is to set the protocols used by Java when making SSL connections.  You can do this by adding the following property to JAVACATALINA_OPTS OPTS (or CATALINAJAVA_OPTS if using that):
Oracle Java7: -Dhttps.protocols="TLSv1,TLSv1.1,TLSv1.2"

Your CAS server must be configured to use one of the mentioned protocols or the handshake will fail.  If your test CAS server is publicly accessible, you can view which protocols it supports by entering its domain name into https://www.ssllabs.com/ssltest/.

If you run into troubles, refer to https://blogs.oracle.com/java-platform-group/entry/diagnosing_tls_ssl_and_https and other resources to help diagnose the issue.

Info
iconfalse

   Additional References

Warning
iconfalse
titleHaving problems with these instructions?

Please send us feedback at uportal-user@lists.jasig.org