Ich habe eine JIRA Starter License gekauft, um zusammen mit Studienkollegen gemeinsame Projekte zu verwalten. Als Anhänger der Java Enterprise Edition Version 6 läuft auf dem von mir administrierten Debian-Server ein GlassFish v3 Application Server.
Leider ist JIRA auf Tomcat geeicht, was das Deployment auf einem GlassFish Application Server erschwert. Doch mit Hilfe von Alhvi Balcarcels Artikel „Installing Jira on Glassfish. A Step by Step Guide.“ ist es mir gelungen, JIRA auf einem GlassFish zu installieren.
Wer GlassFish noch nicht installiert hat, sollte sich [post id=1666]GlassFish v3 installieren unter Debian Lenny[/post] durchlesen. Meine JIRA-Installationsroutine orientiert sich stark an der von Alhvi Balcarcel. Kommandos die mit „vim“ beginnen, deuten an, dass die jeweils folgende Datei im Quelltext angepasst werden muss. Die benötigten Codestücke werden unterhalb der Installationsroutine beschrieben.
Schritt 1 – Installationsroutine
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | sudo wget -O /opt/jira.tar.gz http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-enterprise-4.1.2.tar.gz cd /opt UnTar/GZip... (in WinSCP) für jira.tar.gz sudo mv atlassian-jira-enterprise-4.1.2 jira sudo rm jira.tar.gz sudo mkdir /opt/jira/edit-webapp/WEB-INF/lib cd /opt/jira/edit-webapp/WEB-INF/lib sudo wget http://alhvi.balcarcel.com/files/blog/jira/atlassian-seraph-2.1.4.jar sudo wget http://www.java2s.com/Code/JarDownload/ejb-3_0-api.jar.zip sudo unzip ejb-3_0-api.jar.zip sudo rm ejb.license.txt sudo rm ejb-3_0-api.jar.zip cd .. sudo touch sun-web.xml vim sun-web.xml sudo adduser --shell /bin/false --disabled-password --home /usr/local/jira jira vim /opt/jira/edit-webapp/WEB-INF/classes/jira-application.properties vim /opt/jira/edit-webapp/WEB-INF/classes/entityengine.xml mysql -u root -p CREATE DATABASE jiradb CHARACTER SET UTF8; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on jiradb.* TO 'jirauser'@'localhost' IDENTIFIED BY 'secret-password'; exit cd /opt/glassfishv3/glassfish/domains/domain1/lib/ext wget -O mysql-connector-java-5.1.13.tar.gz http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.13.tar.gz/from/http://artfiles.org/mysql/ tar -zxvf mysql-connector-java-5.1.13.tar.gz mv mysql-connector-java-5.1.13/mysql-connector-java-5.1.13-bin.jar /opt/glassfishv3/glassfish/domains/domain1/lib/ext rm mysql-connector-java-5.1.13.tar.gz rm -r mysql-connector-java-5.1.13 sudo /etc/init.d/glassfish.sh restart |
Schritt 1 – Erklärung
- Atlassian JIRA v4.1.2 herunterladen (Achtung! Nicht die Standalone-Version)
- Ins Verzeichnis „/opt“ wechseln
- Die Datei „jira.tar.gz“ entpacken.
Achtung! Bei mir hat das Entpacken über die Konsole mit „tar -xjvf jira.tar.gz“ immer zum Fehler „tar: Nicht behebbarer Fehler: Programmabbruch.“ geführt. Ich habe deshalb die Datei über das Kontextmenü von WinSCP mit „UnTar/GZip…“ entpackt. - Den entpackten Ordner in „jira“ umbenennen
- Die Archiv-Datei löschen
- Unterordner „/lib“ erstellen
- In den „/lib“-Ordner wechseln
- Für GlassFish angepasste „atlassian-seraph-2.1.4.jar“ herunterladen (Thanks again to Alhvi!)
- Komponente für „Enterprise JavaBeans Version 3“ herunterladen
- Komponente entpacken
- Lizenz-Hinweis löschen
- EJB-Archiv-Datei löschen
- Zum überliegenden Ordner („/WEB-INF“) wechseln
- Deployment-Descriptor „sun-web.xml“ erstellen
- „sun-web.xml“ bearbeiten (Code, siehe unten)
- Benutzer „jira“ hinzufügen
- Datei „jira-application.properties“ bearbeiten (Code, siehe unten)
- Datei „entityengine.xml“ bearbeiten (Code, siehe unten)
- MySQL-Root benutzen
- Datenbank „jiradb“ anlegen
- Rechte-Inhaber für „jiradb“ festlegen (Passwort anpassen!)
- MySQL-Terminal verlassen
- In die Haupt-Domäne von GlassFish wechseln
- „MySQL Connector“-Archiv herunterladen
- Archiv entpacken
- Ausführbaren „MySQL Connector“ zur GlassFish-Bibliothek hinzufügen
- „MySQL Connector“-Archiv löschen
- „MySQL Connector“-Archiv-Ordner löschen
- GlassFish neustarten
Schritt 1 – Quelltexte
/opt/jira/edit-webapp/WEB-INF/sun-web.xml
1 2 3 4 5 6 7 8 9 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN' 'http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd'> <sun-web-app> <class-loader delegate="false" /> </sun-web-app> |
/opt/jira/edit-webapp/WEB-INF/classes/jira-application.properties
In den „jira-application.properties“ muss folgender Pfad gesetzt werden:
jira.home = /usr/local/jira |
/opt/jira/edit-webapp/WEB-INF/classes/entityengine.xml
In der „entityengine.xml“ muss die Deklaration von <transaction-factory> und <datasource> ersetzt werden durch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ... <transaction-factory class="org.ofbiz.core.entity.transaction.JNDIFactory"> <user-transaction-jndi jndi-server-name="default" jndi-name="UserTransaction"/> <transaction-manager-jndi jndi-server-name="default" jndi-name="UserTransaction"/> </transaction-factory> ... <datasource name="defaultDS" field-type-name="mysql" helper-class="org.ofbiz.core.entity.GenericHelperDAO" check-on-start="true" use-foreign-keys="true" use-foreign-key-indices="true" check-fks-on-start="true" check-fk-indices-on-start="true" add-missing-on-start="true" check-indices-on-start="true"> <jndi-jdbc jndi-server-name="default" jndi-name="jdbc/JiraDS"/> </datasource> ... |
Schritt 2 – Installationsroutine
Der zweite Schritt beginnt im GlassFish-Administrationssystem (http://domain.de:4848). Dort müssen folgende Aktionen getätigt werden:
- JDBC -> Verbindungspools -> Neu
- Name: JiraDB
Ressourcentyp: javax.sql.DataSource
Datenbankhersteller: MySql - Weiter
- Bei „Weitere Eigenschaften“ alle Eigenschaften löschen und folgende hinzufügen:
- Name: DatabaseName Value: jiradb
Name: Password Value: secret-password (Anpassen!)
Name: PortNumber Value: 3306
Name: ServerName Value: localhost
Name: User Value: jirauser - Fertig stellen
- JDBC-Ressourcen
- Neu
- JNDI-Name: jdbc/JiraDS
Poolname: JiraDB
Beschreibung: Jira Data Source - OK
Wenn das erledigt ist, dann geht es noch ein letztes Mal ins Terminal:
1 2 3 4 5 6 | cd /opt/jira sudo ./build.sh war scp ./dist-generic/atlassian-jira-4.1.2.war /opt/glassfishv3/glassfish/domains/domain1/autodeploy/jira.war sudo /etc/init.d/glassfish.sh restart sudo rm -r /opt/jira/dist-generic sudo rm -r /opt/jira/dist-tomcat |
- Ins JIRA-Verzeichnis wechseln
- Deployment starten
- Erzeugte WAR-Datei in den Autostart des GlassFish-Servers kopieren
- GlassFish neustarten
- Generische WAR-Datei löschen
- WAR-Datei für den Tomcat entfernen
Hi there thanks for you info.
i have tried this but i get every time a :
Error occurred during deployment: Exception while preparing the app : Unable to load the EJB module. DeploymentContext does not contain any EJB.
any idea?
Glassish log:
[#|2013-03-30T14:49:45.538-0400|INFO|glassfish3.1.2|org.glassfish.admingui|_ThreadI
D=154;_ThreadName=Thread-2;|Exception Occurred :Error occurred during deployment: Exception while preparing the app : Unable to load the EJB module. DeploymentContext does not contain any EJB. Check the archive to ensure correct packaging for /home/glassfish/glassfish/domains/domain1/applications/jira.
If you use EJB component annotations to define the EJB, and an ejb or web deployment descriptor is also used, please make sure that the deployment descriptor references a Java EE 5 or higher version schema, and that the metadata-complete attribute is not set to true, so the component annotations can be processed as expected. Please see server.log for more details.|#]