`

报表引擎API开发入门— EJB程序数据源

阅读更多

我们前面讲了几个数据源,今天我们来讲一下EJB数据源,这篇讲完我们数据源这部分就讲完了。数据连接不需要直接访问数据库,而是使用EJB做为数据源。FR通过定义程序数据集使用EJB的相关类获取到EJB数据源,然后转为我们里面的二维表作为报表数据源使用,进行展示。例如如下获取到ejb数据所做的模板。

一、 实现原理

FineReport报表的数据来源可以是任何类型的数据,因为FineReport是通过AbstractTableData抽象类来读取数据源的,因此用户只要实现了AbstractTableData抽象类,也就可以用自定义类型的程序数据集,FineReport报表引擎就能够读取定义的数据源作为报表数据源使用。AbstractTableData抽象类主要有5个方法,具体使用可参考报表引擎API开发入门—简单程序数据集。EJB程序数据源准备数据使用方法init(),获取到ejb的javaBean,从而保存数据到ArrayList中。

二、 实现步骤

2.1 定义程序数据源
定义DataModelDemo这个类代码如下:

package com.fr.data;
import javax.naming.*;
import javax.ejb.*;
import java.rmi.*;
import java.util.*;
import com.fr.data.AbstractTableData;
import examples.ejb.ejb20.basic.beanManaged.*;
public class DataModelDemo extends AbstractTableData {
    private String[] columnNames;
    private ArrayList valueList = null;
    public DataModelDemo() {
        String[] columnNames = { "Name", "Score" };
        this.columnNames = columnNames;
    }
    // 实现其他四个方法
    public int getColumnCount() {
        return columnNames.length;
    }
    public String getColumnName(int columnIndex) {
        return columnNames[columnIndex];
    }
    public int getRowCount() {
        init();
        return valueList.size();
    }
    public Object getValueAt(int rowIndex, int columnIndex) {
        init();
        return ((Object[]) valueList.get(rowIndex))[columnIndex];
    }
    // 准备数据
    public void init() {
        // 确保只被执行一次
        if (valueList != null) {
            return;
        }
        // 保存得到的结果集
        valueList = new ArrayList();
        Context ctx = null;
        Account ac = null;
        AccountHome home = null;
        try {
            // Contact the AccountBean container (the "AccountHome") through
            // JNDI.
            ctx = new InitialContext();
            home = (AccountHome) ctx
                    .lookup("java:/comp/env/BeanManagedAccountEJB");
            double balanceGreaterThan = 100;
            Collection col = home.findBigAccounts(balanceGreaterThan);
            if (col != null) {
                // 用对象保存数据
                Object[] objArray = null;
                Iterator iter = col.iterator();
                while (iter.hasNext()) {
                    Account bigAccount = (Account) iter.next();
                    objArray = new Object[2];
                    objArray[0] = bigAccount.getPrimaryKey();
                    objArray[1] = new Double(bigAccount.balance());
                    // 在valueList中加入这一行数据
                    valueList.add(objArray);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

 

 

 

注:使用之前需要先导入ejb的jar包
2.2 编译程序数据源
将编译后的DataModelDemo.class放到项目的WEB-INF下面的classes目录下,因为DataModelDemo.java属于包com.fr.data,所以DataModelDemo.class需要放到classes\com\fr\data目录下。
2.3 配置程序数据源
新建报表,在报表数据集中新建程序数据源,选择我们定义好的程序数据集,如下图,名字可以自定义,如Pro。

2.4 使用程序数据源
配置好程序数据源后便可以使用定义的Pro程序数据集了,与其他类型的数据集使用方法是相同的,可以通过拖拽方法实现单元格数据列绑定。如下图

保存模板到ejb项目环境下,启动Examples Server服务器,预览模板就可以成功访问到模板了!

0
1
分享到:
评论

相关推荐

    ejb数据源配置文件

    数据源(DataSource)是EJB在处理数据库连接时的重要组成部分,它提供了一种管理数据库连接的方式,使得应用程序能够高效地获取和释放数据库连接。在EJB开发中,正确配置数据源对于实现与数据库的稳定交互至关重要。...

    EJB api(EJB英文的API)非常好用

    6. **JNDI(Java Naming and Directory Interface)**:EJB通过JNDI查找其依赖的资源,如其他bean、数据源等,同时,客户端也通过JNDI来查找和绑定到EJB。 7. **JTA(Java Transaction API)**:EJB支持分布式事务...

    EJB API中文版

    ### EJB API中文版知识点详解 #### 一、EJB技术概述 EJB(Enterprise JavaBeans)是J2EE(Java 2 Enterprise Edition)平台的关键技术之一,它为开发基于Java的企业级应用提供了强有力的支持。EJB规范定义了一种...

    EJB-api.rar

    EJB-api.rar 是一个包含EJB规范API的压缩包,它为开发人员提供了访问和使用EJB技术的接口和类。以下是关于EJB的重要知识点的详细说明: 1. **EJB概述**: - EJB是Java EE(Java Platform, Enterprise Edition)的...

    一个EJB项目入门例程

    Java Transaction API (JTA) 提供了跨多个数据源的事务管理。EJB支持JTA,确保事务的一致性和原子性。 **5. EJB与JPA** Java Persistence API 是EJB 3.0引入的新特性,替代了传统的CMP,使得对象关系映射更加灵活和...

    EJB3.0(入门教程+最新教程+文档+应用开发详解+编程实例(源代码)).rar

    - **实体Bean(Entity Beans)**:代表持久化数据的对象,EJB3.0引入了JPA(Java Persistence API),通过注解可以直接将普通Java类映射为数据库表。 - **会话Bean(Session Beans)**:用于提供业务逻辑,可以是...

    关于我的第一个EJB程序

    在这个“关于我的第一个EJB程序”中,我们将探讨EJB的基本概念、开发过程以及如何通过源码和工具来实现。 1. **EJB的基本概念** - **会话Bean(Session Beans)**:代表客户端的临时业务逻辑,用于处理单个用户...

    EJB入门[整理].pdf

    EJB(Enterprise JavaBeans)是 Java 程序设计中比较高级的内容,也是 Java 程序员由入门级向高手级前进的门槛。下面是 EJB 的详细知识点: 一、EJB 概述 EJB 是 Java EE(Java Enterprise Edition)中的一种核心...

    Javaweb程序开发入门的源代码Javaweb程序开发入门的源代码.rar

    这个压缩包“Javaweb程序开发入门的源代码”包含了学习JavaWeb编程的基本步骤和实践示例,适合初学者进行深入理解。 在JavaWeb开发中,主要涉及以下几个核心知识点: 1. **Servlet**: Servlet是JavaWeb的基础,它...

    《EJB 3.0入门经典》 源码

    EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可复用、安全且事务处理能力强大的企业级应用程序。EJB 3.0是EJB规范的一个重大革新,它极大地简化了开发过程,降低了学习曲线,使得更多开发者能够...

    EJB3入门例子

    在提供的压缩包文件"TestEjb3"中,可能包含了EJB3入门教程的源代码或者示例项目。这些示例通常会展示如何创建和使用EJB3组件,如状态less会话bean、实体bean和消息驱动bean。通过学习和运行这些示例,开发者可以更好...

    EJB3.0开发入门 Step by Step (图文讲解)

    **EJB3.0开发入门 Step by Step** Enterprise JavaBeans(EJB)是Java平台企业版(J2EE,现在称为Java EE)的核心组件之一,它提供了一种规范化的、可扩展的方式来创建分布式的企业级应用。EJB3.0是EJB规范的一个...

    EJB入门程序

    EJB入门程序,包括远程、本地的比较,有状态、无状态的比较,以及会话Bean周期、拦截器、以来注入的学习。还有消息驱动Bean和实体Bean的学习。在使用之前有学会配置,否则程序不能运行。下载使用的人不...

    jboss7.1.1+ejb3.0+MySQL数据源配置

    《JBoss 7.1.1 + EJB 3.0 + MySQL 数据源配置详解》 在企业级Java应用开发中,JBoss Application Server(简称JBoss AS)是广泛使用的开源应用服务器,版本7.1.1是其稳定且功能强大的一个版本。EJB(Enterprise ...

    使用Eclipse+Jboss+MySql开发EJB

    MySql可通过JDBC驱动连接,并在persistence.xml中设置数据源。 5. **部署EJB**:将EJB项目打包成ejb-jar文件,然后在Jboss服务器上部署。Eclipse和JBoss Tools插件提供了便捷的部署功能。 6. **测试EJB**:可以...

    EJB3.0入门经典源代码.part1

    本书是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。  本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与...

    ejb-3_1-pr-api.zip_EJB a_ejb_ejb api

    4. **依赖注入**:EJB 3.1引入了JSR 330(依赖注入)的标准,允许开发者使用`@Inject`注解来注入服务,如其他bean、数据源等,这使得代码更加模块化和可测试。 5. **异步方法**:EJB 3.1增加了对异步方法的支持,...

    axis2+EJB整合开发 源代码

    【标题】"Axis2+EJB整合开发 源代码"涉及的是在Java环境中,使用Axis2框架与Enterprise JavaBeans(EJB)技术进行Web服务整合的实践案例。这个标题暗示了我们将深入理解如何将EJB的功能集成到基于Axis2的Web服务中,...

    ejb3.0入门图文教程

    EJB(Enterprise JavaBeans)是Java企业版(Java EE)的一部分,主要用于构建可复用的、分布式的、组件化的服务器端应用程序。EJB 3.0是EJB规范的一个重大改革,它极大地简化了EJB的开发过程,使得Java开发者能够...

Global site tag (gtag.js) - Google Analytics