1. 问题描述
在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下:
2. 实现步骤
· 使用版本及环境
下面以Windows XP系统,tomcat 5.5,jdk 1.6,连接SQLserver2000数据库进行JNDI连接说明,其他版本数据库步骤基本相同。
2.1 拷贝驱动
将连接数据库的JDBC驱动拷贝到Tomcat安装目录下的%Tomcat_HOME%\common\lib下。这边使用SQLserver2000数据库,所以把报表安装%FineReport_8.0%\WebReport\WEB-INF\lib目录下的sqljdbc.jar驱动包,拷贝到Tomcat服务器目录下。
2.2 Tomcat服务器定义JNDI
· 方法一:通过context.xml配置文件定义JNDI
可在%Tomcat_HOME%\conf\context.xml配置文件中定义JNDI,在最后一行Context上面添加定义SQLserver2000数据库连接JNDI代码如下:
1. <Resource name="FRTOMCATJNDI" auth="Container" type="javax.sql.DataSource" username="sa" password="sa" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" maxIdle="30" maxWait="10000" maxActive="100" url="jdbc:sqlserver://192.168.100.107:1433;databaseName=FRTest" />
name="FRTOMCATJNDI":则是JNDI的名字;username="sa" password="sa" :是数据库用户名和密码;driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver":是数据库驱动器;url="jdbc:sqlserver://192.168.100.107:1433;databaseName=FRTest":连接数据库的url。
· 方法二:通过Admin模块定义JNDI
进入tomcat的Admin模块,并选择中左边的datasource结点,网页右边就列出Tomcat中所有的可用全局JDNI连接,如果没有JNDI连接则可以到下一步看如何进行设置,如下图:
注意:从Tomcat5.5开始core包或者windows的安装包中将没有admin模块,需要用户去Tomcat官方网站上下载,所以建议大家直接使用context.xml配置文件定义JNDI。
点击右上角Data Source Actions下拉框里面选择Create New Data Source,新建数据连接如下编辑:
保存设置和提交修改Tomcat的JNDI配置。
然后在%Tomcat_HOME%\conf\context.xml配置文件里面添加调用上面定义jndi连接,在最后一行Context上面添加代码如下:
1. <ResourceLink global="FRTOMCATJNDI" name="FRTOMCATJNDI" type="javax.sql.DataSource"/>
如上两种方法都可以定义jndi连接。
2.3 修改报表工程下web.xml配置文件
部署工程时,注意在%Tomcat 5.5%\webapps\jndi\WEB-INF\web.xml配置文件中servlet节点上添加如下内容:
1. <resource-ref>
2. <description>Resource</description>
3. <res-ref-name>FRTOMCATJNDI</res-ref-name>
4. <res-type>com.microsoft.sqlserver.jdbc.SQLServerDriver</res-type>
5. <res-auth>Container</res-auth>
6. </resource-ref>
2.4 报表连接JNDI
注意:由于Tomcat自身的限制,JNDI只能在Serverlet或者JSP访问,所以设计报表时先用JDBC连接,发布时再换成JNDI。
Tomcat服务器报表连接JNDI只需要输入JNDI的名字即可连接成功,如下图:
2.5 预览报表
重新启动Tomcat服务器,浏览报表,能访问到报表内容,则JNDI配置成功了。