birt runtime 使用共享数据源JNDI

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
posted @ 2025-03-10 11:58  那时一个人  阅读(47)  评论(0)    收藏  举报