J2EE整理
- 格式:doc
- 大小:3.64 MB
- 文档页数:58
说明:在编程中我们会在某个类、方法或变量前面加上@x,来表明这个类、方法或变量具有x属性。
1.Servlet1).Servlet 是什么?Java Servlet 是运行在Web 服务器或应用服务器上的程序,它是作为来自Web 浏览器或其他HTTP 客户端的请求和HTTP 服务器上的数据库或应用程序之间的中间层。
2).Servlet 有以下几点优势(1).性能明显更好。
(2).Servlet 在Web 服务器的地址空间内执行。
这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
(3).Servlet 是独立于平台的,因为它们是用Java 编写的。
(4).服务器上的Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。
因此,Servlet 是可信的。
(5).Java 类库的全部功能对Servlet 来说都是可用的。
它可以通过sockets 和RMI 机制与applets、数据库或其他软件进行交互。
3).Servlet 架构过程为:(1) 客户端发送请求至服务器端;(2) 服务器将请求信息发送至Servlet;(3) Servlet 生成响应内容并将其传给服务器。
响应内容动态生成,通常取决于客户端的请求;(4) 服务器将响应返回给客户端。
4).servlet生命周期(1).客户端请求该Servlet;(2).加载Servlet 类到内存;(3).实例化并调用init()方法初始化该Servlet;(4).service()(根据请求方法不同调用doGet() 或者doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());(5).destroy()。
5).看一下老师ppt和教程(这个很不错/holandstone/article/details/16844957)想学的更好就看servlet-api.chm2.web socket(1).web socket:是HTML5一种新的协议。
Hibernate教程使用Hibernate的7个步骤使用hibernate的3个准备:1、导入Hibernate库(jar包)——》2、添加核心配置文件hibernate.cfg.xml——》3、添加对应表的实体类和映射文件。
当准备好了以上的3个准备后,使用Hibernate还需要7个步骤,下边详细介绍一下使用Hibernate还需要7个步骤1.1第一步读取配置ConfigurationConfiguration cfg=new Configuration().configure();2. 2第二步创建sessionFactory3. 3第三步打开session4. 4第四步开启事务Transaction5. 5第五步进行持久化操作,就是增删改查等操作6. 6第六步提交事务7.7第七步关闭资源,也就是关闭session8.8运行即可,成功hibernate多对一、一对一、一对多、多对多的配置方法hihernate一对多关联映射(单向Classes----->Student)一对多关联映射利用了多对一关联映射原理多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多也就是说一对多和多对一的映射策略是一样的,只是站的角度不同在一一端维护关系的缺点:* 如果将t_student表里的classesid字段设置为非空,则无法保存* 因为不是在student这一端维护关系,所以student不知道是哪个班的,所以需要发出多余的update语句来更新关系hihernate一对多关联映射(双向Classes<----->Student)一对多双向关联映射:* 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端* 在多一端采用<many-to-one> 注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,所以我们一般在多的一端来维护关联关系关于inverse属性:inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上,默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系,如果设置成inverse为true,则我们只能从多一端来维护关联关系注意:inverse属性,只影响数据的存储,也就是持久化inverse和cascade* inverse是关联关系的控制方向* cascade操作上的连锁反应hibernate一对一主键关联映射(单向关联Person---->IdCard)一对一主键关联映射:让两个实体对象的id保持相同,这样可以避免多余的字段被创建具体映射:<id name="id"><!-- person的主键来源idCard,也就是共享idCard的主键--> <generator class="foreign"><param name="property">idCard</param> </genera tor> </id><property name="name"/><!-- one-to-one标签的含义,指示hibernate怎么加载它的关联对象,默认根据主键加载,constrained="true",表明当前主键上存在一个约束,person 的主键作为外键参照了idCard --><one-to-one name="idCard" constrained="true"/> hibernate一对一主键关联映射(双向关联Person<---->IdCard)需要在idcard映射文件中加入<one-to-one>标签指向person,指示hibernate如何加载person 默认根据主键加载hibernate一对一唯一外键关联映射(单向关联Person---->IdCard)一对唯一外键关联映射是多对一关联映射的特例可以采用<many-to-one>标签,指定多的一端的unique=true,这样就限制了多的一端的多重性为一通过这种手段映射一对一唯一外键关联hibernate一对一唯一外键关联映射(双向关联Person<---->IdCard)一对一唯一外键关联双向,需要在另一端(idcard),添加<one-to-one>标签,指示hibernate如何加载其关联对象,默认根据主键加载person,外键关联映射中,因为两个实体采用的是person的外键维护的关系,所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式:<one-to-one name="person" property-ref="idCard"/> hiber nate多对一关联映射关联映射的本质:* 将关联关系映射到数据库,所谓的关联关系是对象模型在内存中的一个或多个引用<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one>中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致<many-to-one>标签的定义示例:* <many-to-one name="group" column="groupid"/>理解级联的含义?* 是对象的连锁操作hibernate多对多关联映射(单向User---->Role)具体映射方式:<set name="roles" table="t_user_role"> <key colu mn="userid"/><many-to-many class="com.bjsxt.hibernate.Role" colum n="roleid"/> </set>hibernate多对多关联映射(双向User<---->Role)映射方法:<set name="roles" table="t_user_role"> <key column="userid"/><many-to-many class="com.bjsxt.hibernate.Role" col umn="roleid"/>struts2配置步骤1.将文件struts2-blank-2.0.11.war解压,将lib下的5个jar文件放到项目的lib下2.web.xml添加过滤器和默认配置文件,注册一个FilterDispatcher<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatch er</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>3.在src目录下创建struts.xml(项目发布后,struts.xml将会被复制到WEB-INF/classes下面)在空的struts.xml中填入<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="default" namespace="/"extends="struts-default"><!--添加Action定义--></package></struts>//package可以将Action分类,划分到不同的包中,java中的包不可以继承,而这些包可以互相继承,包括拦截器,action映射等都可以继承 extend支持多个文件的定义,如user.xml格式和struts.xml相同,可以放在src或src的子文件夹下最后在struts.xml中使用include嵌入<include file="user.xml"/><include file="util/POJO.xml"/>4.新建类继承ActionSupport在其中设定方法和属性,在方法中给属性赋值,返回SUCCESS常量5.struts.xml 中加入一个action 定义<action name="Hello" class="demo.HelloWord"><result name="success">/index.jsp</result></action>6.index.jsp页面显示属性值<s:property value="message"/> 或使用EL表达式7访问http://localhost:8080/Struts2_prj/Hello.actiontomcat位置:D:\tomcat\apache-tomcat-5.5.23jdk位置:D:\Program Files\Java\jdk1.6.0_01CATALINA_BASE:D:\tomcat\apache-tomcat-5.5.23CATALINA_HOME:D:\tomcat\apache-tomcat-5.5.23 ClassPath:.;%JAVA_HOME%\lib\*.jar;%JAVA_HOME%\lib\tools.j ar;%CATALINA_HOME%\common\lib\servlet.jar;JAVA_HOME:D:\Program Files\Java\jdk1.6.0_01Path:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Syst em32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%J AVA_HO ME%\bin;%CATALINA_HOME%\binStruts2中的动态方法调用和使用通配符定义actionstruts2中的动态方法调用(Dynamic method Invoc)struts2中无需配置就可以直接调用Action中非execute方法的方式,就是用struts2的动态方法调用。
紫金学院J2EE复习汇总1.简述Web应用模型的B/S结构。
答:Web应用是基于B/S结构的,也就是浏览器/服务器结构。
最早的应用程序,无论表示层逻辑、业务逻辑和数据库都集中在一台计算机上,各部分之间是紧密耦合的。
随着技术的发展,出现C/S结构,即客户端/服务器结构。
在这种结构中,有了专门的数据库服务器,但客户端还要运行客户端应用程序,这时是胖客户端。
在B/S结构中,客户端在浏览器中只负责表示层逻辑的实现,业务逻辑和数据库都在服务器端运行。
也就是说,应用程序部署在服务器端,客户端通过浏览器访问应用程序。
通常,客户端发送HTTP请求消息传给服务器,服务器将请求传递给Web应用程序,Web应用程序处理请求,并把响应的HTML页面传给客户端。
2. 描述HTTP请求响应模型。
答:HTTP协议基于请求/响应模型。
存在两种HTTP消息:请求消息和响应消息。
一个完整的HTTP会话过程包括:首先,客户端与Web服务器建立连接,通常通过默认的80端口。
建立连接后,客户端向Web服务器发送HTTP请求消息,Web服务器处理请求,并将响应消息传送给客户端,这样一个来回后,这个连接就关闭了。
4. 以下HTTP响应状态码的含义是什么?200、400、401、404和500。
1.MVC设计模式包含哪些组件,其作用各是什么?答:MVC设计模式是软件设计中的典型结构之一。
MVC是Model/View/Control的缩写。
在这种设计结构下,应用程序分为三个组成部分:Model模型、View视图和Controller控制器,每个部分负责不同的功能。
Model提供应用业务逻辑,是指对业务数据、业务信息的处理模块,包括对业务数据的存取、加工、综合等;View是指用户界面,也就是用户与应用程序交互的接口。
用户可以通过view输入信息,另一方面应用程序通过view将数据结果以某种形式显示给用户。
Controller则负责View和Model之间的流程控制。
Hibernate1.Hibernate是什么?它是连接java应用程序和关系数据库的中间件对JDBC API进行了封装,负责java对象的持久化是一种ORM映射工具建立面向对象的域模型和关系数据模型之间的映射在分层软件体系结构中位于持久化层,封装了所有数据访问细节,使业务逻辑层专注于业务逻辑。
2.为什么用Hibernate对JDBC访问数据库的代码做了封装,简化了数据访问层重复性代码Hibernate是一个基于JDBC主流持久化框架,是一个优秀的ORM实现,简化dao层编码工作性能非常好,是个轻量级的框架,映射灵活性出色,支持各种关系型数据库,从一对一到多对多的各种复杂关系。
3.Hibernate应用中java对象的状态临时状态(Transient)也叫瞬时状态,new出来的对象,没有被持久化处理,不处于Session缓存中的对象持久化状态(Persistent)已经被持久化,加入到Session缓存中游离状态(Detached)也叫脱管状态4.Hibernate工作原理?(1)读取并解析配置文件(2)读取并解析映射信息,创建SessionFactory(3)打开Session(4)创建事物Transation(5)持久化操作(6)提交事物(7)关闭Session5.Hibernate查询主要支持两种查询方式:HQL(Hibernate Query Language,hibernate查询语言)查询和Criteria查询(1)属性查询(2)参数查询(3)关联查询(4)分页查询(5)统计函数6.如何使用HQL使用HQL需要4步:(1)得到Session Session session=HibernateSessionFactory.getSession() (2)编写HQL语句String HQL=”from 表名”(3)创建Query对象Query query=session.createQuery(HQL)(4)执行查询得到结果List list=query.list()Spring1.什么是Spring,它有什么特点?Spring是一个开源的,轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,简化企业开发轻量:从大小和开销两方面而言,spring都是轻量级的控制反转:Spring通过一种称作控制反转的技术进行松耦合面向切面:Spring提供了面向切面编程的丰富支持容器:Spring包含并管理应用对象的配置和生命周期,这个意义上讲是一个容器框架:Spring可以将简单的组件配置,组合成复杂的应用。
J2EE的13个规范总结⼀、背景企业级应⽤框架的需求 在很多企业级应⽤中,诸如数据库连接、邮件服务、事务处理等都是⼀些通⽤企业需求模块,这些模块假设每次在开发中都由开发者来完毕的话,将会造成开发周期长和代码可靠性差等问题。
于是很多⼤公司开发了⾃⼰的通⽤模块服务。
这些服务性的软件系列统称为中间件。
通⽤性需求 在上⾯的需求基础之上,很多公司都开发了⾃⼰的中间件,但其与⽤户的沟通都各有不同,从⽽导致⽤户⽆法将各个公司不同的中间件组装在⼀块为⾃⼰服务。
从⽽产⽣瓶颈。
于是提出标准的概念。
事实上J2EE就是基JAVA技术的⼀系列标准。
⼆、J2EE简介J2EE(Java 2 Platform, EnterpriseEdition)是⼀个为⼤企业主机级的计算类型⽽设计的Java平台。
⽬前,J2EE是市场上主流的企业级分布式应⽤平台的解决⽅案。
J2EE就是基于JAVA技术的⼀系列标准,致⼒于规范化可重⽤模块组件三、J2EE的13种规范1、JDBC(Java DatabaseConnectivity) JDBC 可做三件事:与数据库建⽴连接。
发送操作数据库的语句。
处理数据库返回的结果。
有了JDBC,向各种关系数据发送SQL语句就是⼀件⾮常easy的事。
程序猿仅仅需⽤JDBC API写⼀个程序就够了,它可向对应数据库发送SQL调⽤。
同⼀时候。
将Java语⾔和JDBC结合起来使程序猿不必为不同的平台编写不同的应⽤程序,仅仅须写⼀遍程序就能够让它在不论什么平台上执⾏,这也是Java语⾔“编写⼀次,处处执⾏”的优势。
其次它增进了访问数据的效率和快捷程度。
2、JNDI(Java Name and DirectoryInterface)【看】 JNDI API 被⽤于运⾏名字和⽂件夹服务。
它提供了⼀致的模型来存取和操作企业级的资源DNS和LDAP,本地⽂件系统,或应⽤server中的对象。
⼀个应⽤程序设计的API,为开发者提供了查找和访问各种命名和⽂件夹服务的通⽤、统⼀的接⼝。
JDBC1、JDBC开发的基础:»装入jdbc驱动程序»创建与数据库的连接»创建语句对象---Statement|PreparedStatement»利用语句对象执行sql语句得到结果»处理结果»jdbc应用结束2、JDBC常用的接口:»使用java.sql包»接口—DriverManager—Connection—Statement—PreparedStatement—ResultSet3、我们现在使用Access数据库进行举例:第一步:加载数据库驱动String DBDriver = “sun.jdbc.odbc.JdbcOdbcDriver”;Try{Class.forName(DBDriver);}Catch(Exception e){System.out.println(“驱动加载失败!”);}第二步:连接数据库String url = “jdbc:odbc:textdb”;Connection conn = null;Try{con = DriverManager.getConnection(url);//这里主要是数据库没有设置密码,要是设置了密码的话,就要使用下面的。
//con = DriverManager.getConnection(url,id,password);}Catch(Exception e){System.out.println(“数据库连接失败!”);}第三:对数据库进行操作※主要涉及到的就是:Statement和PreparedStatement接口。
//定义用于操作数据库的Statement对象,并且通过Connection对象实例化Statement对象。
Statement stmt = null;Try{Stmt = conn.createStatement();}Catch(Exception e){Out.Println(“数据库操作失败!”);}※※这样之后我们就可以使用这个实例化好的对象执行SQL 语句。
复习要点第一章J2EE简介(6%)1)J2EE分层构架【J2EE客户端、Web组件、业务组件】2)J2EE容器3)Web应用程序的目录结构〔见Web应用程序简介.ppt〕第二章 servelt(18%)1)servlet基本概念、servlet容器职能2)servlet的生命周期3)servlet的部署描述符4)过滤器的功能5)会话追踪机制原理、常用的方法6)请求映射的方法,包括URL路径解析、匹配规则、映射语法第三章JSP(18%)1)JSP的基本概念,与servlet的区别2)JSP页面的构成元素,基本语法3)JSP中jsp:usebean的四种类型的作用域4)JSP的注释5)页面包含的两种方式6)page指令的属性含义、及设置7)JSP生命周期,特别是转译阶段各种元素在对应java文件中的位置8)JSP的内置对象的基本概念、内置对象种类、使用方法第四章 JavaBean在JSP中的应用(10%)1)掌握JavaBean契约,能熟练编写JavaBean2)熟练使用标准Action:<jsp:useBean>、< jsp:setProperty >、< jsp: getProperty > 第五章 JDBC (18%)1)JDBC驱动程序四种类型2)掌握JDBC URL协议格式3)数据源DataSource的基本概念、属性等4)掌握ResultSet的类型、光标的概念、及各种类型ResultSet的光标移动5)熟练使用JDBC API进行数据库编程、数据库元数据编程试题类型一、选择题(15×2%)二、简答题(3×5%)三、编程题(3~4小题 25%)(1)读JSP程序写出执行结果(2)实现一个JavaBean(3)数据库编程(4).。
J2EE最佳实践总结1、始终使用 MVC 框架。
2、在每一层都应用自动单元测试和测试管理。
3、按照规范来进行开发,而不是按照应用服务器来进行开发。
4、从一开始就计划使用 J2EE 安全性。
5、创建您所知道的。
6、当使用 EJB 组件时,始终使用会话 Facades.7、使用无状态会话 bean,而不是有状态会话 bean.8、使用容器管理的事务。
9、将 JSP 作为表示层的首选。
10、当使用 HttpSession 时,尽量只将当前事务所需要的状态保存其中,其他内容不要保存在 HttpSession 中。
11、在 WebSphere 中,启动动态缓存,并使用 WebSphere servlet 缓存机制。
12、为了提高程序员的工作效率,将 CMP 实体 bean 作为 O/R 映射的首选解决方案。
1. 始终使用 MVC 框架。
MVC 框架可以将业务逻辑(Java beans 和EJB 组件)、控制器逻辑(Servlets/Struts 动作)、表示层(JSP、XML/XSLT)清晰地分离开来。
良好的分层可以带来许多好处。
MVC 框架对于成功使用 J2EE 是如此重要,以致没有其他最佳实践可以与其相提并论。
模型-视图-控制器(MVC)是设计 J2EE 应用程序的基础。
MVC 将您的程序代码简单地划分下面几个部分:负责业务逻辑的代码(即模型——通常使用 EJB 或者普通的 Java 对象来实现)。
负责用户界面显示的代码(即视图——通常通过 JSP 及标记库来实现,有时也使用 XML 和 XSLT 来实现)。
负责应用程序流程的代码(即控制器——通常使用 Java Servlet 或像Struts 控制器这样的类来实现)。
如果您不遵循基本的 MVC 框架,在开发过程中就会出现许多的问题。
最常见的问题就是在视图部分添加了太多的成分,例如,可能存在使用 JSP 标记来执行数据库访问,或者在 JSP 中进行应用程序的流程控制,这在小规模的应用程序中是比较常见的,但是,随着后期的开发,这样做将会带来问题,因为JSP 逐步变得越来越难以维护和调试。
J2EE开发架构小结J2EE学完之后,我们应该掌握了一些主流的架构模式,总结一下:宏观上讲,我们采用了分层的架构,将软件分为如下的层次:在具体的实现中,表现层可为Struts/JSF等,业务层、访问层可为JavaBean或EJB等,资源层一般为数据库。
宏观上的层次就是这样,在具体现实中,有如下几种实现形式:1,轻量级实现表现层使用基于MVC的框架,比如Struts或JSF业务层使用JavaBean(就是常说的Service)访问层使用JavaBean(就是常说的DAO)优点:轻量级实现,简单明了缺点:难以无法实现分布式应用以下功能必须通过编程实现事务控制资源管理(包括组件的创建)线程安全问题安全性2,重量级J2EE实现表现层依然是基于MVC的框架访问层采用实体Bean实现,如果可能最好采用CMP,实现起来更简洁。
此处的实体Bean可以考虑采用本地接口业务层一分为二,服务控制器可以由会话Bean充当,用来封装业务流程(相当于轻量级实现中的Service),也可以考虑采用本地接口;门面也可以由会话Bean充当(一般来说无状态会话Bean足矣),作为业务层的入口,应该采用远程接口。
优点:以下功能可由EJB容器自动实现,或通过配置实现事务控制远程访问线程安全资源管理安全性可以进行分布式应用因为采用了EJB,故部分特征可以由装配人员来配置(比如事务,安全性等),不需要在软件中硬编码EJB组件有更好的重用性可利用容器提供的其他企业级的功能(比如集群,容错,灾难恢复等)可以加入MDB(实现异步通讯)等技术缺点:开发难度较高如果不恰当的使用实体Bean,会造成效率低下。
如果采用CMP,则很多数据访问的操作不能直接实现。
缺少良好的开发环境软件可能依赖于具体的EJB容器EJB容器可能很贵,开发软件也可能很贵3,轻量级和重量级J2EE的切换如果项目有需求,并有充分的时间,还可以通过在表现层和业务层的交界处加入“业务代表”(JavaBean + 服务定位器实现)来对表现层隐藏对业务层访问的细节(JavaBean和EJB的访问方式显然不同),只需替换“业务代表”就可以切换轻量级和重量级两种实现。
第一章EJB3.0开发环境配置运行环境配置:1、工具下载与安装1>下载安装JDK5.0()2>下载安装eclipse3.2.x()(如果你下载了JBOSS IDE2.0(内含eclipse3.2.x,这个可以不要)3>下载和安装jboss-4.0.5.GA 服务器(记住一定要下载安装版,内含EJB3.0Container,地址:/project/downloading.php?groupname=jboss&filename=jems-insta ller-1.2.0.CR1.jar&use_mirror=jaist)4>下载插件JBOSS IDE2.0(/project/downloading.php?groupname=jboss&filename=JBossIDE -2.0.0.ALPHA-Bundle-win32.zip&use_mirror=nchc)安装JBOSS要注意几点:1>建议不要安装在Program Files 目录,否则一些应用会导致莫名的错。
2>选择带集群功能的安装选项“ejb3-clustered”3>在输入配置名称时,输入“all”4>在配置JMX时,把所有选择键都勾上,并输入jmx-console的用户名和密码!5>运行JBOSS,进入JBOSS安装目录下,进入BIN目录下,运行run -c all,如果直接运行run,会报错!(因为你run.bat不知道你运行的是那种配置all,default,还是min)2、设置环境变量JAVA_HOME=JAVA安装目录JBOSS_HOME=JBOSS安装目录JBOSS中的部署过程非常的简单、直接,在每一个配置中,JBOSS不断的扫描一个特殊目录的变化:[jboss安装目录]/server/config-name/deploy。
org.springframework.orm.hiberante3.HiberanteTransactionManager第二章EJB环境的部署和第一个EJB例子的开发EJB的WEB容器:JBOSS,WEBLOGIC等等。
JBOSS的配置:1.解压JBOSS;2.配置环境变量1>在环境变量中手动配置JBOSS_HOME2>在环境变量中手动配置JAVA_HOME3>在环境变量中手动配置classpath3.启动JBOSS当看到:的时候其中没有任何异常出现,而且全是INFO输出信息,说明没有问题,启动正常。
4.关闭JBOSS:CTRL+C开发第一个EJB例子:带有远程接口的无状态会话BEAN创建EJB项目:EJB服务器端开发是有层次的:1.组件接口1>创建接口类,并继承它的EJBObject接口组件接口实现类注意:组件接口的开发是需要抛出RemoteException 2.开发主接口1>创建接口类,并继承它的EJBHome接口主接口的实现代码:3.开发组件接口实现类创建一个类,继承SessionBean组件接口实现类的代码:注意:ejbCreate()方法是空实现的组件开发完成后需要2个发布文件Ejb-jar.xml:这个配置文件中包含的是EJB组件的描述MATE_INF----NEW----XML Basic注意:点击下一步,不要点击完成注意:点击下一步,不要点击完成选择下一步实现的ejb-jar.xmlJboss.xml文件的作用: 主要用于发布到JBOSS上META-INF----NEW---XML(Advanced Templates)实现的jboss.xml文件4.发布到服务器1.>打JAR包(1)手动打JAR;怎样看是否发布成功出现上述文字,并且没有异常报出。
JNDI名字就是"xingong2";到此服务器端发布完毕下面进行客户端访问:注意事项:1>把Jboss中client中的包全部导入,在项目上选择Build Path添加add library选择add jar选项2>把服务器端的接口打成JAR包导入。
客户端实现的代码:重点24行:hb.put(Context.INITIAL_CONTEXT_FACTORY ,"org.jnp.interfaces.NamingContextFactory");StatelessHome home = (StatelessHome) PortableRemoteObject.narrow (obj, StatelessHome.class );总结:带有远程接口的无状态会话Bean1.组件接口的定义需要继承EJBObject 接口,同时抛出RemoteException 异常2.主接口定义需要继承EJBHome,同时抛出RemoteException异常和CreateException异常并实现create()方法,同时返回与组件接口类型相同的返回值3.组件接口实现BEAN需要实现SessionBean接口,同时实现ejbCreate()方法,方法体空实现,抛出RemoteException异常和CreateException异常,组件接口的方法体实现。
4.注意ejb-jar.xml文件的命名,注意其中标签的写法5.注意jboss.xml文件的命名6.客户端注意导入Jboss下client文件中的JAR包7.注意组件接口的创建过程第三章带有本地接口的无状态会话bean1.实现组件接口注意:继承接口有变化组件接口的实现主接口的实现:组件接口的实现类:ejb-jar.xml文件:jboss.xml文件如果按照上面的方法做,最后发布的本地接口将出现一个以地址为后缀的JNDI名称,同时在修改代码时这个名称一直变动,要改变上述问题需要在jboss.xml文件中加入<local-jndi-name>testLocal</local-jndi-name>标签,加标签后的代码这样生成的JNDI名称就为我们定义的StatelessLocal本地接口客户端创建方法:1.创建动态的WEB项目创建完动态的WEB项目后,在WebContent文件下建立简易的JSP:创建完项目和创建页面需要打包导项目选择add:最终完成的JSP页面代码:给WEB项目打WAR包:打成WAR包后的情况:拷贝WAR包到JBOSS的发布目录,如果发布成功会在后面出现的一条信息第四章本地接口与远程接口之间使用相互注入的方式进行远程的访问本章内容主要是解决数据源发布问题的,数据库一般是要发布在服务器上的,当我们使用使用远程和本地接口同时访问数据源时就出现了问题,本章就是为了解决此问题。
1.定义本地接口EJB开发是以组件形式存在的本地接口的开发请参见第三章2.定义远程接口远程接口的开发参见第二章其中组件接口和主接口的开发与第二章中相同,区别在实现BEAN1>需要注入本地接口的远程接口实现BEAN的开发步骤(1)首先需要找到本地接口的JNDI节点,所以需要先发布本地接口在远程接口中注入本地接口最需要注意的就是远程接口中需要实现的reshow()方法,本地接口的JNDI节点是在这里被找到的注意:这里需要注入的是本地接口。
所以所有引用的都是本地接口的主接口和组件接口注意远程接口实现bean中的自定义方法:下面是实现的代码:2>.需要开发远程接口客户端:详见前面章节客户端实现:参见第二章远程接口客户端实现总结:1.接口的相互注入一般情况下是本地接口注入远程接口,这样可以完全发挥EJB远程接口网络编程的特点。
2.当第一个本地接口被创建完成后,需要在远程接口中找到其JNDI节点3.注意是在远程接口的实现BEAN中查找JNDI节点第五章有状态会话bean和无状态会话bean的区别有状态会话Bean:只要对象(bean)被创建(实例),那么对象将无法改变.无状态会话Bean:当对象(bean)被创建(实例),如果重新再创建的话,对象将改变无状态会话Bean组件接口:有状态会话Bean组件接口:无状态会话Bean主接口:无状态会话Bean实现Beanejb-jar.xmljboss.xml第六章Jboss数据源的配置以及使用配置数据源的步骤:1.找到JBOSS根目录下(F:\jboss-4.0.5.GA\docs\examples\jca)文件夹,所有数据库数据源配置文件全在这个文件夹下,使用什么数据库就选择什么数据源,我们使用的是MySQL,选择的文件是:然后把我们选择的文件放入JBOSS的发布目录(F:\jboss-4.0.5.GA\server\default\deploy)2.把驱动包拷贝到(F:\jboss-4.0.5.GA\server\default\lib)配置mysql-ds.xml文件;打开文件:所需要注意的是:<jndi-name>MySqlDS</jndi-name><connection-url>jdbc:mysql://localhost:3306/EJBDemo</connection-url><driver-class>com.mysql.jdbc.Driver</driver-class><user-name>root</user-name><password>root</password>上面几行代码;特别是数据库名称,红体部分<connection-url>jdbc:mysql://localhost:3306/EJBDemo</connection-url>和JNDI名称,红体部分<jndi-name>MySqlDS</jndi-name>经过上面2步,我们已经成功的把数据源配置起来,下面直接启动JBOSS当控制台打印出:[WrapperDataSourceService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=MySqlDS' to JNDI name 'java:MySqlDS'09:40:12,984 INFO[WrapperDataSourceService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=MySqlDSzyf' to JNDI name 'java:MySqlDSzyf'这些信息的时候我们就可以确定数据源发布成功,它的访问节点是上面红体部分。