Magnolia 5.6 reached end of life on June 25, 2020. This branch is no longer supported, see End-of-life policy.
This page describes how to deploy Magnolia as a WAR file on WildFly, formerly known as JBoss Application Server. The procedures described below have been checked for WildFly 10+. Magnolia 5.6 requires WildFly 10 or better for compatibility. This page was also verified with JBoss EAP 7.
Magnolia uses the Java Authentication and Authorization Service (JAAS) to authenticate and authorize users. You have to configure the JAAS login modules for WildFly so that you can log into Magnolia:
$WILDFLY_HOME/standalone/configuration/standalone.xml
.<subsystem xmlns="urn:jboss:domain:security:1.2
>
section:<subsystem xmlns="urn:jboss:domain:security:1.2"> <security-domains> <security-domain name="magnolia" cache-type="default"> <authentication> <login-module code="info.magnolia.jaas.sp.jcr.JCRAuthenticationModule" flag = "requisite" /> <login-module code="info.magnolia.jaas.sp.jcr.JCRAuthorizationModule" flag = "required" /> </authentication> </security-domain> <security-domain name="Jackrabbit" cache-type="default"> <authentication> <login-module code="org.apache.jackrabbit.core.security.SimpleLoginModule" flag = "required" /> </authentication> </security-domain> <security-domain name="other" cache-type="default"> <authentication> <login-module code="org.apache.jackrabbit.core.security.SimpleLoginModule" flag="required"/> </authentication> </security-domain> </security-domains> </subsystem>
When using Magnolia's worklow modules you might experience class loading issue related to packages of org.jboss.weld.*
. In this case create or edit jboss-deployment-structure.xml
file in Magnolia's WEB-INF
folder by adding the following code.
<?xml version="1.0"?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment> <exclude-subsystems> <subsystem name="weld" /> </exclude-subsystems> </deployment> </jboss-deployment-structure>
Magnolia uses the Bouncy Castle cryptography package to decode the license key and to secure the activation process. WildFly ships with a slightly older version of these libraries.
Find the BC module folder in $WILDFLY_HOME/modules/system/layers/base/org/bouncycastle/main
.
JBoss EAP
$EAP_HOME/modules/system/layers/base/org/bouncycastle/main
bcprov
PKIX bcpkix
bcpg
bcmail
Edit the module.xml
file in the same folder.
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.1" name="org.bouncycastle"> <resources> <resource-root path="bcprov-jdk15on-1.58.jar"/> <resource-root path="bcpkix-jdk15on-1.58.jar"/> <resource-root path="bcpg-jdk15on-1.58.jar"/> <resource-root path="bcmail-jdk15on-1.58.jar"/> </resources> <dependencies> <module name="javax.api" slot="main" export="true"/> </dependencies> </module>
Create or edit jboss-deployment-structure.xml
file in Magnolia's WEB-INF
folder by adding the following code.
<?xml version="1.0"?> <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> <deployment> <dependencies> <module name="org.bouncycastle" slot="main" export="true" /> </dependencies> </deployment> </jboss-deployment-structure>
WildFly Application Server adds its own log4j logging configuration. If you want to use your own log4j logging configuration (or the one provided by Magnolia) in your deployment, exclude the default configuration first.
Create a new file jboss-deployment-structure.xml
under the WEB-INF
folder with this content:
<jboss-deployment-structure> <deployment> <exclusions> <module name="org.apache.log4j" /> <module name="org.slf4j" /> </exclusions> </deployment> </jboss-deployment-structure>
During a deployment the Resteasy libraries can cause a class loading issue when the RestClient module is used. You can get rid of the issue by excluding the following subsystems in the <deploymenŧ>
element of the jboss-deployment-structure.xml
file:
<exclude-subsystems> <subsystem name="jaxrs" /> <subsystem name="resteasy" /> </exclude-subsystems>
To deploy the downloaded Magnolia WAR file to WildFly:
magnoliaAuthor.war
.magnoliaPublic.war
.$WILDFLY_HOME/standalone/deployments
.The application server will automatically pick up the files and deploy them.
WildFly unpacks .war files to a
tmp
directory and deletes the directory as part of the shutdown process. This means that every time WildFly restarts, the Magnolia webapp forgets everything – modules, repository, license key. To get around this issue, you can deploy the Magnolia webapp as an extracted (unpacked) directory or configure Magnolia to store the repository outside the tmp
directory. Alternatively, specify the following paths in your magnolia.properties
configuration. If you point the paths outside of WildFly's tmp
directory, Magnolia will not reinstall on every startup and they will not be deleted on every shutdown.
magnolia.home=/somewhere_outside_of_wildfly_tmp_folder magnolia.cache.startdir=${magnolia.home}/cache magnolia.upload.tmpdir=${magnolia.home}/tmp magnolia.exchange.history=${magnolia.home}/history magnolia.repositories.home=${magnolia.home}/repositories magnolia.logs.dir=${magnolia.home}/logs
To deploy an extracted directory:
/magnoliaAuthor.war
directory./magnoliaPublic.war
directory. $WILDFLY_HOME/standalone/deployments
.magnoliaAuthor.war.dodeploy
and magnoliaPublic.war.dodeploy
in the $WILDFLY_HOME/standalone/deployments
directory.The application server will pick up the extracted directories on startup and will deploy them.
http://localhost:8080/magnoliaAuthor/
.
http://localhost:8080/magnoliaPublic/
. It may happen that the Magnolia application is not deployed because of deployment timeout. You can avoid this by setting the
deployment-timeout
parameter to higher value in $WILDFLY_HOME/standalone/configuration/standalone.xml
. The default is 60 seconds.
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1"> <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" deployment-timeout="120"/> </subsystem>
If you experience
java.lang.OutOfMemoryError
when accessing Magnolia instances, try restarting WildFly with the JVM Xmx
value in $WILDFLY_HOME/bin/standalone.conf
set at least to 1024m
:
JAVA_OPTS="-Xms64m -Xmx1024m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
Without the WAR file placed under WEB-INF
folder, the context path will be the web application's folder name by default.
jboss-web.xml
file in WEB-INF
folder of your Magnolia instance.Add the following section in the file. Replace YourContextPath
with your actual context path which can be /
for a public instance, for example.
<jboss-web> <context-root>/YourContextPath</context-root> </jboss-web>
Restart WildFly. Your webapp should be available at http://localhost:8080/<YourContextPath>
.