第一课、EJB3.0_下载安装与运行jboss
a.下载ejb3.0,地址:http://www.jboss.org/jbosses/downloads/
b.解压就是安装,最好别路径包含中文
c.run.bat启动,后台http://localhost:8080/,默认配置server里面的default
d.出错排忧,1)端口是否被占用 2)是否设置JAVA_HOME和ClassPath
3)findstr错误,那你在Path追加%SystemRoot%/system32;%/system32;%SystemRoot;%
e.JBOSS_HOME = jboss的安装路径
第二课、EJB3.0_开发第一个无状态会话bean
a.EJB中的三种Bean
1)会话bean(session bean) -- 业务
2)实体bean(entity bean) -- 持久化
3)消息驱动bean(message-driven bean) -- 消息设置
b.导入相应的jar文件,建议全导入。
c.会话bean又分为无状态会话bean和有状态会话bean -- 无状态会话bean性能高点
d.开发一个无状态bean,简单java项目。
注解符@Stateless @Remote(HelloWorld.class)
e.发布,先将开发项目打包。然后拷贝到server/default/deploy
第三课、EJB3.0_开发EJB的客户端
a.客户端可以是J2SE、J2ME、J2EE
b.本案例采用普通java类
public static void main(String[] args)
{
Properties props = new Properties();
props.setProperty("java.naming.factory", "org.jmp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","localhost:1099");
try{
InitialContext ctx = new InitialContext(props);
HelloWorld helloWorld = (HelloWorld) ctx.lookup("HelloWorldBean/remote")
System.out.println(helloWorld.sayHello("佛山"));
}catch(NamingException e){
System.out.println(e.getMessage());
}
}
c.JNDI的访问设置,如访问服务器不同,为上下文设置驱动类和URL也是不同的。
props.setProperty("java.naming.factory", "com.sun.enterprise.naming.SerialnitContextFactory");
props.setProperty("java.naming.provider.url","localhost:3700");
d.通过在HelloWorldBean/remote找到bean
HelloWorld helloWorld = (HelloWorld) ctx.lookup("HelloWorldBean/remote")
e.如果把ejb打包成后缀为*.jar的模块文件,默认的全局JNDI名称是
本地接口 EJB-ClASS-NAME/local
远程接口 EJB-ClASS-NAME/remote
例: HelloWorldBean/remote
如果ejb作为后缀*.ear的jaaEE企业应用文件,默认的全局JNDI名称是
本地接口 EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
远程接口 EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
例: HelloWorld/HelloWorldBean/remote
f.环境properties可以通过属性文件设置。起名为jndi.properties文件,
InitialContext ctx = new InitialContext();ejb会自动查找的
属性文件里内容为 ==
java.naming.factory=org.jmp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099
g.通过jboss后台查看ejb。.../jmx-console
第四课、EJB3.0_把jboss集成进eclipse
a.关闭jboss,直接按Ctrl+C
b.jboss集成到eclipse中
点击window--》show view --》other --》 server --》 servers
在servers试图下选择 点击右键
new server -- 选择服务器 -- 选择jdk/jboss安装路径 -- 界面基本不改
c.启动点击 绿色按钮 停止 红色按钮
第五课、EJB3.0_通过ANT提高EJB应用的开发效率
a.如果采用以前方法测试ejb的话,需要不断的打包---部署---运行。大大减低企业开发效率。
b.通过ANT提高EJB开发效率,步骤如下:
在项目底下建立一个bulid.xml文件
c.配置文件的属性的解释---酷毙了
第六课、EJB3.0_开发具有本地接口的无状态bean
a.远程接口的无状态bean案例已经完成了
b.远程接口的bean通信先客户端与ejb服务器创建scoket再iiop通信。性能消耗大。
c.如果ejb跟客户端在一起的话,应该考虑本地接口无状态bean。必须客户端与ejb部署在同一jboss下
d.一般都开发本地接口和远程接口,本地接口继承远程接口
第七课、EJB3.0_开发有状态bean
a.修改注解就可以了。@Stateful有状态bean开发完了
b.客户端的开发
c.bean实例的两种管理
.无状态bean使用实例池技术管理bean
.有状态bean使用激活(activation)管理bean
d.有状态bean的实例过程
激活后,当用户不使用时,会缓存带硬盘上,在缓冲时间内,再次访问会缓存到内存中,
超时则删除硬盘信息
e.内存保存到硬盘 -- 钝化 硬盘还原到内存 -- 激活
f.有状态bean应用购物车上
第八课、EJB3.0_通过注解方式注入并使用其他EJB或者服务
a.ejb调用另外ejb应用
b.注入两种方式:通过jndi查找、注解依赖注入
c.注解:@EJB Other other;
d.注解详细制定实现类:@EJB(beanName="OtherBean") Other other;
e.如果服务是ejb提供的服务必须使用 @Resource 注解
@Resource TimerService timerService;
@Resource(mappedName="java:xxx") DataSource dataSource;
第九课、EJB3.0_配置jboss数据源
a.数据源格式在doc里
b.后缀有限制mysql-ds.xml
c.数据源的发布,简单
d.数据源只能被ejb调用 -java:-此空间只能被ejb调用
第十课、EJB3.0_开发单表映射的实体bean
a.实体bean开发
它属于java持久化规范(简称JPA)里的技术,实体bean通过元数据在javaBean和数据库
之间建立起映射关系,然后java程序员就可以随心所欲的使用面向对象的编程思想来
操纵数据库。JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,目前
实现的JPA规范的主流产品有hibernate、TopLink和OpenJPA,在jboss中采用了Hibernate
作为其持久化实现产品。
b.在应用的类路径下META-INF目录加入持久化配置文件persistence.xml
<?xml version="1.0" encoding="utf-8"?>
<persitence xmlns="***" *****>
<!-- 持久化单元,一组实体bean JTA全局事务 -->
<persitence-unit name="itcast" transaction-type="JTA">
<!-- 数据源的JNDI名称 java:命名空间 -->
<jta-data-source>java:itcastDS</jta-data-source>
</persitence>
</persitence>
c.创建javaBean,必须序列化
@Entity
@Table(name="person")
public class Person implements Serializable{
private Integer id;
private String name;
@Id @Column(name="id") @GeneratedValue(strategy=GenerationType.Auto)
//有identity、sequence等选项
private Integer getId(){
return id;
}
private void setId(Integer id){
this.id = id;
}
@Column(name="name",length=20,nullable=false)
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
//重载带id注释的字段方法,用于判断对象是否相等
*********
******
}
d.创建无状态bean业务方法执行CRUD
需要注入实体管理器 @PersistenceContext EntityManage em;
e.实体bean有四种状态
新建状态
托管状态
游离状态
删除状态
f.两方法区别
em.getReference(Person.class,id);
em.find(Person.class,id);
前者如果返回的对象没有调用属性的get方法时,就不会装载数据--删除就不用,找不到出例外
后者直接就装载数据了,找不到返回null
g.编写客户端代码 ---- JUnit单元测试
h.一些持久化单元的配置属性,可以自动生成表结构、显示sql语句
第十一课、EJB3.0_开发消息驱动bean
a.Java消息服务(Java Message Service)
java消息服务(Java Message Service 简称JMS)是用于访问企业消息系统的
开发商中立的API。企业消息系统可以协助应用软件通过网络进行消息交互。
JMS的编程过程很简单,概括为:应用程序A发送一条消息到消息服务器的某个
目的地(Destination),然后消息服务器把消息转发给应用程序B。因为程序A
和应用程序B没有直接的代码关联,所以两者实现了解耦。
消息 消息
应用程序A --------- 》【Jboss JMS】 ---------- 》应用程序B
[消息生成器] [消息使用者]
======待续=====