在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文件放到这里即可