以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接。由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带,所以可以采取下面的方法来使用服务器中的JNDI连接。原理:先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成JNDI连接,然后配置好服务器中的JNDI连接,然后按照我们下面章节所说的部署好服务器,这样就可以通过WEB浏览器浏览到使用JNDI连接的报表了。
首先使用JDBC方式连接数据库oracle9i,然后使用oracle9i数据库中的数据库表sale制作模板jndi.cpt保存可以预览,如下图:
然后,回到定义数据库连接,新建一个JNDI方式的数据连接oracle9i,将jndi的名字命名为jdbc/oracle,删掉前面建的连接方式JDBC的oracle9i数据连接,确定保存。如下图:
此时的模板jndi.cpt是无法预览的,因为我们只定义了jndi的名字,没有建立jndi连接。
接下来讲,如何在WEBSPHERE服务器中配置JNDI连接。
登录WEBSPHERE的管理平台,选择环境>Websphere变量>ORACLE_JDBC_DRIVER_PATH在值的位置上输入驱动程序所在的目录如:C:\WebReport\WEB-INF\lib\ojdbc14.jar(oracle的jdbc驱动程序的具体位置),如下图:
进入全局安全性>JAAS配置>J2C认证数据>新建输入别名,用户标识和密码,别名:oracle(可以随便起),用户标识(oracle用户名,^连接oracle数据库使用的用户名和密码):system,密码:dba,如下图:
选择资源>JDBC提供者>新建,步骤一:oracle,步骤二:Oracle jdbc driver,步骤三:连接池数据源,如下图:
点击下一步,将类路径改为${ORACLE_JDBC_DRIVER_PATH},其他不变,然后保存应用,如图:
保存完上述应用后,点击ORACLE JDBC DRIVER这个应用,在右上角可以看到“数据源”,点选。我们将配置数据源>新建,名称--oracle,JNDI名称--jdbc/oracle,组件管理的认证别名--frserver2003node1/oracle9i(为上一步全局安全性中的配置,根据自己起的名字来选择),URL里输入jdbc:oracle:thin:@192.168.100.111:1521:oracle9i(根据ORACLE数据库的位置调节),其他为默认值,保存。然后选择这个数据源,点击测试连接,最终结果如图:说明jndi数据源配置成功了。
本步骤就是连接模板和jndi数据源的关键。
接下来,我们选择%FR_HOME%/WebReport/ WEB-INF文件夹下的web.xml(注:制作的报表jndi.cpt保存在%FR_HOME%/WebReport/ WEB-INF/reportlets/com/doc/jndi.cpt),用记事本类似的工具打开 web.xml,在其中添加一部分内容。
1. <resource-ref>
2. <description>Oracle DB connection</description>
3. <res-ref-name>jdbc/oracle</res-ref-name>
4. <res-type>javax.sql.DataSource</res-type>
5. <res-auth>Container</res-auth>
6. </resource-ref>
然后将WebReport这个文件夹打包WebReport.war。具体部署过程请参照FineReport文档中Websphere服务器的部署。其中有个步骤与文档中有区别,在映射资源引用到资源中需要选择jndi名字和使用缺省方法中选择认证方法,另需要填jndi名字。上文设定jndi名字为:jdbc/oracle,认证方法为:frserver2003node1/oracle9i,具体如图:
部署成功以后我们打开浏览器,填入URL:span class="paths"->http://localhost:9080/WebReport/ReportServer?reportlet=/com/doc/jndi.cpt
若出现下图所示画面,则说明配置成功。