1。首先安装mysql,我用的版本为MySQL5.5,此处安装不做说明。
2。下载jira3.6:下载地址:http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-enterprise-3.6-standalone.zip
此ZIP包包含jira与tomcat
下载破解包:http://www.blogjava.net/Files/martinx/atlassian-extras-0.7.19.rar
3。配置
解压缩到一个文件夹中,此处定此文件夹为/jira
1),创建一个mysql库,命名为jira,(我将字符集设置为gbk,无关紧要)
jira的建库是在初始引导页面上完成的。
2)JIRA默认使用的数据库是HSql,迁移到MySQL,通过以下的配置改动。
a) 修改server.xml (路径:/jira/conf/server.xml)
第13行处:
<Context path="" docBase="${catalina.home}/atlassian-jira" reloadable="false">
<Resource name="jdbc/JiraDS" auth="Container" type="javax.sql.DataSource"
修改 username="root"
修改 password="mysql"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/jira?autoReconnect=true&useUnicode=true&characterEncoding=gbk"
删除minEvictableIdleTimeMillis and timeBetweenEvictionRunsMillis项 )
增加 validationQuery="select 1"/>
b)修改entityengine.xml (路径:/jira/atlassian-jira/WEB-INF/classes/entityengine.xml)
第95行修改为:
<datasource name=”defaultDS” field-type-name="mysql"
删除schema-name="PUBLIC"(此为hsql配置)
c) 拷贝一个mysql驱动到/jira/common/lib/ ,我从其它项目中找到一个:mysql-connector-java-3.0.16-ga-bin.jar
d)启动JIRA服务 。 地址:http://localhost:8080/
现在JIRA的数据库已经是MySQL了。
如果希望更进一步,将JIRA服务的依赖服务中加上MySQL服务,可以在注册表中更新(此方法我没有测试过)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\JIRA240209102746
JIRA240209102746由于是JIRA服务名太长而在注册表中随机生成的名字,在基中添加一个DependOnService多文本键值,把MySQL服务名添加进去就行了
这样的结果是JIRA依赖于MySQL,JIRA会在MySQL启动后启动,如果MySQL停止,JIRA会先于MySQL停止。
4. 破解
把下载到的atlassian-extras-0.7.19.jar拷贝到一个eclipse项目下面,右键->build path -> Add to Build path。
创建一个KeyGen.java,把下面的代码贴进来
import com.atlassian.license.LicensePair;
import java.io.*;
import java.security.KeyFactory;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;
public class KeyGen {
public static void main(String args[]) throws IOException {
try {
long l = 267L;
long l1 = System.currentTimeMillis();
long l2 = System.currentTimeMillis();
String s = "";
System.out.println("Keygen for JIRA Enterprise Edition.");
System.out.print("created by mydaj[ROR].");
do {
System.out.print("\nEnter your organization name: ");
for (int i = System.in.read(); i != 10 && i != 13; i = System.in
.read())
s = s + (char) i;
} while (s == "");
try {
PKCS8EncodedKeySpec pkcs8encodedkeyspec = new PKCS8EncodedKeySpec(
EncodedPrvKey);
KeyFactory keyfactory = KeyFactory.getInstance("DSA", "SUN");
java.security.PrivateKey privatekey = keyfactory
.generatePrivate(pkcs8encodedkeyspec);
String s1 = Long.toString(l, 10);
s1 = s1 + "^^";
s1 = s1 + Long.toString(l1, 10);
s1 = s1 + "^^";
s1 = s1 + Long.toString(l2, 10);
s1 = s1 + "^^";
s1 = s1 + s;
byte abyte0[] = s1.getBytes();
Signature signature = Signature.getInstance("SHA1withDSA");
signature.initSign(privatekey);
signature.update(abyte0);
byte abyte1[] = signature.sign();
LicensePair licensepair = null;
try {
licensepair = new LicensePair(abyte0, abyte1);
} catch (Exception exception1) {
exception1.printStackTrace();
}
System.out.println(s1);
System.out.println("Your license key is: ");
System.out.println(licensepair.toString());
} catch (Exception exception) {
exception.printStackTrace();
}
} catch (IOException ioexception) {
}
}
static byte EncodedPrvKey[] = { 48, -126, 1, 75, 2, 1, 0, 48, -126, 1, 44,
6, 7, 42, -122, 72, -50, 56, 4, 1, 48, -126, 1, 31, 2, -127, -127,
0, -3, 127, 83, -127, 29, 117, 18, 41, 82, -33, 74, -100, 46, -20,
-28, -25, -10, 17, -73, 82, 60, -17, 68, 0, -61, 30, 63, -128, -74,
81, 38, 105, 69, 93, 64, 34, 81, -5, 89, 61, -115, 88, -6, -65,
-59, -11, -70, 48, -10, -53, -101, 85, 108, -41, -127, 59, -128,
29, 52, 111, -14, 102, 96, -73, 107, -103, 80, -91, -92, -97, -97,
-24, 4, 123, 16, 34, -62, 79, -69, -87, -41, -2, -73, -58, 27, -8,
59, 87, -25, -58, -88, -90, 21, 15, 4, -5, -125, -10, -45, -59, 30,
-61, 2, 53, 84, 19, 90, 22, -111, 50, -10, 117, -13, -82, 43, 97,
-41, 42, -17, -14, 34, 3, 25, -99, -47, 72, 1, -57, 2, 21, 0, -105,
96, 80, -113, 21, 35, 11, -52, -78, -110, -71, -126, -94, -21,
-124, 11, -16, 88, 28, -11, 2, -127, -127, 0, -9, -31, -96, -123,
-42, -101, 61, -34, -53, -68, -85, 92, 54, -72, 87, -71, 121, -108,
-81, -69, -6, 58, -22, -126, -7, 87, 76, 11, 61, 7, -126, 103, 81,
89, 87, -114, -70, -44, 89, 79, -26, 113, 7, 16, -127, -128, -76,
73, 22, 113, 35, -24, 76, 40, 22, 19, -73, -49, 9, 50, -116, -56,
-90, -31, 60, 22, 122, -117, 84, 124, -115, 40, -32, -93, -82, 30,
43, -77, -90, 117, -111, 110, -93, 127, 11, -6, 33, 53, 98, -15,
-5, 98, 122, 1, 36, 59, -52, -92, -15, -66, -88, 81, -112, -119,
-88, -125, -33, -31, 90, -27, -97, 6, -110, -117, 102, 94, -128,
123, 85, 37, 100, 1, 76, 59, -2, -49, 73, 42, 4, 22, 2, 20, 42, 50,
-88, 30, 125, -37, 118, -50, 20, -82, -63, 0, 8, -36, 106, -9,
-110, 124, 107, 68 };
}
然后运行,运行时会输出:
Keygen for JIRA Enterprise Edition.
created by mydaj[ROR].
Enter your organization name: 我的组织 //红色你是输入的组织名称,按回车,生成下面的授权码。
nQnRuVQjMNKvkUbdslCxuuJVMMPjsVjvxhRiEqHnSaCAwG
mi2KZ5l22vqDgZ6JefcdRQwa2KI2808L3vMILMCAp6tQg5
QNqwVRmoonRomPMnMRuVQPnMQMPOPqRMOSxGBIAHdkbIek
AJcidKALFgcjCostUUnooutnruppqrpUUnooutnruppqrp
UU3c282H3d2Q243d2x243d2x27
然后在jira初始页面上填入即可。
resin下的配置,
其它都没有变化,只有server.xml中jndi定义有所区别改成如下:
<web-app id="/jira" root-directory="E:/workspace/jira3.6" >
<database>
<jndi-name>jdbc/JiraDS</jndi-name>
<driver type="com.mysql.jdbc.Driver">
<url>jdbc:mysql://127.0.0.1:3306/jira?autoReconnect=true&useUnicode=true&characterEncoding=gbk</url>
<user>root</user>
<password>mysql</password>
</driver>
<prepared-statement-cache-size>8</prepared-statement-cache-size>
<max-connections>20</max-connections>
<max-idle-time>30s</max-idle-time>
</database>
<jndi-link>
<jndi-name>java:comp/env/UserTransaction </jndi-name>
<foreign-name>java:comp/UserTransaction </foreign-name>
</jndi-link>
</web-app>