JIRA v4.1.2 auf GlassFish v3 installieren

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

  1. Atlassian JIRA v4.1.2 herunterladen (Achtung! Nicht die Standalone-Version)
  2. Ins Verzeichnis „/opt“ wechseln
  3. 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.
  4. Den entpackten Ordner in „jira“ umbenennen
  5. Die Archiv-Datei löschen
  6. Unterordner „/lib“ erstellen
  7. In den „/lib“-Ordner wechseln
  8. Für GlassFish angepasste „atlassian-seraph-2.1.4.jar“ herunterladen (Thanks again to Alhvi!)
  9. Komponente für „Enterprise JavaBeans Version 3“ herunterladen
  10. Komponente entpacken
  11. Lizenz-Hinweis löschen
  12. EJB-Archiv-Datei löschen
  13. Zum überliegenden Ordner („/WEB-INF“) wechseln
  14. Deployment-Descriptor „sun-web.xml“ erstellen
  15. „sun-web.xml“ bearbeiten (Code, siehe unten)
  16. Benutzer „jira“ hinzufügen
  17. Datei „jira-application.properties“ bearbeiten (Code, siehe unten)
  18. Datei „entityengine.xml“ bearbeiten (Code, siehe unten)
  19. MySQL-Root benutzen
  20. Datenbank „jiradb“ anlegen
  21. Rechte-Inhaber für „jiradb“ festlegen (Passwort anpassen!)
  22. MySQL-Terminal verlassen
  23. In die Haupt-Domäne von GlassFish wechseln
  24. „MySQL Connector“-Archiv herunterladen
  25. Archiv entpacken
  26. Ausführbaren „MySQL Connector“ zur GlassFish-Bibliothek hinzufügen
  27. „MySQL Connector“-Archiv löschen
  28. „MySQL Connector“-Archiv-Ordner löschen
  29. 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:

  1. JDBC -> Verbindungspools -> Neu
  2. Name: JiraDB
    Ressourcentyp: javax.sql.DataSource
    Datenbankhersteller: MySql
  3. Weiter
  4. Bei „Weitere Eigenschaften“ alle Eigenschaften löschen und folgende hinzufügen:
  5. Name: DatabaseName Value: jiradb
    Name: Password Value: secret-password (Anpassen!)
    Name: PortNumber Value: 3306
    Name: ServerName Value: localhost
    Name: User Value: jirauser
  6. Fertig stellen
  7. JDBC-Ressourcen
  8. Neu
  9. JNDI-Name: jdbc/JiraDS
    Poolname: JiraDB
    Beschreibung: Jira Data Source
  10. 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
  1. Ins JIRA-Verzeichnis wechseln
  2. Deployment starten
  3. Erzeugte WAR-Datei in den Autostart des GlassFish-Servers kopieren
  4. GlassFish neustarten
  5. Generische WAR-Datei löschen
  6. WAR-Datei für den Tomcat entfernen

2 Gedanken zu „JIRA v4.1.2 auf GlassFish v3 installieren“

  1. 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?

  2. 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.|#]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.