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配置成功了。
?