Grails-spezifische Settings für den Weblogic Server
In diesem Blog-Eintrag möchte ich zwei Weblogic-spezifische Themen für die Entwicklung von Grails Applikationen erläutern.
1. JDK Version des Zielsystems verwenden:
Jede Weblogic Server Version wird mit einem eigenen JDK ausgeliefert. Beim Weblogic Server 8.1.4 ist es beispielsweise die Version 1.4.2_05, beim WLS 9.1 ist es die Version 1.5.0_04 und beim WLS 10.3.2 ist es die Version 1.6.0_14.
Um böse Überraschungen bezüglich JDK Versionen beim späteren Test und Deployment in der Produktionsumgebung zu vermeiden, sollte die Gails Applikation gleich nach dem Anlegen des Projekts so konfiguriert werden, dass die Applikation mit dem JDK des Zielsystems kompiliert wird.
Zum Kompilieren bzw. zur WAR-Generierung eines Grails Projekts können folgende Skripte verwendet werden:
- ${PROJECT_HOME}/war.cmd:
set JAVA_HOME=${WL_HOME}\bea103\jdk160_05
set PATH=%JAVA_HOME%\bin;%PATH%
call grails war
pause
- ${PROJECT_HOME}/run-app.cmd:
set JAVA_HOME=${WL_HOME}\bea103\jdk160_05
set PATH=%JAVA_HOME%\bin;%PATH%
call grails run-app
pause
2. Der Weblogic Deployment Descriptor (weblogic.xml)
Wenn folgende Exception beim Publizieren einer Grails Applikation auf dem Weblogic Server auftritt, hilft eine entsprechende weblogic.xml Konfiguration im WEB-INF Verzeichnis (siehe unten).
Weitere Infos finden sich unter: http://www.grails.org/Deployment
- Exception:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed;
nested exception is java.lang.NoSuchMethodError: org.apache.tools.ant.helper.AntXMLContext.setCurrentTargets(Ljava/utilMap;)
- ${PROJECT_HOME}/web-app/WEB-INF/weblogic.xml:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90
http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>