刘苍松-J2EE-3 企业Bean
【计算机应用】_j2ee_期刊发文热词逐年推荐_20140723
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
科研热词 j2ee spring struts hibernate 框架 web服务 ejb soap j2ee1.4 acegi 高校教学评估 马可夫 面向服务的体系结构 面向服务架构 集群 过滤器 轻量级框架 轻量级 软件体系结构 车辆监控 资源共享 负载收集 负载指标 负载均衡 设计 认证管理器 认证 自恢复进化 自动化测试系统 聚合 网站内容管理 网格构件 统一数据模型 统一建模语言 系统架构 相关性分析法 电子运行维护系统 电子政务 灰色关联法 消息驱动bean(mdb) 模型机 模型-视图-控制器 构架 构件代理 构件cache 权限管理 智能元搜索引擎 智能交通系统 映射 日历队列 数据持久化层 数据字典
2008年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
政府内部服务库 政府公共总线 放缩算法 授权 持久化 扩展性 快件检验检疫 异构平台 应用服务器 实验数据管理 实体bean 多源数据 多层软件体系结构 多层次模糊综合绩效评价 多媒体数据存储 可扩展标记语言 动态自适应 共享系统 信息系统 信息模型 供应链管理系统 供应商绩效评估 会话bean 企业bean(ejb2.1) 企业bean(ejb) 产品生命周期管理 交易中间件 互操作性 中药药性 业务支撑系统 wsdl ws-i概要 wicket web数据库分页 web报表 webgis web.xml web services web tld tag struts框架 ssi soa session bean servlet/jsp servlet oracle intermedia o/r myeclipse mvc设计模式 mvc md5 jsp技术
EJB三种企业bean
EJB三种企业bean1、会话Bean用于实现业务逻辑,分为有状态Bean和无状态Bean,有状态Bean可以维护会话状态,无状态Bean不维护会话状态。
要维护会话状态,意味着EJB容器要为每个用户创建一个Bean实例,并通过该实例保存着与用户的会话状态。
不维护会话状态,意味着一个bean实例不需要保存与某个用户的会话状态,这时一个bean实例可以为多个用户服务。
每当客户端发出EJB调用请求,容器就会选择一个Session Bean来为客户端服务。
会话Bean可以直接访问数据库,但更多时候它是通过实体Bean实现数据访问。
开发一个Session Bean,需要定义接口和Bean Class。
接口分为远程(Remote)和本地(Local)接口,EJB3.0中不需两者都实现,但两者都实现比较好。
远程接口:定义了Session Bean的业务方法,这些方法可以被EJB容器之外的应用访问到。
本地接口:定义了Session Bean的业务方法,这些方法可以被同处于EJB容器内的其他应用使用。
因为Local接口允许bean之间直接通过内存交互,没有分布式对象协议的开销,从而改善了性能。
Bean类(bean class):包含了业务逻辑,必须具备一个远程或本地接口。
在bean里我们应该实现接口的业务逻辑,尽管不是必须的,但我们没有理由不这么做。
2、实体Bean代表真实物体的数据,在EJB3.0中,它仅作为普通Java对象来使用,它负责跟数据库表进行对象与关系映射(O/R Mapping)。
如果实体Bean对象需要返回客户端,必须实现Serializable接口。
3、消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件。
它能够收发异步JMS 消息,并能够轻易地与其它EJB交互。
它特别适合用于当一个业务执行的时间很长,而执行结果无需实时向用户反馈的这样一个场合。
基于J2EE的供应链数据管理系统设计
基于J2EE的供应链数据管理系统设计
张博文
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2024()5
【摘要】J2EE是一种基于Java技术的企业级应用开发平台,因其具有跨平台性、可伸缩性和安全性等特点,被广泛应用于企业级应用的开发中。
供应链数据管理系统的设计与实现采用J2EE平台,可有效提高系统的稳定性、扩展性和维护性,更好地满足企业供应链管理的需求。
详细介绍了一种基于J2EE平台的供应链数据管理系统的设计方案,包括系统构成、系统功能及系统设计,展示了利用J2EE技术构建供应链数据管理系统的方法,提高了整个供应链的运作效率和企业的竞争力。
【总页数】4页(P85-87)
【作者】张博文
【作者单位】中海油物装采购中心
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于J2EE和纯XML技术架构的元数据管理系统设计与实现
2.基于J2EE的GSM-R数据管理系统设计与实现
3.基于J2EE轻量级框架的ERP供应链管理系统设计
4.基于区块链技术的农产品供应链数据管理系统设计
因版权原因,仅展示原文概要,查看原文内容请购买。
EJB3学习笔记
EJB是企业级系统的核心部分,用于运行业务逻辑,是处理业务逻辑的一种方案(O/R Mapping)。
EJB有下面3种类型:Session Bean分为Stateless Session Bean和Stateful Session Bean两种Entity Bean分为Bean-Managed Persistence Entity Bean(BMP)和Container-Managed Persistence Entity Bean(CMP)。
BMP要在Bean中包含访问数据库的SQL代码,故称为Bean-Managed;后者不需要编写SQL代码,SQL代码由Container或者包含Container的服务器自动产生,故称为Container-Managed。
Message-Driven Bean专门接收和处理消息,而发送消息可以是一般的Session Bean、Entity Bean或者其他类型的程序。
JPA(Java Persistence API)是EJB 3.0(JSR220)持久层的实现规范。
JPA式样在制定的过程中,充分借鉴了Hibernate的优点,JPA的很多概念都可以从Hibernate中找到原型。
目前,JPA规范有三种实现方案:Hibernate EntityManager、OpenJPA、Oracle TopLink Essentials。
Hibernate EntityManager实现了EJB3.0 JPA规范。
Hibernate EntityManager封装了成熟具有强大功能Hibernate core功能,你可以在Hibernate EntityManager里使用Hibernate API,SQL,JDBC等。
事实上,可以通过Hibernate EntityManager,非常容易地把一个Hibernate 应用改造成JPA应用。
Hibernate EntityManager可以作为一个标准的Java Persistence provider,使用在任何Java EE 5.0应用服务器以及标准EJB 3.0容器中,或者JDK 5.0环境中。
《JAVA培训课件:J2EE企业级开发实战》
本课程旨在帮助学员掌握J2EE企业级开发的核心技术与应用,通过实际项目 案例培养学员的实战能力和团队协作能力。
课程简介
JAVA培训课程概述
简要介绍本课程的目标和内容,为学员提供 全面的概览。
为什么选择J2EE企业级开发实战课程
解释为什么选择本课程以及它对学员职业发 展的重要性。
课程目标
1 学习J2EE企业级开发的
基本概念和技术
深入了解J2EE开发的核心概 念和基本技术。
2 掌握常用的开发工具和
框架
介绍常用的J2EE开发工具和 框架,并帮助学员掌握它们 的使用。源自3 实战项目案例分析和实施
通过分析实际案例并进行实施,提升学员的实战经验和解决问题的能 力。
课程内容
JAVA语言基础回顾
通过实践项目和案例分析, 提升学员的实战经验和技能。
通过项目和团队合作,锻炼 学员的团队协作和沟通能力。
3 就业竞争力提升
通过掌握企业级开发技术,提升学员在就业市场中的竞争力。
回顾JAVA语言的核心概念和 基础知识,为后续学习打下 基础。
J2EE架构和核心技术
介绍J2EE架构和核心技术, 如EJB、JPA等,深入了解企 业级开发的基本原理。
Servlet和JSP开发
学习使用Servlet和JSP进行 Web应用开发,掌握请求处 理和页面渲染的技术。
数据库连接与操作
讲解如何连接和操作数据库, 涵盖SQL语句的编写和常见 的数据库操作。
前端页面设计与响应
教授前端页面的设计原则和 技巧,以及如何处理用户请 求并生成响应。
企业级开发框架介绍 与实战
介绍流行的企业级开发框架, 如Spring和Hibernate,并进 行实战演练。
J2EE技术概述
Huihoo - Enterprise Open Source
16
实体bean(Entity Bean)
定义:对于客户机,实体 enterprise bean 是一种持久性对象,它 代表一个存储在持久性存储器(例如,一个数据库)中的实体的 对象视图,或者是一个由现有企业应用程序实现的实体。 简单的讲实体bean 代表了一种数据集,可以访问这些数据集来满
Huihoo - Enterprise Open Source
10
JSP Custom tags
1.ห้องสมุดไป่ตู้
2.
标记库包含一个标记库描述符(TLD)和用于实现Custom tag 的Java类 在翻译阶段,JSP容器将使用TLD来验证页面中的所有的tag是 否都被正确的使用。 标记处理程序只是一个简单的适配器,而真正的逻辑是在另一 个类中实现的,标记处理程序只是提供了一个供其他的可复用 的类的JSP接口 用法: <%@ taglib prefix="huihoo" uri="/huihoo.tld" %> JAKARTA的I18N标记库
/java/jsp/tablibs.zip
3.
4. 5.
Huihoo - Enterprise Open Source
11
Servlet
1.ServletConfig 一个ServletConfig对象是servlet container在servlet initialization的时 候传 递给servlet的 2.会话跟踪 1) Session (推荐使用) 2) cookie 3) URL Rewriting 3.SingleThreadModel Servlet specification上建议,不要使用synchronized, 而使用SingleThreadModel。
J2EE与三层Web应用开发
J2EE与三层Web应用开发
孟庆强;宗平
【期刊名称】《计算机与现代化》
【年(卷),期】2004(000)003
【摘要】Java Beans是Java中的轻量级组件,用于封装数据或商业逻辑.本文论述了J2EE多层开发模型中JSP与Java Beans的作用,并结合实例着重论述Web应用中Java Beans的开发与应用.
【总页数】4页(P50-53)
【作者】孟庆强;宗平
【作者单位】河海大学计算机与信息学院,江苏,南京,211100;河海大学计算机与信息学院,江苏,南京,211100
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于J2EE和MVC模式的Web应用开发方法研究 [J], 唐勇;汪丹平
2.基于中间件J2EE技术规范的Web应用开发分析与研究 [J], 袁剑秋;周家纪;李军;褚媛
3.基于J2EE的MVC设计模式的WEB应用开发的探讨 [J], 倪宁
4.基于J2EE的MVC设计模式的WEB应用开发的探讨 [J], 倪宁
5.基于J2EE的三层WEB应用开发 [J], 王莉娜
因版权原因,仅展示原文概要,查看原文内容请购买。
刘苍松-JAVA 安全
长城教育—Java软件实战学院
密码块 与 填充
• 加密单一位或位块(称为块)。 • 块(称为密码块)通常是 64 位大小。 • 如果消息大小不是 64 位的整数倍,那么必须填充短 块. • 有许多方法填充块,譬如全用零或一。 • JDK 1.4 支持下列填充技术:
• • • • 无填充 PKCS5 OAEP SSL3
JAVA 密码术 之 消息摘要技术
刘苍松
长城教育—Java软件实战学院
API
• Java 密码术扩展
• (Java Cryptography Extension (JCE))
• Java 安全套接字扩展
• (Java Secure Sockets Extension (JSSE))
• Java 认证和授权服务
长城教育—Java软件实战学院
私钥密码术 DEMO
• PrivateExample
长城教育—Java软件实战学院
公钥密码术
• 该特性解决在事先没有约定密钥的通信双方之间加密 消息的问题 • 相对于私钥密码术
长城教育—Java软件实战学院
公钥密码术
• 私钥密码术受到一个主要缺点的困扰:
• 一开始怎样将私钥交给 Alice 和 Bob 呢?如果 Alice 生成了私钥,则 必须将它发送给 Bob,但私钥是敏感信息,所以应该加密。但是,还没 有交换密钥来执行加密。
MACห้องสมุดไป่ตู้证码: 70875a076c164cb00bb359bf22ee5ebf
长城教育—Java软件实战学院
总结
• 消息摘要技术, 就是数字信息的指纹,可以确保消息的 完整性. • MAC验证码技术, 可以保证信息的来源可靠. • 消息摘要技术不能用来确保消息的机密性。 • 要确保机密性,需要使用私钥或公钥密码术来交换私 有消息。
JavaEE企业级应用开发与实战
JavaEE企业级应用开发与实战JavaEE(Java Platform, Enterprise Edition)是一种用于开发企业级应用程序的Java平台。
它提供了一套丰富的API和工具,用于构建分布式、可扩展、安全和可靠的应用程序。
JavaEE企业级应用开发与实战涉及以下主要内容:1. JavaEE架构:JavaEE应用程序通常采用三层架构,包括表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。
这些层次分离的设计使得应用程序更易于维护和扩展。
2. Servlet和JSP:Servlet是JavaEE中用于处理HTTP请求和响应的组件,而JSP(JavaServer Pages)是一种动态网页技术,允许将Java代码嵌入到HTML页面中。
开发者可以使用Servlet和JSP来构建Web应用程序。
3. EJB(Enterprise JavaBeans):EJB是JavaEE中的一种组件模型,用于构建分布式、事务性和可扩展的企业应用程序。
EJB提供了对事务管理、安全性、持久性和并发性等方面的支持。
4. JPA(Java Persistence API):JPA是JavaEE中用于对象关系映射(ORM)的API。
它允许开发者使用面向对象的方式访问和操作数据库,而不需要编写SQL语句。
JPA提供了一种通用的方式来处理实体类和数据库表之间的映射关系。
5. Web服务:JavaEE支持使用SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)等协议构建Web服务。
Web服务允许不同的应用程序通过网络进行通信和交互。
6. 安全性:JavaEE提供了一套完整的安全性机制,包括认证、授权、加密和访问控制等功能。
开发者可以使用这些机制来保护应用程序的数据和资源。
详解用J2EE架构企业级应用
详解用J2EE架构企业级应用企业级应用是指那些为商业组织、大型企业而创建并部署的解决方案及应用。
这些大型企业级应用的结构复杂,涉及的外部资源众多、事务密集、数据量大、用户数多,有较强的安全性考虑。
当代的企业级应用决不可能是一个个的独立系统。
在企业中,一般都会部署多个彼此连接的、相互通过不同集成层次进行交互的企业级应用,同时这些应用又都有可能与其它企业的相关应用连接,从而构成一个结构复杂的、跨越Intranet和Internet的分布式企业应用群集。
其中,连接企业内部各种应用的技术称为EAI(Enterprise Application Integration, 企业应用集成),而连接企业间各种应用的技术称为B2BI(Business-To-Business Integration, 企业间集成),采用EAI、B2BI技术及早先的N层体系架构就是当今企业级应用的最大特征。
此外,作为企业级应用,其不但要有强大的功能,还要能够满足未来业务需求的变化,易于升级和维护。
企业级应用架构下面我们使用一个图示来简单地解析一下企业级应用的架构,见图1。
图1 企业级应用的体系架构这个体系架构的主体是MVC架构。
MVC是Model/View/Control的缩写。
Model/View/Control是软件设计的典型结构。
在这种设计结构下,一个应用被分为三个部分:Model、View和Controller,每个部分负责不同的功能。
Model是指对业务数据/信息的处理模块,包括对业务数据的存取、加工、综合等;View是指用户界面,也就是面向用户的数据表示;Controller则负责View和Model之间的流程控制,也就是完成两个方向的动作:1.将用户界面(View)的操作映射到具体的Model,以完成具体的业务逻辑;2. 将通过Model 处理完的业务数据及时反应到用户界面(View)上。
MVC架构使得应用程序的结构更加清晰,通过将代码按照层次划分为业务逻辑/数据、用户界面和应用流程控制这三个层次,增强代码稳定性。
j2ee的十三个标准
j2ee的十三个标准J2EE(Java 2 Platform, Enterprise Edition)是一种用于开发企业级应用程序的Java平台。
它定义了一系列的标准,以确保应用程序的可移植性、可扩展性和互操作性。
以下是J2EE的十三个标准:1. Servlet API,用于开发基于Java的Web应用程序的标准API,提供了处理HTTP请求和响应的能力。
2. JavaServer Pages(JSP),用于创建动态Web页面的技术,结合HTML和Java代码,使开发人员能够以标记语言的方式生成动态内容。
3. Enterprise JavaBeans(EJB),用于开发分布式企业级应用程序的组件模型,提供了事务管理、持久化、安全性等功能。
4. Java Transaction API(JTA),用于管理分布式事务的API,确保多个资源(如数据库、消息队列)之间的一致性。
5. Java Message Service(JMS),用于在应用程序之间进行异步消息传递的API,支持可靠性和持久性的消息传递。
6. Java Database Connectivity(JDBC),用于在Java应用程序和数据库之间进行交互的API,提供了执行SQL查询和更新的能力。
7. Java Naming and Directory Interface(JNDI),用于在分布式环境中查找和访问命名和目录服务的API,如LDAP、DNS等。
8. JavaMail,用于发送和接收电子邮件的API,支持SMTP、POP3、IMAP等协议。
9. Java Authentication and Authorization Service (JAAS),用于身份验证和授权的API,提供了安全性管理的框架。
10. JavaServer Faces(JSF),用于开发基于组件的用户界面的框架,简化了Web应用程序的开发过程。
11. Java API for XML Processing(JAXP),用于解析、转换和生成XML文档的API,支持DOM、SAX和XSLT等技术。
j2ee体系介绍
J2EE体系介绍一、J2EE定义J2EE(Java 2 Platform, Enterprise Edition)是Java技术的一个扩展,它为构建企业级应用程序提供了一套完整的开发框架。
这个框架为应用程序的开发、部署和管理提供了丰富的服务,使开发人员能够更快速、更有效地构建企业级应用程序。
J2EE的出现,使得基于Java技术的企业级应用程序的开发更加标准化和规范化。
二、J2EE组件J2EE组件是构成企业级应用程序的基本单元,它们可以一起工作,为企业级应用程序提供强大的功能。
以下是一些主要的J2EE组件:1.应用程序客户端组件:这些组件是运行在客户端机器上的Java应用程序,它们通常用于与服务器交互以获取或提交数据。
2.Web组件:Web组件包括Java Server Pages (JSP) 和Servlet,它们用于创建动态Web内容。
3.EJB(Enterprise JavaBeans)组件:EJB是运行在J2EE服务器上的Java对象,它们代表了企业级应用程序的核心业务逻辑。
EJB可以分为Session Beans、Message-driven Beans和Entity Beans。
4.消息传递组件:这些组件用于实现异步通信,使应用程序能够处理基于消息的通信协议,如Java Message Service (JMS)。
5.事务管理组件:这些组件用于管理事务,确保数据的完整性和一致性。
6.安全和认证组件:这些组件用于提供安全性和认证功能,保护应用程序免受恶意攻击和数据泄露。
7.管理和监视组件:这些组件用于监视和管理应用程序的性能和安全性。
三、J2EE服务J2EE提供了以下服务来支持企业级应用程序的开发和部署:1.事务管理服务:事务管理服务确保数据的一致性和完整性。
在J2EE中,可以使用分布式事务管理服务来控制和管理分布式事务。
2.安全服务:J2EE提供了安全服务,以确保应用程序的安全性。
这些服务包括用户身份验证、授权和访问控制等功能。
J2EE EJB 消息Bean的编程相关的应用技术
JMS 接收端可以采用MessageConsumer类中的receive 方法去接收一个消息。
(2)消息的推(Push)---异步接收
异步接收
异步接收方式则是定义了一个事件处理方法,当消息队 列中第一个消息到达时立即触发该方法
特点:消息到达时,主动通知接收端 实现的方法
一、JMS概述
1、什么是 JMS?
JMS 是一种与厂商无关的访问企业消息系统的标准API。 它定义了消息的客户程序如何以一种标准化的形式与底
层的消息服务提供者交互 许多应用服务器厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA 的 Weblogic JMS service 和 Progress 的 SonicMQ等。
4、JMS的主要应用
(1)它负责处理消息的持久性、超时、重发、事务回滚以及 由JMS提供的其他服务。 (2)对支持Java技术的服务器来说,JMS提供者是J2EE应用服 务器程序的一部分。
5、RPC的同步与JMS的异步对比
(1)JMS消息收发系统可以实现为异步的
JMS 客户机可以发送消息而不必等待回应。
(2)消息对列实现的原理
2、消息主题---出版和订阅(Publish/Subscribe)
(1)原理 消息生产者将消息发送到一个话题(Topic) 注册到此话题的消费者都能接收到这些消息。 (2)特点:是许多消费者都能接收到同样的消息 (3)要求:为了接收到消息, 订阅者必须保持活动状态。因此, 发布者和订阅者之间存在时间上的依赖关系 (4)应用场合:该方式主要是用于一对多或多对多的消息广播
(2)RPC的(基于远程过程的)系统是同步的
同步通信:客户发出调用后,必须等待服务对象完成处理并 返回结果后才能继续执行。 客户和服务对象的生命周期紧密耦合 点对点通信:客户的一次调用只发送给某个单独的目标对象
j2ee 标准技术框架
Java 2 Enterprise Edition (J2EE) 是一种基于Java 的应用程序开发平台,它提供了一套标准的技术框架来方便企业级应用程序的开发和部署。
J2EE 技术框架主要包括以下组件和规范:
1.Servlet 和JSP 技术:Servlet 提供了一种基于Java 的Web 应用程序开发方式,
而JSP 允许开发者在HTML 页面中嵌入Java 代码。
2.EJB 技术:Enterprise JavaBeans (EJB) 是一种分布式应用程序开发的技术,它提供了
一套组件模型和容器,可以让开发人员专注于业务逻辑而不必关心底层细节。
3.JNDI 技术:Java Naming and Directory Interface (JNDI) 是一种用于管理命名和目录
服务的API,它提供了一种标准的方式来访问各种命名和目录服务,例如LDAP、DNS、CORBA 等。
4.JDBC 技术:Java Database Connectivity (JDBC) 是一种用于数据库访问的API,它
提供了一种标准的方式来访问各种关系型数据库。
5.JMS 技术:Java Message Service (JMS) 是一种用于异步消息传递的API,它允许应
用程序通过消息队列来实现解耦和异步消息传递。
除了上述组件和规范之外,J2EE 还包括了许多其他的技术和工具,例如JTA、JPA、JMX 等,这些技术和工具都旨在提高企业级应用程序的开发效率和可靠性。
expert one-on-one j2ee design and development 笔记
以下是Expert One-on-One J2EE Design and Development的部分笔记:1.J2EE(Java 2 Platform,Enterprise Edition)是一个用于构建分布式企业级应用的平台。
它提供了一系列的标准和规范,使得开发者可以更高效地开发出稳定、安全和可靠的应用程序。
2.J2EE的核心组件包括:•Servlet:用于处理客户端请求和生成动态Web页面。
•JSP(JavaServer Pages):用于创建动态Web页面。
•EJB(Enterprise JavaBeans):用于实现企业级应用程序的业务逻辑。
•JNDI(Java Naming and Directory Interface):用于查找和访问企业资源,如数据库连接、邮件服务器等。
•JTA(Java Transaction API):用于协调和管理分布式事务。
•JMS(Java Message Service):用于处理消息传递,支持队列和主题两种消息传递模型。
1.在J2EE应用程序中,通常使用MVC(Model-View-Controller)设计模式来分离应用程序的不同方面。
Model表示应用程序的数据和业务逻辑,View表示应用程序的用户界面,Controller表示应用程序的控制逻辑。
2.在J2EE应用程序中,通常使用依赖注入(Dependency Injection)来管理组件之间的依赖关系。
依赖注入是一种设计模式,通过将组件之间的依赖关系从硬编码方式改为配置方式,使得组件之间的耦合度降低,便于测试和维护。
3.在J2EE应用程序中,通常使用拦截器(Interceptor)来处理跨多个组件的通用逻辑,例如日志记录、权限验证等。
拦截器可以在请求到达目标组件之前或之后执行特定的操作。
4.在J2EE应用程序中,通常使用AOP(Aspect-Oriented Programming)来处理跨多个组件的横切关注点,例如日志记录、事务管理等。
Webwork+spring+hibernate配置过程心得
创作人:刘谚琪QQ: 172832876MSN: lanlanq@Webwork+spring+hibernate配置过程心得首先需要的lib环境不可少持久层首先创建DAO基类abstract class _RootDAO extends HibernateDaoSupportpublic abstract class _RootDAO extends HibernateDaoSupport {/*** Return the specific Object class that will be used for class-specific* implementation of this DAO.* @return the reference Class*/protected abstract Class getReferenceClass();protected Order getDefaultOrder() {return null;}public Object get(Class entityClass, Serializable id) throwsDataAccessException {return get(entityClass, id, null);}public Object get(final Class entityClass, final Serializable id, final LockMode lockMode) throws DataAccessException {return getHibernateTemplate().get(entityClass, id, lockMode);}public Object get(String entityName, Serializable id) throwsDataAccessException {return get(entityName, id, null);}public Object get(final String entityName, final Serializable id, final LockMode lockMode) throws DataAccessException {return getHibernateTemplate().get(entityName, id, lockMode); }……………………………………………………………. …………………………………………………………,.……………………………………………………………public int updateQueryAndNamedParam(final String queryString,final String[] paramNames, final Object[] values)throws DataAccessException {return this.updateQueryAndNamedParam( queryString, paramNames, values );}*/}然后创建Manage的基类public abstract class _RootManage protected _RootDAO dao;(引入Dao基类)public abstract class _RootManage {protected _RootDAO dao;/*** Return the specific Object class that will be used for class-specific* implementation of this DAO.* @return the reference Class*/protected abstract Class getReferenceClass();protected Order getDefaultOrder () {return null;}public Object get(Class entityClass, Serializable id) throws DataAccessException {return get(entityClass, id, null);}public Object get(final Class entityClass, final Serializable id, final LockMode lockMode)throws DataAccessException {return dao.get(entityClass, id, lockMode);}public Object get(String entityName, Serializable id) throws DataAccessException {return get(entityName, id, null);}public Object get(final String entityName, final Serializable id, final LockMode lockMode)throws DataAccessException {return dao.get(entityName, id, lockMode);}………………………………………….. …………….. ……………………………………………………………….. …………………………………………………………………public int updateQuery(final String queryString, final Object[] values) throws DataAccessException {return dao.updateQuery(queryString, values);}}然后创建对应业务的持久类,继承基类 OnlineUserMonitorDAO(继承 DAO)public class OnlineUserMonitorDAO extends _RootDAO {private static final Log log = LogFactory.getLog(OnlineUserMonitorHomeManage.class);public Class getReferenceClass() {return OnlineUserMonitor.class;}public Order getDefaultOrder() {return null;}public void persist(OnlineUserMonitor transientInstance) {log.debug("persisting OnlineUserMonitor instance");persist(transientInstance);log.debug("persist successful");}…………………………………….public OnlineUserMonitor merge(OnlineUserMonitor detachedInstance) {log.debug("merging OnlineUserMonitor instance");OnlineUserMonitor result = (OnlineUserMonitor) merge(detachedInstance);log.debug("merge successful");return result;}public OnlineUserMonitor findById(ng.String id) {// log.debug("getting OnlineUserMonitor instance with id: " + id);OnlineUserMonitor instance = (OnlineUserMonitor) get("OnlineUserMonitor", id);if (instance == null) {log.debug("get successful, no instance found");} else {log.debug("get successful, instance found");}return instance;}public java.util.List findAll(){System.out.println("操作错误2");return find("from OnlineUserMonitor");}}然后创建对应得Mange实现类public abstract class OnlineUserMonitorHomeManage extends jb.base._RootManage public abstract class OnlineUserMonitorHomeManage extends jb.base._RootManage {private static final Log log = LogFactory.getLog(OnlineUserMonitorHomeManage.class);public Class getReferenceClass() {return OnlineUserMonitor.class;}public Order getDefaultOrder() {return null;}public void persist(OnlineUserMonitor transientInstance) {log.debug("persisting OnlineUserMonitor instance");persist(transientInstance);log.debug("persist successful");}…………………………………..public OnlineUserMonitor merge(OnlineUserMonitor detachedInstance) {log.debug("merging OnlineUserMonitor instance");OnlineUserMonitor result = (OnlineUserMonitor) merge(detachedInstance);log.debug("merge successful");return result;}public OnlineUserMonitor findById(ng.String id) {// log.debug("getting OnlineUserMonitor instance with id: " + id);OnlineUserMonitor instance = (OnlineUserMonitor) get("OnlineUserMonitor", id);if (instance == null) {log.debug("get successful, no instance found");} else {log.debug("get successful, instance found");}return instance;}public java.util.List findAll(){return dao.find("from OnlineUserMonitor");}public void setOnlineuserdao(OnlineUserMonitorDAO onlineuserdao) {this.dao = onlineuserdao;}public OnlineUserMonitorDAO getOnlineuserdao() {return (OnlineUserMonitorDAO)dao;}}当然前提要配置好映射文件。
《EJB3.0入门经典》总结
18
2.10 拦截器(Interceptor)
19
2.10 拦截器(Interceptor)
20
2.11 依赖注入(dependency injection)
在实际应用中,EJB可能会使用到其它EJB或资源。 在传统的开发中,我们要使用某个类对象,可以通过new
object的方式来使用它。
对每一个方法来说,我们可以使用一个安全限制注释来指定谁可 以运行这个方法
32
2.13 安全服务(Security service)
本例使用Jboss默认的安全域“other”,“other”安全域告诉 容器到classpath下的users.properties和roles.properties中 寻找密码和用户角色列表。
35
2.13 安全服务(Security service)
36
2.13 安全服务(Security service)
第三步,为业务方法定义访问角色(后台)。
@RolesAllowed 注释指定允许访问方法的角色列表, 如果角色存在多个,可以用逗号分隔。
@PermitAll 注释指定 任何角色都可以访问此方法。
@Interceptors({A.class,B.class,C.class}),如果只有一个拦截器可 以省略大括号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无状态(stateless)会话Bean
• 无状态(stateless)会话Bean
• 无状态会话Bean并不为客户端保留会话状态 • 在客户端掉用无状态会话Bean的方法时,对应会话Bean的数据 成员会描述这个调用状态,但仅仅只在该方法调用期间保持这 个状态 • 当方法调用结束,状态就被清除。除了在方法调用期间 • 所有同一个无状态会话Bean实例是等价的,可以被容器分配给 任一客户端。 • 因为无状态会话Bean可以同时支持多个客户端,所以能更好的 支持应用程序的可数的大量客户端 • 对支持相同数量的客户端的应用程序,需要的无状态会话Bean 会比有状态会话Bean要少 • 不管什么时候,没有请求时无状态会话Bean都不会被保存中。 所以,无状态会话Bean会比有状态会话Bean有更高的性能。
3.4.1 与会话Bean、EntityBean的不同之处
• 只需要一个Bean类文件 • Message-DrivenBean在有些方面和无状态会话Bean相 似:
• 它的实例不保持数据或者与特定客户端的会话状态 • 一个Message-DrivenBean的所有实例都是等价的,容器可以把 消息分给任何一个实例处理 • 单个Message-DrivenBean可以处理多个客户端发送的消息
3.3.1 实体Bean和会话Bean的区别 实体Bean和会话Bean的区别 Bean和会话Bean
持久性 • 因为EntityBean的状态保存在存储设备中,所以它具有持久性 • 数据库中的数据是持久性的,就算你关闭数据库服务器或者相应 的应用程序,他们仍然是存在的。 • EntityBean有两种持久性管理机制:BMP(bean-managed persis tence Bean管理的持久性)和CMP(container-managed persist ence 容器管理的持久性)。 共享访问 • EntityBean可以被多客户端所共享 主键 • 每一个EntityBean实例都有一个唯一对象标识,这个唯一标识就 是主键,可以让客户端找到对应的EntityBean实例。 关系 • 象关系数据库中的一个表一样,EntityBean之间也会有关系。 • EntityBean关系的实现方法对于BMP和CMP是不同的,EntityBean 的关系通常是指采用CMP的关系。
3.2.3 企业Bean的分类
企业Bean类型 企业Bean类型 Bean
会话Bean EntityBean
作用
完成客户端请求的动作 描述持久存储的商业实体对象
MessageDrivenBean 作为JMS(Java Message Service Java消息服务) API的监听者异步处 理监听到的的消息
• 以下特性,为了得到更高的性能你应该选择无状态会话Bean:
• Bean的状态不包含客户端相关的数据 • 在一个单一方法调用中,Bean已经可以为客户端完成所需要的工作。例 如你可以用无状态会话Bean发一封邮件确认网络订单。 • Bean需要从数据库获取一些客户端经常访问的只读数据。你可以用这样 的Bean来访问数据表中代表这个月已经卖出的产品的行。
பைடு நூலகம்
容器管理关系中的方向
• 只有两种可用的方向:单向或者双向 • 在双向的关系中,每一个EntityBean都有对另一个Ent ityBean引用的关系字段 • 在单向的关系中,只有一个EntityBean中有对另一个E ntityBean引用的关系字段
3.3.3 实体Bean的应用场合
• Bean代表一个商务实体而不是一个过程
3.3 实体Bean的定义
• • • • 一个EntityBean描述一个持久存储备的商业对象 商业对象的例子如:消费者,订单和产品等 在J2EE SDK中持久存储设备是一个关系型数据库 最典型的情况是一个EntityBean又一个在地层数据库 中有一个表相对应,而EntityBean的每一个实例对应 表中的一行数据
回复号(PK) 主题号(FK) 回复 1 2 3 4 1 1 2 2 希捷不错 反对日立 呵呵我的也AMD 我的是2800+
一个论坛的抽象模式
论坛
1
n
主题
1
n
回复
持久域
• 就是Bean中与数据库表中对应的字段 • EJB容器会自动的把持久域数据映射到数据库中 • 与数据库字段的对应关系的维护由容器进行, 无需编 码
3.2 会话Bean
• 会话Bean代表连接到J2EE服务器的一个单独的客户端。
• 客户端通过调用会话Bean的方法来访问部署在服务器上的应用 程序(业务逻辑) • 会话Bean完成客户端的请求,从而对客户端隐藏了服务器内复 杂商务逻辑的执行过程
• 正如会话Bean的名称所表示的,它代表一次会话
• 单独的会话Bean对象是不可以共享的,它只能有一个客户端访 问,同样一次会话也只能有一个用户 • 和一次会话一样,会话Bean对象不是持久性对象。(就是说它 的数据并不保存到数据库。)当客户端结束运行,对应的会话B ean也跟着结束并断开与客户端的联系(不保留特定客户端的任 何信息)。
3.1.2 企业Bean的应用场合
何时应该考虑使用企业Bean: • 你的应用程序需要不断的升级。可能需要将你的应用 程序组件分布在多台不同的机器上运行 • 需要用事务机制来保证数据完整性 • 应用程序需要支持众多不同类型的客户端, 远程客户 端就可以很容易的访问到企业Bean • 客户都可以很“瘦”并且在理论上可以是任意数量不 同类型的客户端
关系域
• 一个关系字段就像数据库的一个外键,它识别一个关 联的Bean • 和持久性字段一样,关系字段在CMP中也是虚拟的并以 访问方法形式定义
容器管理关系的多样性
CMR可以分为四类: • 一对一:一个EntityBean的实例对应另一个EntityBea n的单个实例。 • 一对多:一个EntityBean实例对应另一个EntityBean 的多个实例。 • 多对一 • 多对多:两个EntityBean中任一EntityBean的单个实 例都可能对应另一个的多个实例。例如:在学校里, 一门课有很多学生上,而每一个学生都不会只上一门 课。因此在这个学校应用中,CourseEJB和StudentEJB 的关系就是多对多。
3.3.2 容器管理持久性(CMP)
• 容器管理的持久性(CMP)是指EJB容器负责处理所有 的数据库访问 • EntityBean的代码不包含任何数据库访问语句(SQL) • Bean的代码不会受到低层存储机制(数据库)的约束 • 即使把EntityBean部署到使用不同数据库的不同的服 务器上,也不需要修改代码和重新编译 • CMP大大提高了EntityBean的可移植性 • 注意: 不同数据库的SQL语句是有区别的
• 第四章将会介绍会话Bean的编码实例。
3.2.1 状态管理模式
• 有状态(stateful)会话Bean • 无状态(stateless)会话Bean
有状态(stateful)会话Bean
• 有状态(stateful)会话Bean
• 一个对象的状态由它的成员变量(数据成员)的状态决定 • 会话Bean的成员变量描述一个唯一的客户端-会话Bean的关联状 态 • 因为客户端要与对应的会话Bean进行对话,所以这种状态通常 被叫做会话状态。 • 会话状态在整个会话期间被保留 • 如果客户端运行结束或者删除对应的会话Bean,这个会话就结 束同时状态被清除。 • 有时,EJB容器会在没有请求的时候把有状态会话Bean保存在内 存(二级存储器Second Storage)中
• 例如表示信用卡的CreditCardEJB要做成EntityBean,而信用卡 核实的VerifierEJB就只能做成会话Bean。
• Bean的状态是需要持久存储的
• 如果Bean的实力结束了或者J2EE服务器关闭,它的状态依然存 在,只是回到向数据库这样的存储设备睡觉去了。
3.4 Message-Driven Bean
• 当一个消息发送到J2EE服务器端,容器调用Message-D rivenBean的onMessage方法来处理该消息
3.4.2 何时需要Message-DrivenBean
• 用会话Bean和EntityBean也可以发送和接收JMS消息, 但它们是同步的 • 而很多时候同步并不是必要的,这时候同步反而会强 占很多服务器资源,这样我们可以采用异步方式来处 理以减少资源消耗 • 需要异步消息处理就是用Message-DrivenBean。
第三章 企业Bean
刘苍松 liucangsong@
企业Bean
• 企业Bean是实现EJB技术的J2EE组件 • 企业Bean在俄EJB容器中运行,运行时环境由服务器建 立 • 虽然EJB容器对开发这是透明的,但它为运行其中的企 业Bean提供项事务处理等的系统级服务 • 这些服务是你可以快速的建立和部署企业Bean • 而这些企业Bean正是构成和新业务处理的J2EE应用。
3.2.2 会话Bean的应用场合
何时需要会话Bean 何时需要会话Bean • 在任何给定时间,只有一个客户端访问这个Bean的实例。 • Bean的状态并不需要持久保存,只在一个时间段(几小时)内保 持。 • 在以下情况下,建议采用有状态会话Bean:
• Bean需要描述一个于特定客户端的会话状态 • Bean需要在客户端的多个方法调用之间保存调用信息 • Bean作为应用程序的其他组件和客户端的中介者,呈现一个简单化的视 图给客户端 • 在调用接口里,Bean管理很多企业Bean的工作流
本章内容
• • • • • • • • 1、企业Bean定义 2、会话Bean 3、EntityBean 4、Message-DrivenBean 5、定义客户端访问接口 6、企业Bean的内容 7、企业Bean的命名约定 8、企业Bean的生存周期