birt runtime 使用共享数据源JNDI

news/2025/3/10 12:01:55/文章来源:https://www.cnblogs.com/qianxunman/p/18762337

BIRT Report 中使用 JNDI 数据源 时,必须确保 BIRT 正确引用了 Tomcat 中定义的 JNDI 数据源。下面是 JNDI URLBIRT 中的配置方法。


1. 确保 Tomcat 中已正确配置 JNDI 数据源

确保你已经在 context.xml 文件中定义了 JNDI 数据源,例如:

路径

$TOMCAT_HOME/conf/context.xml

示例配置

<Resource name="jdbc/odooDS"auth="Container"type="javax.sql.DataSource"driverClassName="org.postgresql.Driver"url="jdbc:postgresql://localhost:5432/odoo"username="your_db_user"password="your_db_password"maxTotal="20"maxIdle="5"maxWaitMillis="10000"/>

⚠️ 注意事项:

  • name="jdbc/odooDS":这个名称需要与 BIRT 中的 JNDI URL 保持一致。
  • 数据库驱动:确保 driverClassName 正确,例如:
    • PostgreSQL:org.postgresql.Driver
    • MySQL:com.mysql.cj.jdbc.Driver
    • Oracle:oracle.jdbc.OracleDriver
  • 确保 JDBC 驱动已放入 Tomcat 的 lib 目录
$TOMCAT_HOME/lib/postgresql-<version>.jar

2. 在 BIRT Report 中配置 JNDI 数据源

步骤一:打开 BIRT Report Designer

  1. 在 Eclipse 中打开你的 BIRT 报表项目。
  2. 打开你的 .rptdesign 文件。

步骤二:添加 JNDI 数据源

  1. 右键 -> Data Sources -> New Data Source
  2. 选择 JDBC Data Source,然后点击 Next
  3. Data Source Name:输入一个自定义名称(如 OdooDS)。
  4. 选择 JNDI 数据源,勾选 Use JNDI Data Source

步骤三:填写 JNDI URL

JNDI URL 输入框中填写 Tomcat 中定义的 JNDI 数据源名称,例如:

java:comp/env/jdbc/odooDS

📌 注意

  • java:comp/env/Tomcat 中 JNDI 数据源的默认前缀,jdbc/odooDS 是你在 context.xml 中配置的 name 值。
  • 如果你的 JNDI 名称是其他值,比如 jdbc/myDataSource,则改为:
java:comp/env/jdbc/myDataSource

3. 在 BIRT 服务器环境中引用 JNDI 数据源

检查 web.xml

确保 BIRT Web 应用的 web.xml 文件中正确声明了 JNDI 数据源。

路径:

$TOMCAT_HOME/webapps/birt/WEB-INF/web.xml

示例配置:

<resource-ref><description>Odoo Data Source</description><res-ref-name>jdbc/odooDS</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth>
</resource-ref>

4. 重启 Tomcat 并测试报表

  1. 重启 Tomcat
sudo systemctl restart tomcat
  1. 访问 BIRT 报表,确保数据源连接成功。

5. 排错指南

如果报错,检查以下几点:

错误信息 原因 解决方案
javax.naming.NameNotFoundException BIRT 找不到 JNDI 数据源 确保 context.xmlweb.xml 名称一致
ClassNotFoundException JDBC 驱动未加载 确保驱动放入 $TOMCAT_HOME/lib 目录
CannotCreatePoolException 数据库连接失败 检查 URL、用户名、密码是否正确
NullPointerException JNDI 数据源未正确初始化 确保数据源名称、JNDI URL 一致

你可以通过以下命令检查 JNDI 绑定情况:

tail -f $TOMCAT_HOME/logs/catalina.out

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896758.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

No.44 ES6---Babel转码器(安装有点问题,用到再说)

一、Babel转码器Babel是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。 这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。 1.浏览器支持性查看https://caniuse.com/2.Babel 官网https://babeljs.io/3.转码示例原始…

kubesphere中查看argocd登陆密码

获取argocd密码PASSWORDkubectl get secret argocd-initial-admin-secret -nargocd -o jsonpath="{.data.password}"|base64 -d 登陆: admin/PASSWORD

rockchip sdk使用make menuconfig无法删除选项文字(MobaXterm)

问题:在使用make menuconfig编辑内核配置时,按退格键删除不了相关选项,如下图所示:解决办法: 1. 在全局设置部分,把这里的退格键发送^H取消勾选:2. 在开启一个新会话时,进行同样的设置:

线控转向控制系统SbW

线控转向控制系统是一种将驾驶员对方向盘的操作信号转换为电信号,再传递给转向机,从而控制车轮完成相应的转向动作的技术。经纬恒润推出的线控转向控制系统SbW,分为路感模拟器与转向执行器,皆采用全冗余设计及主从控制方案,同时,按照ISO26262与DIN70065进行功能安全与降级…

uniapp使用scroll-view嵌套时不触发滚动事件

参考链接:微信文档:https://developers.weixin.qq.com/miniprogram/dev/component/scroll-view.html uniapp文档: https://uniapp.dcloud.net.cn/component/scroll-view.html布局代码:<scroll-view scroll-y class="scroll-box" bindscrolltolower="scro…

OpenCL 调用关系

学习 OpenCL,概念很多,理解不深,所以看示例代码时比较糊涂。 于是,把调用关系简单画了个图:希望能加深理解吧。

SAP SMW0 配置EXCEL 上载模板,供其他tcode 下载模板

本文演示如何在自定义的tcoe 中,可以点击下载保存好的默认excel模板: 1. 打开 SMWO: 筛选 直接点新增 点浏览,找你本机的 excel 模板,进行上载 上载完后, 回到上载程序,点击,就能弹出需要下载的excel模板了

OP51常见问题(自动安装座板)

座板放置歪斜 1.夹爪夹住座板后,上升-->翻转180-->横移-->下降放置。需要准确放入铆钉内。 2.因为座板和夹爪都是金属件,所以旋转和横移过程中可能会发生水平方向的偏移,导致放置时对孔失败。 如果放置失败座板浮起,对光检测到了,上方的大压块会下压一次,尝试将…

YASKAWA点焊机器人维修的流程

在现代工业生产中,工业机器人发挥着至关重要的作用,而YASKAWA点焊机器人更是其中的佼佼者。然而,就像任何设备一样,机器人也会遭遇故障,这时候安川机器人维修、YASKAWA机器人维修以及工业机器人维修就显得尤为关键。一、机器人故障的常见类型YASKAWA点焊机器人在长时间的工…

Camstar中ToggleContainer标题样式改成建模框一样的

😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

Unpivot Columns与Pivot Columns的连用

一、背景 需要进行数据清洗二、 数据准备 三、操作步骤 3.1 上传数据 +3.2 UnpivotOtherColumns3.3 AddColumn 3.4 RemoveColumns3.5 Pivot

pd将字符串默认为NaN

一、背景 有些字符串会被pandas都城NaN。但是有时不想这么操作。二、数据准备 三、代码展示import pandas as pddf1 = pd.read_excel(NaNTest.xlsx) df2 = pd.read_excel(NaNTest.xlsx, na_values=[], keep_default_na=False)df = pd.concat([df1, df2], axis=1) print(df) 四、…