Connecting JIRA to Firebird
| 
PDF |
Note
Before you begin: If you are already using JIRA, create an export of your data as an
XML backup. You will then be able to transfer data from your old database to
your new database, as described in
Switching databases.
1. Configure Firebird
- Create a database user which JIRA will connect as (e.g. jirauser).
- Create a database for JIRA to store issues in (e.g. jiradb).
- Ensure that the user has permission to connect to the database, and create and populate tables.
2. Copy the Firebird driver to your application server
3. Configure your application server to connect to Firebird
- Edit conf/server.xml (if you are using JIRA Standalone) and customise the username, password, driverClassName and url parameters for the
Datasource. (If you are using JIRA WAR/EAR, edit the appropriate file on your application server; e.g. for Tomcat, edit conf/Catalina/localhost/jira.xml.)
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080"
maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="${catalina.home}/atlassian-jira" reloadable="false">
<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
username="[enter db username]"
password="[enter db password]"
driverClassName="org.firebirdsql.jdbc.FBDriver"
url="jdbc:firebirdsql:localhost/3050:/opt/firebird/examples/jiradb.fdb?autoReconnect=true"
[ delete the minEvictableIdleTimeMillis and timeBetweenEvictionRunsMillis params here ]
/>
<Resource name="UserTransaction" auth="Container" type="javax.transaction.UserTransaction"
factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60"/>
<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>
</Context>
</Host>
</Engine>
</Service>
</Server>
(Note: if you can't find this section at all, you've probably got the wrong file - search for mentions of
'jira' in the files under conf/.)
-
If you are using JIRA Standalone, edit conf/server.xml, and delete the minEvictableIdleTimeMillis and
timeBetweenEvictionRunsMillis attributes (which are only needed for HSQL, and degrade performance
otherwise).
4. Configure the JIRA Entity Engine
-
Edit atlassian-jira/WEB-INF/classes/entityengine.xml (if you are using JIRA Standalone) or edit-webapp/WEB-INF/classes/entityengine.xml (JIRA WAR/EAR), and change the
field-type-name attribute to firebird. (If you forget to do this
and start JIRA, it may create database tables incorrectly. See this
page if this happens to you.) Also delete the schema-name="PUBLIC" attribute:
<!-- DATASOURCE - You will need to update this tag for your installation.
-->
<datasource name="defaultDS" field-type-name="firebird"
schema-name="PUBLIC"
helper-class="org.ofbiz.core.entity.GenericHelperDAO"
check-on-start="true"
use-foreign-keys="false"
...
Note
If you are using JIRA WAR/EAR, your
application server may require other changes to
entityengine.xml (e.g. to customise the
jndi-jdbc tag).
Additional notes
-
A constraint within Firebird does not allow key sizes to be greater than 250. Due to this restriction,
it should be noted that the performance of JIRA is significantly reduced as some indexes can not be created.
When starting up JIRA for the first time you will see warning messages caused by this constraint,
which look like this:
2006-08-31 11:27:48,328 main [core.entity.jdbc.DatabaseUtil] SQL Exception while executing the following:
CREATE INDEX action_issue ON jiraaction (issueid, actiontype)
Error was: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544351. unsuccessful metadata update
key size too big for index ACTION_ISSUE
Next steps
You should now have an application server configured to connect to a database, and JIRA configured to use the correct database type. If you are using JIRA Standalone, start it up and watch the logs for any errors. If you are using the JIRA WAR/EAR distribution, rebuild and redeploy the webapp in your application server.
User-contributed notes