Magnolia 6.0 reached end of life on June 26, 2019. This branch is no longer supported, see End-of-life policy.
When accessing the webapp without the trailing slash after the context http://localhost:8080/magnoliaAuthor after login the user is presented with a 404 page rather than admincentral. This behavior is configurable via the mapperContextRootRedirectEnabled
and mapperDirectoryRedirectEnabled
attributes of the Context which may be used to restore the previous behavior.
When you open a page for editing and reload it in the browser, an extra semicolon is added to the URL fragment and the server returns a 404 error. Every subsequent reload adds another semicolon. This issue occurs with older versions of the Tomcat application server. To resolve this issue, upgrade to Tomcat 7.0.47+. See
Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
Multiexcerpt include | ||||
---|---|---|---|---|
|
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
.
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:
setDomainEnv.sh
in Oracle WebLogic and add bcprov-jdk15on-1.58.jar
to PRE_CLASSPATH
orbcprov-jdk16-1.45.jar
from Oracle WebLogic 12c common libraries.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 | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
<container-descriptor>
<prefer-application-packages>
<package-name>com.google.common.*</package-name>
</prefer-application-packages>
</container-descriptor> |
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 | ||
---|---|---|
| ||
weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener |
Workaround:
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 | ||
---|---|---|
| ||
hostname
joesLittleMacBookPro.local |
The command returns the hostname of your Mac. In the given example, the hostname is joesLittleMacBookPro.local
.
/etc/hosts
with an editor of your choice. You will edit the file in the next step.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.Add these two lines to /etc/hosts
:
Code Block | ||||
---|---|---|---|---|
| ||||
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 | ||||
---|---|---|---|---|
| ||||
127.0.0.1 localhost joesLittleMacBookPro.local
::1 localhost joesLittleMacBookPro.local |
Further information:
Allow an exception in Windows Firewall for Java.
C:\Sun\SDK\jdk\bin\java.exe
.If you get a security alert during startup, check the Private networks checkbox and click Allow access.
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:
To correct this define CATALINA_HOME in environment variables. Follow the instructions in Set JAVA_HOME environment variable.
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.
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 | ||||||||
---|---|---|---|---|---|---|---|---|
|
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> |
with
Code Block | ||
---|---|---|
| ||
<SearchIndex class="info.magnolia.jackrabbit.lucene.SearchIndex"> |
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.
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 | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
OS X 10.8 Mountain Lion:
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. |
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 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.
<CATALINA_HOME>/conf/server.xml
in a text editor. This file is under your Magnolia installation directory.Find the following section and set the value of port
to something other than 8080, for example 8090:
Code Block | ||||
---|---|---|---|---|
| ||||
<!-- 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.
http://localhost:8090/magnoliaAuthor/.magnolia
./server/defaultBaseUrl
property to http://localhost:8090/magnolia/
. http://localhost:8090/magnoliaPublic/.magnolia
./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.
magnoliaPublic8080
receiver (subscriber), set the URL
property to http://localhost:8090/magnoliaPublic
.magnoliaPublic8090
.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 |
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 | ||||
---|---|---|---|---|
| ||||
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:
./magnolia_control.sh stop
/apache-tomcat/bin/setenv.sh
(/apache-tomcat/bin/setenv.bat
on Windows) in a text editor.Xmx
parameter to set a new maximum heap size. Default size for Magnolia is 2048M, try a higher amount such as 4096M../magnolia_control.sh start && tail -f ../logs/catalina.out
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.
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> |
with
Code Block | ||
---|---|---|
| ||
<SearchIndex class="info.magnolia.jackrabbit.lucene.SearchIndex"> |
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.
Our default configuration does not use server mode. Therefore, if you try to initiate a backup call using CLI or REST, it fails because H2 does not allow more than one connection at a time. This is a new issue in Magnolia (most likely due to H2 or Jackrabbit updates).
A temporary workaround is to make H2 run in server mode and 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 | ||||||
---|---|---|---|---|---|---|
|
When you open a page for editing and reload it in the browser, an extra semicolon is added to the URL fragment and the server returns a 404 error. Every subsequent reload adds another semicolon. This issue occurs with older versions of the Tomcat application server. To resolve this issue, upgrade to Tomcat 7.0.47+. See
Jira | ||||
---|---|---|---|---|
|
Multiexcerpt include | ||||
---|---|---|---|---|
|
When accessing the webapp without the trailing slash after the context http://localhost:8080/magnoliaAuthor after login the user is presented with a 404 page rather than admincentral. This behavior is configurable via the mapperContextRootRedirectEnabled
and mapperDirectoryRedirectEnabled
attributes of the Context which may be used to restore the previous behavior. See Apache Tomcat 7 Changelog.
When deploying on Oracle WebLogic 10, there is a version conflict while using commons-lang
. While Oracle WebLogic-10 is distributed with commons-lang-2.3.jar
, JackRabbit and Magnolia need at least commons-lang-2.4.jar
. To resolve this issue, modify setDomainEnv.sh
of Oracle WebLogic and add commons-lang-2.4.jar
to the PRE_CLASSPATH
. Since version 2.4 commons-lang
doesn't remove any methods, but only adds new API and fixes known bugs, there is no adverse effect from this change to the Oracle WebLogic installation.
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-jdk16-1.46.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:
setDomainEnv.sh
in Oracle WebLogic and add bcprov-jdk16-1.46.jar
to PRE_CLASSPATH
orbcprov-jdk16-1.45.jar
from Oracle WebLogic 12c common libraries.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 | ||
---|---|---|
| ||
weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener |
Workaround:
Magnolia cannot render images stored in dam
workspace. Google Guava library is used by the DAM API 2.0 which is used for working with images.
Symptom:
Code Block | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
<container-descriptor>
<prefer-application-packages>
<package-name>com.google.common.*</package-name>
</prefer-application-packages>
</container-descriptor> |
java.io.IOException
stream closedMagnolia's resource loader makes heavy use of accessing classpath resources (last modification date and contents). Jetty uses caching of such resources by default, which may result in a java.io.IOException
occurring randomly. See
Jira | ||||||||
---|---|---|---|---|---|---|---|---|
|
If you use Mac OS X 10.5 or 10.6, you should update to at least 10.5.8 or 10.6.2. Earlier versions cause issues where, when two or more instances are started in the same container, some or all connections are dropped.
The symptoms are that Tomcat is unreachable ("kCFErrorDomainCFNetwork:302") but no log message clearly identifies the issue. Sometimes pages can be loaded but resources cannot, leading to missing images or stylesheets. Another symptom is that you have to kill the Tomcat process to stop it (-HUP works) because the shutdown script cannot reach the running process either. See MAGNOLIA-1959 for more details and comment on your own experience.
The embedded Derby database that Magnolia uses for demonstration 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.
...
title | Ubuntu Linux |
---|
ulimit -n
limits.conf
file: sudo gedit /etc/security/limits.conf
* soft nofile 10000
* hard nofile 50000
root
.sudo gedit /etc/pam.d/common-session
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
to and to |
ulimit -n
Expand | ||
---|---|---|
| ||
OS X 10.8 Mountain Lion:
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. |
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.
If you see the following error message in your logs:
Code Block |
---|
javax.xml.transform.TransformerFactoryConfigurationError:
Provider org.apache.xalan.processor.TransformerFactoryImpl not found
|
Add the Xalan jar to the WEB-INF/lib
folder of your Magnolia instances, delete the repositories and start again. Please see MAGNOLIA-1958 for more details and comment on your own experience.
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:
...
<!-- 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.
http://localhost:8090/magnoliaAuthor/.magnolia
./server/defaultBaseUrl
property to http://localhost:8090/magnolia/
. http://localhost:8090/magnoliaPublic/.magnolia
./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.
magnoliaPublic8080
receiver (subscriber), set the URL
property to http://localhost:8090/magnoliaPublic
.magnoliaPublic8090
.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 |
Allow an exception in Windows Firewall for Java.
C:\Sun\SDK\jdk\bin\java.exe
.If you get a security alert during startup, check the Private networks checkbox and click Allow access.
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:
To correct this define CATALINA_HOME in environment variables. Follow the instructions in Set JAVA_HOME environment variable.
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:
./magnolia_control.sh stop
/apache-tomcat/bin/setenv.sh
(/apache-tomcat/bin/setenv.bat
on Windows) in a text editor.Xmx
parameter to set a new maximum heap size. Default size for Magnolia is 512M, try a higher amount such as 1024M../magnolia_control.sh start && tail -f ../logs/catalina.out
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.
For issues related to activation keys and the handshaking process, see the Activation errors page.
In the Pages app, Magnolia informs the editor about a potential URI mapping conflict by placing a warning icon next to the name of the newly created page. Due to a CSS issue Firefox users can't see the icon:
Jira