在Jira的插件开发中是可以使用jdbc的,如果读者有JIRA Development Cookbook这本书,可以参看362页,Connection对象可以直接得到
Connection conn = new DefaultOfBizConnectionFactory().getConnection();
但是就算我们拿到了Connection直接写jdbc代码是很痛苦的,如果能使用Spring提供的JdbcTemple那会好很多,初始化JdbcTemple需要DataSource,在Jira的api里面我实在没找到能得到DataSource的办法,但是我可以得到数据库的连接信息
DatasourceInfo datasourceInfo = new DefaultOfBizConnectionFactory().getDatasourceInfo();
JdbcDatasourceInfo jdbcDatasourceInfo = datasourceInfo.getJdbcDatasource();
//数据库连接信息
jdbcDatasourceInfo.getUsername();
jdbcDatasourceInfo.getPassword();
jdbcDatasourceInfo.getDriverClassName();
jdbcDatasourceInfo.getUri();
有了这些信息就好办了,我写了工厂来帮我产生DataSource
import com.atlassian.jira.ofbiz.DefaultOfBizConnectionFactory;
import org.apache.commons.dbcp.BasicDataSource;
import org.ofbiz.core.entity.config.DatasourceInfo;
import org.ofbiz.core.entity.config.JdbcDatasourceInfo;
public class DataSourceFactory {
private static BasicDataSource dataSource;
public static BasicDataSource getDataSource() {
if (dataSource == null) {
DatasourceInfo datasourceInfo = new DefaultOfBizConnectionFactory().getDatasourceInfo();
JdbcDatasourceInfo jdbcDatasourceInfo = datasourceInfo.getJdbcDatasource();
dataSource = new BasicDataSource();
dataSource.setUsername(jdbcDatasourceInfo.getUsername());
dataSource.setPassword(jdbcDatasourceInfo.getPassword());
dataSource.setDriverClassName(jdbcDatasourceInfo.getDriverClassName());
dataSource.setUrl(jdbcDatasourceInfo.getUri());
//一下参数根据情况做配置
dataSource.setInitialSize(3);
dataSource.setMaxActive(20);
dataSource.setMaxIdle(6);
dataSource.setMaxWait(30000);
dataSource.setDefaultAutoCommit(true);
dataSource.setValidationQuery("select 1");
dataSource.setValidationQueryTimeout(3);
dataSource.setRemoveAbandoned(true);
dataSource.setRemoveAbandonedTimeout(300);
dataSource.setTestOnBorrow(true);
dataSource.setTestOnReturn(true);
dataSource.setTestWhileIdle(true);
dataSource.setTimeBetweenEvictionRunsMillis(300000);
dataSource.setMinEvictableIdleTimeMillis(60000);
}
return dataSource;
}
}
既然DataSource得到了,JdbcTemple也就好办了
在Jira的lib环境里面是没有spring-jdbc的jar包的,如果需要使用JdbcTemple还需要引入该jar
顺便聊聊如何在Jira的插件开发中引入第三方jar
在项目的resources目录下建立文件夹META-INF,META-INF下继续建立文件夹lib,然后将第三方的jar文件放到这里即可