心无痕的博客

常用链接

统计

积分与排名

JAVA技术文档

JAVA精典网站

开发工具

数据库

最新评论

用连接池配置BIRT报表的数据库连接。。。。

现阶段我们在开发报表的时候,是使用jdbc链接数据库的,为提高报表的运行效率和稳定性,使用连接池进行管理。比较简便和低耦合的解决办法,使用jndi连接池。

 

jdbc和jndi的区别

JDBC -最基本的连接数据库的方式, 每次对数据库打交道的时候 ,连接数据库是需要实例下你实现连接数据库的方法或者类。
JNDI DataSource 英文全称是:Java Naming and Directory Interface java 命明接口,当服务启动时 事先把连接数据库的已经连好多条,具体多少条你可以设置,存放在tomcat容器里,用的时候可以直接使用, 不用再实例化得到连接, 相对与jdbc效率要快点

 

 

在eclipse设计报表的时候,我们使用jdbc链接数据库做测试,当到了tomcat运行环境中切换到jndi连接池,这是比较方便的开发方法。

实现步骤:

1.tomcat配置jndi连接池

在 {tomcat目录}\webapps\{项目名}\META-INF 中新增context.xml文件,配置代码如下

<?xml version="1.0" encoding="UTF-8"?>
<Context>
 
<Resource
      
auth="Container"
      name
="jdbc/travel_agency"
      type
="javax.sql.DataSource"
      maxIdle
="5"
      maxWait
="-1"
   driverClassName
="com.mysql.jdbc.Driver"
      username
="itravel"
   password
="709394"
      url
="jdbc:mysql://192.168.1.100/travel_agency?useUnicode=true&amp;characterEncoding=UTF-8"
      maxActive
="10"/>
</Context>

2.在web.xml中加入配置

 

<resource-ref>
    
<description>Database Source</description>
    
<res-ref-name>jdbc/travel_agency</res-ref-name>
    
<res-type>javax.sql.DataSource</res-type>
    
<res-auth>Container</res-auth>
</resource-ref>


3.实例报表中数据源代码

 

1 <data-sources>
2        <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="数据源" id="227">
3            <property name="odaDriverClass">com.mysql.jdbc.Driver</property> 
4            <property name="odaURL">jdbc:mysql://192.168.1.100/travel_agency</property> 
5            <property name="odaUser">itravel</property>
6            <encrypted-property name="odaPassword" encryptionID="base64">NzA5Mzk0</encrypted-property>
7            <property name="odaJndiName">java:comp/env/jdbc/travel_agency</property>
8        </oda-data-source>
9    </data-sources>

 

 

除了第7行 <property name="odaJndiName">java:comp/env/jdbc/travel_agency</property>,其余是我们的之前的配置。用了第7行的代码,表示该报表支持jndi数据源,birt在运行报表的时候,会先用jndi去连接,如果失败了再用jdbc链接,这样做的好处就是,我们在开发报表的时候,没有放到web环境中,可以使用jdbc,当放到tomcat中,因为有了第7行的配置。默认采用jdni连接。

4.步骤3中第6行密码的生成程序(JAVA程序)
package com.hollycrm.birt.security;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import sun.misc.BASE64Encoder;

public class CreateBirtBase64Password {

public static void main(String[] args) {

InputStreamReader inStreamReader = new InputStreamReader(System.in);

BufferedReader buffReader = new BufferedReader(inStreamReader);

System.out.println("请输入需要通过Base64加密的字符串:");

String strSrcPassword = null;

try {

strSrcPassword = buffReader.readLine();

if (strSrcPassword != null) {

// 通过用户输入的密码信息生成Base64的加密密码

String strBase64Password = new BASE64Encoder().encode(strSrcPassword.trim().getBytes());

System.out.println("您输入的原始密码为:" + strSrcPassword + "\r对应生成的Base64密码值为:" + strBase64Password);

}

catch (IOException e) {

e.printStackTrace();

}

}

}

posted on 2009-04-07 13:32 心无痕 阅读(2556) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航: