You can run Magnolia on the Oracle WebLogic Application Server. Include the magnolia-module-weblogic module in your installation or use the WAR file built specifically for WebLogic.

Deploying Magnolia on WebLogic as an exploded archive

If you are deploying Magnolia as an exploded archive, ensure that the magnolia-module-weblogic is in your application's WEB-INF/lib folder. Unlike a Tomcat deployment, there are no extra steps to do.

Deploying Magnolia as a WAR file

  1. Download the WebLogic WAR file corresponding to your WebLogic version.
  2. Rename the WAR file to magnoliaAuthor, magnoliaPublic or to a name that matches the name of your configuration.

WebLogic 9.2 specific tasks

Starting with Magnolia 4.5.4 we no longer support WebLogic 9 since it does not run on Java 6. We only support WebLogic 10.3 and later.

 

  1. Unpack the WAR file.
  2. Edit web.xml and set the magnolia.initialization.realPath context parameter to the full path where WebLogic will extract the WAR file.
  3. If you downloaded the WebLogic-ready WAR file, the listener class should be info.magnolia.module.weblogic.MgnlWlsServletContextListener and not info.magnolia.cms.servlets.MgnlServletContextListener. Change the listener class if you are working on a default Magnolia installation.
  4. Repack the WAR file.

On WebLogic 9.2, to make the deployment path match the path you have specified in web.xml, deploy via the console rather than using a hot deployment.

Conflicting libraries

These tasks are extra configuration steps necessary to deploy your WAR file on WebLogic. You need to perform all of the other standard configuration steps.

WebLogic 9 conflict with JDOM library

WebLogic 9 also ships with an old version of JDom which later leads to issues in parsing of XML documents. Issues will be noted as exceptions such as:

java.lang.NoSuchMethodError: org.jdom.Element.getParent()Lorg/jdom/Element;
   at org.jaxen.jdom.DocumentNavigator.getParentAxisIterator(DocumentNavigator.java:252)
   at org.jaxen.DefaultNavigator.getParentNode(DefaultNavigator.java:275)
   at org.jaxen.expr.NodeComparator.getDepth(NodeComparator.java:164)
   at org.jaxen.expr.NodeComparator.compare(NodeComparator.java:107)
   at java.util.Arrays.mergeSort(Arrays.java:1284)

To resolve, provide newer JDOM/Jaxen libraries by adding jdom-1.0.jarjaxen-1.0-FCS-full.jarxom-1.1.jar and saxpath-1.0-FCS.jar to PRE_CLASSPATH variable in the setDomainEnv.sh script.

WebLogic 10 conflict with commons-lang library

When deploying on WebLogic, there is a version conflict if using commons-lang. Note that WebLogic 10 is distributed with commons-lang-2.3.jar while WebLogic 9 is distributed with commons-lang-2.1.jar. However, JackRabbit and Magnolia 4 (and later releases) need at least commons-lang-2.4.jar. To resolve this issue, edit setDomainEnv.sh in WebLogic and add commons-lang-2.4.jar to PRE_CLASSPATH. As doing this does not remove any methods but only adds new API and fixes known bugs, there are no adverse effects from this change to the WebLogic installation.

WebLogic 12c conflict with Bouncy Castle library

Magnolia uses the Bouncy Castle cryptography package to decode the license key and to secure the activation process. 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:

  1. Edit setDomainEnv.sh in WebLogic and add bcprov-jdk16-1.46.jar to PRE_CLASSPATH.
  2. Remove bcprov-jdk16-1.45.jar from WebLogic 12c common libraries.

Conflict with SL4J/Log4j libraries

Magnolia uses Apache Log4j and SLF4J as logging libraries for monitoring. WebLogic 12c has its own Log4j configuration but Magnolia comes with its own log4j.xml configuration. This leads to a library conflict. To ensure the proper loading of Magnolia's own configuration, the weblogic.xml file in your application's WEB-INF folder  has to be modified with the prefer-application-packages  element:

<container-descriptor>
   <prefer-application-packages>
	 <package-name>org.slf4j.*</package-name>
   </prefer-application-packages>
</container-descriptor>

JAAS Configuration

Tell WebLogic Server where your jaas.config file is located.
Edit file setDomainEnv.sh and add the following line.

JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.security.auth.login.config=<pathto>\jaas.config

Character encoding issues

See using multibyte language in Oracle's documentation for insight on character encoding issues you may face when using WebLogic.

If you experience issues with encoding of characters in JSPs, consider adding the following section to your web.xml to ensure WebLogic JSP compiler compiles all pages in UTF-8.

<jsp-config>
   <jsp-property-group>
      <url-pattern>*.jsp</url-pattern>
      <page-encoding>UTF-8</page-encoding>
   </jsp-property-group>
</jsp-config>

Other known issues

You can check additional known issues related to WebLogic here.

#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels