1. 问题描述
通过 JNDI 方式定义数据连接,首先在 Tomcat 服务器配置好 JNDI,然后在设计器中直接调用 JNDI 的名字,即可成功使用 JNDI 连接,连接步骤如下:
2. 实现步骤
使用版本及环境
下面以 Windows10 系统,Tomcat 8.5.5,jdk 1.8,连接 mysql 5.1.73 数据库进行 JNDI 连接说明,其他版本数据库步骤基本相同。
2.1 拷贝驱动
将连接数据库的J DBC 驱动拷贝到 Tomcat 安装目录下的%Tomcat_HOME%\lib下。
这边使用 mysql 5.1.73 数据库,所以把报表安装%FineReport_10.0%\webapps\webroot\WEB-INF\lib目录下的 mysql-connector-java-5.1.39-bin.jar 驱动包,拷贝到 Tomcat 服务器目录下%Tomcat_HOME%\lib。
2.2 Tomcat 服务器定义 JNDI
通过 context.xml 配置文件定义 JNDI
可在%Tomcat_HOME%\conf\context.xml配置文件中定义 JNDI,在最后一行 Context 上面添加定义 MySQL 数据库连接 JNDI 代码如下:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="yourusername" password="yourpassword" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://112.124.109.239:3306/test"/>
:是 JNDI 的名字;
:是数据库用户名和密码;
:是数据库驱动器;
:连接数据库的 URL。
2.3 修改报表工程下 web.xml 配置文件
部署工程时,注意在%Tomcat%\webapps\webroot\WEB-INF\下新建 web.xml 文件,内容添加如下内容:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
修改完成后,重新启动 Tomcat 服务器。
2.4 设计器连接 JNDI
注:由于 Tomcat 自身的限制,JNDI 只能在 Serverlet 或者 JSP 访问。
切换到 Tomcat 所在的工程,如何切换请查看 远程设计,新建 JNDI 数据连接,如下图:
Tomcat 服务器报表连接 JNDI 只需要输入 JNDI 的名字即可连接成功,如下图:
查询 JNDI 中的表,如下图: