Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Multiexcerpt include
MultiExcerptNameissue
PageWithExcerpt_known issue with tomcat 8.5x JAVA EE and BCEL

Oracle WebLogic, IBM WebSphere

commons-lang

When deploying on Oracle WebLogic 12c, there is a version conflict while using commons-lang. Oracle WebLogic-12c is distributed with commons-lang-2.5.jar, JackRabbit with commons-lang-2.6.jar and Magnolia with commons-lang-2.1.jar.

To resolve this issue, modify setDomainEnv.sh of Oracle WebLogic and add commons-lang-2.6.jar to the PRE_CLASSPATH

Bouncy Castle

Magnolia uses the Bouncy Castle cryptography package to decode the license key and to secure the activation process. Oracle WebLogic 12c is distributed with bcprov-jdk16-1.45.jar but Magnolia is distributed with bcprov-jdk15on-1.58.jar. This leads to a library version conflict.

Symptom: after inserting valid license key into the Magnolia license form, the error message "License is empty" is displayed.

To resolve, do one of the following:

  • Edit setDomainEnv.sh in Oracle WebLogic and add bcprov-jdk15on-1.58.jar to PRE_CLASSPATH or
  • Remove bcprov-jdk16-1.45.jar from Oracle WebLogic 12c common libraries.

Google Guava

Magnolia cannot render images stored in dam workspace. Google Guava library is used by the DAM API which is used for working with images.

Symptom:

Code Block
languagenone
java.lang.RuntimeException: java.lang.NoClassDefFoundError: Could not initialize class com.google.common.cache.LocalCache

Workaround:

 Modify the weblogic.xml file in your application's WEB-INF folder with the prefer-application-packages  element:

Code Block
languagexml
firstline1
<container-descriptor>
   <prefer-application-packages>
	 <package-name>com.google.common.*</package-name>
   </prefer-application-packages>
</container-descriptor>

Deployment issue with jBPM 6

jBPM 6 cannot be deployed on Oracle WebLogic or IBM WebSphere. jBPM is included in the Magnolia Workflow module. All deployment methods are affected: Administration Console, Oracle WebLogic.Deployer, wldeploy Ant task and autodeploy directory.

Symptom:

Code Block
languagenone
weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener

Workaround:

  1. Deploy an application which doesn't contain Magnolia Workflow with jBPM6, for example Magnolia 5.2.2 or Magnolia 5.3 without the Workflow module.
  2. In the deployment target location, replace the deployed webapp with a new webapp that contains workflow with jBPM6

Page editor and detail subapps are not working due to an NPE

The NPE may be due to an incorrect initialization of I18nAuthoringSupport. You may see an error like this in your logs:

Code Block
2019-06-20 15:06:54,955 ERROR agnolia.ui.framework.app.AppInstanceControllerImpl: Sub-app [detail] of app [pages] failed to start java.lang.NullPointerException: null at info.magnolia.ui.framework.i18n.DefaultI18NAuthoringSupport.createI18NURI(DefaultI18NAuthoringSupport.java:154)

Workaround: Restart your instances.

OS X / macOS

Magnolia starts up very slowly

Your Magnolia instance starts up very slowly, noticeably more than before. You may encounter this after upgrading your macOS to Sierra 10.12 or later.

Workaround:

Open a terminal and figure out the hostname of your Mac. To get the hostname, use the command hostname.

Code Block
languagetext
hostname
joesLittleMacBookPro.local

...

Add these two lines to /etc/hosts:

Code Block
languagetext
title/etc/hosts
127.0.0.1   <hostname>
::1         <hostname>

In place of <hostname>, use your real hostname.
Most probably, your hosts file already contains entries starting with 127.0.0.1 and with ::1. Just add the real host name at the end of one line that starts with ::1 and at the end of another line that starts with 127.0.0.1. Make sure to add a space character before the hostname.
With the given hostname, the two lines would look like this:

Code Block
languagetext
title/etc/hosts
127.0.0.1   localhost joesLittleMacBookPro.local
::1         localhost joesLittleMacBookPro.local

...

JBoss 7.2 with JDK 11

If you are using JBoss 7.2 with JDK 11 to deploy Magnolia, you may get an error during installation. To resolve the issue, add the following lines to WEB-INF/jboss-deployment-structure.xml:

Code Block
<deployment>
 <dependencies>
  <module name="jdk.unsupported"/>
 </dependencies>
</deployment>

MySQL JDBC 8.0.x

If you are using the MySQL JDBC driver 8.0.x to install a new Magnolia instance, you may encounter the following error:

Code Block
2020-02-14 14:35:07,538 ERROR org.apache.jackrabbit.core.RepositoryImpl: failed to start Repository: org.apache.jackrabbit.core.state.ItemStateException: failed to read bundle (stacktrace on DEBUG log level): deadbeef-face-babe-cafe-babecafebabe: java.sql.SQLSyntaxErrorException: Table '<DATABASE_NAME>.<TABLE_NAME>' doesn't exist

This happens only when you install a new instance from scratch or create database tables during installation. As a workaround, use JDBC 5.1.x or create the tables manually in your database.

Oracle WebLogic

Page editor and detail subapps are not working due to an NPE

The NPE may be due to an incorrect initialization of I18nAuthoringSupport. You may see an error like this in your logs:

Code Block
2019-06-20 15:06:54,955 ERROR agnolia.ui.framework.app.AppInstanceControllerImpl: Sub-app [detail] of app [pages] failed to start java.lang.NullPointerException: null at info.magnolia.ui.framework.i18n.DefaultI18NAuthoringSupport.createI18NURI(DefaultI18NAuthoringSupport.java:154)

Workaround: Restart your instances.

OS X / macOS

Magnolia starts up very slowly

Your Magnolia instance starts up very slowly, noticeably more than before. You may encounter this after upgrading your macOS to Sierra 10.12 or later.

Workaround:

  1. Open a terminal and figure out the hostname of your Mac. To get the hostname, use the command hostname.

    Code Block
    languagetext
    hostname
    joesLittleMacBookPro.local

    The command returns the hostname of your Mac. In the given example, the hostname is joesLittleMacBookPro.local.

  2. Open the file /etc/hosts with an editor of your choice. You will edit the file in the next step.
    The file belongs to the system user root. Your user must belong to the group admin; otherwise, you cannot save the changes to the file. You will be asked for your password either when opening the file or when trying to save it.

  3. Add these two lines to /etc/hosts:

    Code Block
    languagetext
    title/etc/hosts
    127.0.0.1   <hostname>
    ::1         <hostname>

    In place of <hostname>, use your real hostname.
    Most probably, your hosts file already contains entries starting with 127.0.0.1 and with ::1. Just add the real hostname at the end of one line that starts with ::1 and at the end of another line that starts with 127.0.0.1. Make sure to add a space character before the hostname.
    With the given hostname, the two lines would look like this:

    Code Block
    languagetext
    title/etc/hosts
    127.0.0.1   localhost joesLittleMacBookPro.local
    ::1         localhost joesLittleMacBookPro.local
  4. Save the file. The system may ask you for your password.

Further information:

Windows

JVM issues

32-bit JVM does not work in Windows

((info) Tested on Windows 10.) When starting up Tomcat with the Magnolia CLI mgnl start command, you get a flickering window, the server hangs and nothing is written into the logs. To see the actual error, don't use Magnolia CLI to start Magnolia, start Tomcat directly with  <your-magnolia-install-folder>\apache tomcat\bin\catalina.bat run. This should start Magnolia in the same window and allow you to see the error message:

Code Block
Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

The most likely cause is that you are trying to allocate too much heap space in the 32-bit JVM. 

Solution: Replace the JVM with a 64-bit version.

See also: Why can't I get a larger heap with the 32-bit JVM?

Neither JAVA_HOME nor JRE_HOME is defined

You get the following error message after a fresh Java installation:

Code Block
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variables is needed to run this program

Solution: Set the variables through the "Edit the system environment variables" dialog.

JRE_HOME is undefined

If you get an error like this one:

Code Block
The JRE_HOME environment variable is not defined correctly
The environment variable is needed to run this program

then you are most probably attempting to run Tomcat with the JAVA_HOME variable set but without the JRE_HOME variable defined.

Solution: Set the JRE_HOME variable.

JRE_HOME & JAVA_HOME both set

If you attempt to start Magnolia via 'mgnl start', and you see no startup executed, check if your JRE_HOME and your JAVA_HOME are set. If so, you may need to remove the environmental variable for JRE_HOME to get Magnolia to start properly.

Firewall is blocking Java

Allow an exception in Windows Firewall for Java.

  1. Go to Control Panel > Windows Firewall.
  2. Go to the Exceptions tab.
  3. Click Add Program and browse to the java.exe file in the Java installation directory, for example C:\Sun\SDK\jdk\bin\java.exe.
  4. Click OK.

If you get a security alert during startup, check the Private networks checkbox and click Allow access.

Image Added

CATALINA_HOME environment variable is not defined

CATALINA_HOME environment variable identifies the Tomcat home directory, for example C:\Program Files\magnolia\apache-tomcat. Usually Magnolia finds this directory automatically. When you type magnolia_control.bat start in the bin directory to start the system, a second script named startup.bat tries to find Tomcat home. It assumes that Tomcat home is one level above the bin directory where you issued the command, and sets the value of CATALINA_HOME to that directory.

Code Block
C:\Program Files
    magnolia
        apache-tomcat   <-- Tomcat home directory
            bin         <-- magnolia_control.bat is here

However, if you added the bin directory to your PATH environment variable you can execute magnolia_control.bat from anywhere. This means startup.bat does not find Tomcat home directory by simply moving up one level from where you are and displays the following error:

Image Added

To correct this define CATALINA_HOME in environment variables. Follow the instructions in Set JAVA_HOME environment variable.

JAR file does not start

When installing DX Core on Windows, you can start the installer by double-clicking the JAR file. If this does not work there is a chance that some application on your system has registered the .jar extension.

You can try to fix it yourself by restoring the association of the .jar extension with the javaw.exe executable. .Right-click the JAR file and select Open With. Typically the javaw.exe file is in C:\Program Files (x86)\java\jre6\bin). Alternatively, start the installer from a command prompt with the following command: java -jar magnolia-dx-core-installer-x.y.z.jar. Make sure the file extension is .jar. Internet Explorer has a tendency to append or change it to .zip.

Other issues

H2 database

Include Page
INCL:_H2_192_199_200
INCL:_H2_192_199_200

H2 does not accept more than one connection

Our default configuration uses the server mode for H2. If you migrate from Magnolia below 5.5.9 in the 5.5 branch or below 5.6.2 in the 5.6 branch and try to initiate a backup call using CLI or REST, it fails because H2 does not allow more than one connection at a time. Configure H2 to run in server mode by adding AUTO_SERVER=TRUE in the URL parameters: 

<param name="url" value="jdbc:h2:${wsp.home}/db;AUTO_SERVER=TRUE" />

<param name="url" value="jdbc:h2:${rep.home}/version/db;AUTO_SERVER=TRUE" />

See 

Jira
serverMagnolia - Issue tracker
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId500b06a6-e204-3125-b989-2d75b973d05f
keyMGNLCE-114

Log full of index rules warnings when upgrading from 5.4.x directly to 6.1.x

Jackrabbit 2.16 introduced existence checks for node-types when refreshing indexing configurations. Previously it would accept arbitrary node-type names as strings. If your project is not using Magnolia's SearchIndex implementation, you may find the following messages in your logs:

Code Block
languagetext
2018-07-25 17:48:33,691 WARN  rabbit.core.query.lucene.IndexingConfigurationImpl: Unable to refresh index rules
javax.jcr.nodetype.NoSuchNodeTypeException: {http://www.magnolia.info/jcr/mgnl}page
	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getNodeTypeDef(NodeTypeRegistry.java:552) ~[jackrabbit-core-2.16.1.jar:2.16.1]
Code Block
languagetext
2018-03-16 11:30:57,892 WARN  rg.apache.jackrabbit.core.query.lucene.SearchIndex: Exception initializing indexing configuration from: /info/magnolia/jackrabbit/indexing_configuration_website.xml
javax.jcr.nodetype.NoSuchNodeTypeException: {http://www.magnolia.info/jcr/mgnl}page
	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getNodeTypeDef(NodeTypeRegistry.java:552) ~[jackrabbit-core-2.16.1.jar:2.16.1]

To mitigate this problem, replace in your Jackrabbit search configuration files

Code Block
languagetext
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">

with

Code Block
languagetext
<SearchIndex class="info.magnolia.jackrabbit.lucene.SearchIndex">

(info) The warnings should not appear in the logs if you follow our recommendation to update first to the latest minor release version before upgrading to the most recent major release, see How to update.

Too many open files

The embedded Derby database, an option that can be used instead of the H2 database, opens several file handles and may run over the maximum limit set by the system. This issue can occur on some Linux and OS X systems such as Macbook Air.

The solution is to increase the system-wide limit on the number of open files. The exact procedure varies from one OS to the next, see Too many open files.

Expand
titleUbuntu Linux
  1. Find the current maximum number of open files

Further information:

Windows

Firewall is blocking Java

Allow an exception in Windows Firewall for Java.

  1. Go to Control Panel > Windows Firewall.
  2. Go to the Exceptions tab.
  3. Click Add Program and browse to the java.exe file in the Java installation directory, for example C:\Sun\SDK\jdk\bin\java.exe.
  4. Click OK.

If you get a security alert during startup, check the Private networks checkbox and click Allow access.

Image Removed

CATALINA_HOME environment variable is not defined

CATALINA_HOME environment variable identifies the Tomcat home directory, for example C:\Program Files\magnolia\apache-tomcat. Usually Magnolia finds this directory automatically. When you type magnolia_control.bat start in the bin directory to start the system, a second script named startup.bat tries to find Tomcat home. It assumes that Tomcat home is one level above the bin directory where you issued the command, and sets the value of CATALINA_HOME to that directory.

Code Block
C:\Program Files
    magnolia
        apache-tomcat   <-- Tomcat home directory
            bin         <-- magnolia_control.bat is here

However, if you added the bin directory to your PATH environment variable you can execute magnolia_control.bat from anywhere. This means startup.bat does not find Tomcat home directory by simply moving up one level from where you are and displays the following error:

Image Removed

To correct this define CATALINA_HOME in environment variables. Follow the instructions in Set JAVA_HOME environment variable.

JAR file does not start

When installing the Enterprise Edition on Windows, you can start the installer by double-clicking the JAR file. If this does not work there is a chance that some application on your system has registered the .jar extension.

You can try to fix it yourself by restoring the association of the .jar extension with the javaw.exe executable. .Right-click the JAR file and select Open With. Typically the javaw.exe file is in C:\Program Files (x86)\java\jre6\bin). Alternatively, start the installer from a command prompt with the following command: java -jar magnolia-enterprise-installer-x.y.z.jar. Make sure the file extension is .jar. Internet Explorer has a tendency to append or change it to .zip.

Other issues

H2 does not accept more than one connection

Our default configuration uses the server mode for H2. If you migrate from Magnolia below 5.5.9 in the 5.5 branch or below 5.6.2 in the 5.6 branch and try to initiate a backup call using CLI or REST, it fails because H2 does not allow more than one connection at a time. Configure H2 to run in server mode by adding AUTO_SERVER=TRUE in the URL parameters: 

<param name="url" value="jdbc:h2:${wsp.home}/db;AUTO_SERVER=TRUE" />

<param name="url" value="jdbc:h2:${rep.home}/version/db;AUTO_SERVER=TRUE" />

See 

Jira
serverMagnolia - Issue tracker
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId500b06a6-e204-3125-b989-2d75b973d05f
keyMGNLCE-114

Log full of index rules warnings when upgrading from 5.4.x directly to 6.1.x

Jackrabbit 2.16 introduced existence checks for node-types when refreshing indexing configurations. Previously it would accept arbitrary node-type names as strings. If your project is not using Magnolia's SearchIndex implementation, you may find the following messages in your logs:

Code Block
languagetext
2018-07-25 17:48:33,691 WARN  rabbit.core.query.lucene.IndexingConfigurationImpl: Unable to refresh index rules
javax.jcr.nodetype.NoSuchNodeTypeException: {http://www.magnolia.info/jcr/mgnl}page
	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getNodeTypeDef(NodeTypeRegistry.java:552) ~[jackrabbit-core-2.16.1.jar:2.16.1]
Code Block
languagetext
2018-03-16 11:30:57,892 WARN  rg.apache.jackrabbit.core.query.lucene.SearchIndex: Exception initializing indexing configuration from: /info/magnolia/jackrabbit/indexing_configuration_website.xml
javax.jcr.nodetype.NoSuchNodeTypeException: {http://www.magnolia.info/jcr/mgnl}page
	at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getNodeTypeDef(NodeTypeRegistry.java:552) ~[jackrabbit-core-2.16.1.jar:2.16.1]

To mitigate this problem, replace in your Jackrabbit search configuration files

Code Block
languagetext
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">

with

Code Block
languagetext
<SearchIndex class="info.magnolia.jackrabbit.lucene.SearchIndex">

(info) The warnings should not appear in the logs if you follow our recommendation to update first to the latest minor release version before upgrading to the most recent major release, see How to update.

Too many open files

The embedded Derby database, an option that can be used instead of the H2 database, opens several file handles and may run over the maximum limit set by the system. This issue can occur on some Linux and OS X systems such as Macbook Air.

The solution is to increase the system-wide limit on the number of open files. The exact procedure varies from one OS to the next, see Too many open files.

  1. Find the current maximum number of open files per user in a single session: 
    ulimit -n
    By default the number is 1024 which is too small.
  2. Edit the limits.conf file: 
    sudo gedit /etc/security/limits.conf
  3. Add the following lines to the file: 
    * soft nofile 10000
    * hard nofile 50000
    This sets for all users a soft limit of 10000 open files and a hard limit of 50000. These are just example numbers. Set them according to your system needs. Note that the wildcard option applies only to regular users, not to superuser. If you run Magnolia as superuser replace the asterisk with root.
  4. Save the file.
  5. Edit the configuration file for session-related modules: 
    sudo gedit /etc/pam.d/common-session
  6. Add the following line to the file: 
    session required pam_limits.so

Expand
titleUbuntu Linux
Info

On *ubuntu 17.04 you'll probably also have to add the following line

DefaultLimitNOFILE=65535

to /etc/systemd/system.conf

and to /etc/systemd/user.conf .

See Cannot Increase open file limit past 4096 (Ubuntu).

  • Save the file.
  • Restart Ubuntu.
  • Verify the new maximum number of open files: 
    ulimit -n
    The command should now return 10000.
  • Expand
    titleMac OSX

    OS X 10.8 Mountain Lion:

    1. Find the current maximum number of open files per user in a single session: 
      ulimit -n
      By default the number is 256 1024 which is too small.
    2. Add ulimit -n 65536 to your ~/.profile file. This increases the limit for the shell.
    3. Create a file /etc/sysctl.conf if it doesn't exist.Edit the limits.conf file: 
      sudo gedit /etc/security/limits.conf
    4. Add the following lines in /etc/sysctl.conf. This increases the limit for the kernel.
      kern.maxfiles=65536
      kern.maxfilesperproc=65536
    5. Open a terminal and type:

      sudo sysctl -w kern.maxfiles=65536
      sudo sysctl -w kern.maxfilesperproc=65536
      sudo ulimit -n 65536

      -- OR --
      Restart OSX to read the settings from the files you edited.

    6. Type ulimit -n. The response should be 65536. (If not, restart OSX)
    7. Install Magnolia

    OS X 10.9 (Mavericks), 10.10 (Yosemite) and 10.11 (El Capitan), see Shell Session Limit

    OS X 10.12 (Sierra) and 10.13 (High Sierra), see the answer given for For OS X Sierra (10.12.X) on this page.

    Session de-serialization

    When installing or updating to a new version, you may see this error message:

    Code Block
    2009-11-24 13:02:14,970 ERROR org.apache.catalina.session.ManagerBase : 
    IOException while loading persisted sessions
    

    This can be due to changes in signatures of classes that are stored in user sessions, such as permissions, user, etc. The error happens when Tomcat attempts to de-serialize serialized sessions as the container starts. The de-serialization causes the loss of persisted sessions. Users will have to log in again. Otherwise it is a harmless error and can be ignored.

    Port 8080 is already in use

    Port 8080 is the default port for Tomcat. You can see it at the end of the default address  http://localhost:8080 . If another application on the computer is already using the same port you may need to change it.

    ...

    Find the following section and set the value of port to something other than 8080, for example 8090:

    1. to the file: 
      * soft nofile 10000
      * hard nofile 50000
      This sets for all users a soft limit of 10000 open files and a hard limit of 50000. These are just example numbers. Set them according to your system needs. Note that the wildcard option applies only to regular users, not to superuser. If you run Magnolia as superuser replace the asterisk with root.
    2. Save the file.
    3. Edit the configuration file for session-related modules: 
      sudo gedit /etc/pam.d/common-session
    4. Add the following line to the file: 
      session required pam_limits.so

      Info

      On *ubuntu 17.04 you'll probably also have to add the following line

      DefaultLimitNOFILE=65535

      to /etc/systemd/system.conf

      and to /etc/systemd/user.conf .

      See Cannot Increase open file limit past 4096 (Ubuntu).

    5. Save the file.
    6. Restart Ubuntu.
    7. Verify the new maximum number of open files: 
      ulimit -n
      The command should now return 10000.


    Expand
    titleMac OSX

    OS X 10.8 Mountain Lion:

    1. Find the current maximum number of open files per user in a single session: 
      ulimit -n
      By default the number is 256 which is too small.
    2. Add ulimit -n 65536 to your ~/.profile file. This increases the limit for the shell.
    3. Create a file /etc/sysctl.conf if it doesn't exist.
    4. Add the following lines in /etc/sysctl.conf. This increases the limit for the kernel.
      kern.maxfiles=65536
      kern.maxfilesperproc=65536
    5. Open a terminal and type:

      sudo sysctl -w kern.maxfiles=65536
      sudo sysctl -w kern.maxfilesperproc=65536
      sudo ulimit -n 65536

      -- OR --
      Restart OSX to read the settings from the files you edited.

    6. Type ulimit -n. The response should be 65536. (If not, restart OSX)
    7. Install Magnolia

    OS X 10.9 (Mavericks), 10.10 (Yosemite) and 10.11 (El Capitan), see Shell Session Limit

    OS X 10.12 (Sierra) and 10.13 (High Sierra), see the answer given for For OS X Sierra (10.12.X) on this page.

    Session de-serialization

    When installing or updating to a new version, you may see this error message:

    Code Block
    2009-11-24 13:02:14,970 ERROR org.apache.catalina.session.ManagerBase: IOException while loading persisted sessions
    

    This can be due to changes in signatures of classes that are stored in user sessions, such as permissions, user, etc. The error happens when Tomcat attempts to de-serialize serialized sessions as the container starts. The de-serialization causes the loss of persisted sessions. Users will have to log in again. Otherwise it is a harmless error and can be ignored.

    Port 8080 is already in use

    Port 8080 is the default port for Tomcat. You can see it at the end of the default address  http://localhost:8080 . If another application on the computer is already using the same port, you may need to change it.

    1. Open <CATALINA_HOME>/conf/server.xml in a text editor. This file is under your Magnolia installation directory.
    2. Find the following section and set the value of port to something other than 8080, for example 8090:

      Code Block
      xml
      xml
      <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
      <Connector port="8090" maxHttpHeaderSize="8192"
                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                 enableLookups="false" redirectPort="8443" acceptCount="100"
                 connectionTimeout="20000" disableUploadTimeout="true" />
      

    Change the defaultBaseUrl property, which is used to create absolute links in emails or other external systems. To do this, you need to now access Magnolia at the new port 8090.

    1. Log into the author instance at  http://localhost:8090/magnoliaAuthor/.magnolia .
    2. Go to Configuration.
    3. Set the value of /server/defaultBaseUrl property to http://localhost:8090/magnolia/.
    4. Log into the public instance at  http://localhost:8090/magnoliaPublic/.magnolia .
    5. Go to Configuration.
    6. Set the value of /server/defaultBaseUrl property to http://localhost:8090/magnolia/.

    Now the Welcome page at  http://localhost:8090  has the correct URLs too.

    The port also needs to be changed in publishing configuration, otherwise publishing (activating) changes from the author to public instance fails.

    1. On the author instance, 
      1. If you are using the Publishing module, go to Configuration > modules > publishing-core > config > receivers .
      2. If you are using the Activation module, go to Configuration > modules > activation > subscribers .
    2. Under the magnoliaPublic8080 receiver (subscriber), set the URL property to  http://localhost:8090/magnoliaPublic .
    3. Rename the receiver (subscriber) to magnoliaPublic8090.
    4. Activate the modified receiver (subscriber) including its subnodes.
    Info

    If you want to run two different Tomcats simultaneously you need to change other ports too. This is useful if you want to run different versions of Magnolia at the same time. In <CATALINA_HOME>/conf/server.xml, change the port numbers for the shutdown and AJP sections and any custom sections you have enabled.

    Java out of memory

    If the Java Virtual Machine (JVM) does not have enough memory you may see a  java.lang.OutOfMemoryError  in the startup log and Magnolia fails to start.

    Code Block
    xml
    xml
    Exception in thread "Timer-1" java.lang.OutOfMemoryError: Java heap space
    at org.apache.jackrabbit.core.query.lucene.IndexingQueue.getFinishedDocuments
    

    Increase Java heap size to allocate more memory to JVM:

    1. Stop the server. 
      ./magnolia_control.sh stop
    2. Open file /apache-tomcat/bin/setenv.sh (/apache-tomcat/bin/setenv.bat on Windows) in a text editor.
    3. Edit the Xmx parameter to set a new maximum heap size. Default size for Magnolia is 2048M, try a higher amount such as 4096M.
    4. Save the file and start the server. 
      ./magnolia_control.sh start && tail -f ../logs/catalina.out

    Publishing and activation errors

    For issues related to publishing/activation keys and the handshaking process, see either the Publishing errors page or the Activation errors page, depending on the module you use.

    New security filter

    MAGNOLIA-6865 introduced a new security filter that checks each POST request. As this may affect the functionality of your existing forms, please contact us and we'll provide you with more information about this issue.

    For security reasons, however, we cannot disclose further details on this page.

    Virtual URI mappings not working if too many are configured

    To mitigate an issue caused by having more than 500 configured virtual URI mappings in light modules, a WARN-level message is now logged when a DirectoryWatcher overflow occurs (MAGNOLIA-7762). We recommend to keep the number of files in a single folder below 100 and to use folder hierarchies whenever possible. For the upcoming fix, see MAGNOLIA-7798.

    Natural order not respected in results of content searches

    If you search for content using searchfn.searchPage(), searchfn.searchContent() or by executing search queries directly from a template, the search result order will not respect the natural order. This issue is caused by a bug in Apache Jackrabbit filed as JCR-3932: "Result of JCR-SQL2 query doesn't respect document order in JCR".

    Until the JCR bug is fixed, do not use searchfn. To get the correct order, execute JCR XPath queries directly.

    DL4J issues

    There are limitations related to the deep learning and search features of the Find Bar, which are provided by the Periscope and Periscope Result Ranker modules.

    Off-heap memory starvation

    You should configure DL4J memory limits to avoid off-heap memory starvation. This is particularly the case with the -Dorg.bytedeco.javacpp.maxbytes JVM argument. For more details, see MGNLPER-121.

    Periscope prevents deploying the public webapp as ROOT along with the author instance

    When experiencing this issue, the following message can be found in the logs: java.lang.NoClassDefFoundError: Could not initialize class org.nd4j.linalg.factory. The issue may appear even on more than just one Tomcat instance, running on the same VM and the same JDK.

    The ndj4 library can only be initiated once. Therefore, result ranking on public instances should be disabled, which you can do either by changing the configuration of the Periscope Result Ranker module, or rather by completely removing the magnolia-periscope-result-ranker module from your WAR package. After this modification, the search function will be available but search results will not be ranked. For more details see MGNLPER-112

    ...

    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="8090" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />
    

    Change the defaultBaseUrl property which is used to generate links in emails or other external systems. To do this, you need to now access Magnolia at the new port 8090.

    1. Log into the author instance at  http://localhost:8090/magnoliaAuthor/.magnolia  .
    2. Go to Configuration.
    3. Set the value of /server/defaultBaseUrl property to http://localhost:8090/magnolia/ .
    4. Log into the public instance at  http://localhost:8090/magnoliaPublic/.magnolia  .
    5. Go to Configuration.
    6. Set the value of /server/defaultBaseUrl property to http://localhost:8090/magnolia/ .

    Now the Welcome page at  http://localhost:8090   has the correct URLs too.

    The port also needs to be changed in publishing configuration, otherwise publishing (activating) changes from the author to public instance fails.

    1. On the author instance, 
      1. If you are using the Publishing module, go to Configuration > modules > publishing-core > config > receivers .
      2. If you are using the Activation module, go to Configuration > modules > activation > subscribers .
    2. Under the magnoliaPublic8080 receiver (subscriber), set the URL property to  http://localhost:8090/magnoliaPublic  .
    3. Rename the receiver (subscriber) to magnoliaPublic8090 .
    4. Activate the modified receiver (subscriber) including its subnodes.
    Info

    If you want to run two different Tomcats simultaneously you need to change other ports too. This is useful if you want to run different versions of Magnolia at the same time. In <CATALINA_HOME>/conf/server.xml, change the port numbers for the shutdown and AJP sections and any custom sections you have enabled.

    Java out of memory

    If the Java Virtual Machine (JVM) does not have enough memory you may see a java.lang.OutOfMemoryError in the startup log and Magnolia fails to start.

    ...

    Exception in thread "Timer-1" java.lang.OutOfMemoryError: Java heap space
    at org.apache.jackrabbit.core.query.lucene.IndexingQueue.getFinishedDocuments
    

    Increase Java heap size to allocate more memory to JVM:

    1. Stop the server. 
      ./magnolia_control.sh stop
    2. Open file /apache-tomcat/bin/setenv.sh (/apache-tomcat/bin/setenv.bat on Windows) in a text editor.
    3. Edit the Xmx parameter to set a new maximum heap size. Default size for Magnolia is 2048M, try a higher amount such as 4096M.
    4. Save the file and start the server. 
      ./magnolia_control.sh start && tail -f ../logs/catalina.out

    Publishing and activation errors

    For issues related to publishing/activation keys and the handshaking process, see either the Publishing errors page or the Activation errors page, depending on the module you use.

    New security filter

    MAGNOLIA-6865 introduced a new security filter that checks each POST request. As this may affect the functionality of your existing forms, please contact us and we'll provide you with more information about this issue.

    For security reasons, however, we cannot disclose further details on this page.