我们前面讲了几个数据源,今天我们来讲一下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服务器,预览模板就可以成功访问到模板了!
相关推荐
数据源(DataSource)是EJB在处理数据库连接时的重要组成部分,它提供了一种管理数据库连接的方式,使得应用程序能够高效地获取和释放数据库连接。在EJB开发中,正确配置数据源对于实现与数据库的稳定交互至关重要。...
6. **JNDI(Java Naming and Directory Interface)**:EJB通过JNDI查找其依赖的资源,如其他bean、数据源等,同时,客户端也通过JNDI来查找和绑定到EJB。 7. **JTA(Java Transaction API)**:EJB支持分布式事务...
### EJB API中文版知识点详解 #### 一、EJB技术概述 EJB(Enterprise JavaBeans)是J2EE(Java 2 Enterprise Edition)平台的关键技术之一,它为开发基于Java的企业级应用提供了强有力的支持。EJB规范定义了一种...
EJB-api.rar 是一个包含EJB规范API的压缩包,它为开发人员提供了访问和使用EJB技术的接口和类。以下是关于EJB的重要知识点的详细说明: 1. **EJB概述**: - EJB是Java EE(Java Platform, Enterprise Edition)的...
Java Transaction API (JTA) 提供了跨多个数据源的事务管理。EJB支持JTA,确保事务的一致性和原子性。 **5. EJB与JPA** Java Persistence API 是EJB 3.0引入的新特性,替代了传统的CMP,使得对象关系映射更加灵活和...
- **实体Bean(Entity Beans)**:代表持久化数据的对象,EJB3.0引入了JPA(Java Persistence API),通过注解可以直接将普通Java类映射为数据库表。 - **会话Bean(Session Beans)**:用于提供业务逻辑,可以是...
在这个“关于我的第一个EJB程序”中,我们将探讨EJB的基本概念、开发过程以及如何通过源码和工具来实现。 1. **EJB的基本概念** - **会话Bean(Session Beans)**:代表客户端的临时业务逻辑,用于处理单个用户...
EJB(Enterprise JavaBeans)是 Java 程序设计中比较高级的内容,也是 Java 程序员由入门级向高手级前进的门槛。下面是 EJB 的详细知识点: 一、EJB 概述 EJB 是 Java EE(Java Enterprise Edition)中的一种核心...
这个压缩包“Javaweb程序开发入门的源代码”包含了学习JavaWeb编程的基本步骤和实践示例,适合初学者进行深入理解。 在JavaWeb开发中,主要涉及以下几个核心知识点: 1. **Servlet**: Servlet是JavaWeb的基础,它...
EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可复用、安全且事务处理能力强大的企业级应用程序。EJB 3.0是EJB规范的一个重大革新,它极大地简化了开发过程,降低了学习曲线,使得更多开发者能够...
在提供的压缩包文件"TestEjb3"中,可能包含了EJB3入门教程的源代码或者示例项目。这些示例通常会展示如何创建和使用EJB3组件,如状态less会话bean、实体bean和消息驱动bean。通过学习和运行这些示例,开发者可以更好...
**EJB3.0开发入门 Step by Step** Enterprise JavaBeans(EJB)是Java平台企业版(J2EE,现在称为Java EE)的核心组件之一,它提供了一种规范化的、可扩展的方式来创建分布式的企业级应用。EJB3.0是EJB规范的一个...
EJB入门程序,包括远程、本地的比较,有状态、无状态的比较,以及会话Bean周期、拦截器、以来注入的学习。还有消息驱动Bean和实体Bean的学习。在使用之前有学会配置,否则程序不能运行。下载使用的人不...
《JBoss 7.1.1 + EJB 3.0 + MySQL 数据源配置详解》 在企业级Java应用开发中,JBoss Application Server(简称JBoss AS)是广泛使用的开源应用服务器,版本7.1.1是其稳定且功能强大的一个版本。EJB(Enterprise ...
MySql可通过JDBC驱动连接,并在persistence.xml中设置数据源。 5. **部署EJB**:将EJB项目打包成ejb-jar文件,然后在Jboss服务器上部署。Eclipse和JBoss Tools插件提供了便捷的部署功能。 6. **测试EJB**:可以...
本书是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。 本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与...
4. **依赖注入**:EJB 3.1引入了JSR 330(依赖注入)的标准,允许开发者使用`@Inject`注解来注入服务,如其他bean、数据源等,这使得代码更加模块化和可测试。 5. **异步方法**:EJB 3.1增加了对异步方法的支持,...
【标题】"Axis2+EJB整合开发 源代码"涉及的是在Java环境中,使用Axis2框架与Enterprise JavaBeans(EJB)技术进行Web服务整合的实践案例。这个标题暗示了我们将深入理解如何将EJB的功能集成到基于Axis2的Web服务中,...
EJB(Enterprise JavaBeans)是Java企业版(Java EE)的一部分,主要用于构建可复用的、分布式的、组件化的服务器端应用程序。EJB 3.0是EJB规范的一个重大改革,它极大地简化了EJB的开发过程,使得Java开发者能够...