这篇文章主要来学习Ejb的组成元素,重点介绍Local和Remote接口。
Key
EJB的组成
Local接口
Remote接口
Ejb Instance及工作方式
Sample实例
一 Ejb的组成
标准的Ejb至少由三个部分组成:Local接口,Remote接口以及Ejb Instance。
二 Local接口
1. Local接口,称为Home接口,继.承接基类javax.ejb.Local.从Ejb2.0开始出现的 新的接口,本质上是Java RMI接口.
2. 对于Local接口的使用,只能在本地使用。它列出了所有定位/创建/删除Ejb实例的方法。
3. 定义local接口的方法:
1) 在Ejb文件中定义:
@Local(value={Interface1, interface2,..})
2) 在Ejb文件中定义:
@Local(Interface1,Interface2,..)
3) 在Interface文件中定义
@Local
三 Remote接口
1. Remote接口列出Ejb类的业务逻辑方法。集成基类javax.ejb.Remote.本质上是Java RMI接口.
2. 定义local接口的方法:
1) 在Ejb文件中定义:
@Remote(value={Interface1, interface2,..})
2) 在Ejb文件中定义:
@Remote(Interface1,Interface2,..)
3) 在Interface文件中定义
@Remote
四 Ejb instance及工作方式:
对于Ejb的工作方式,如附件中的图:
五 Sample
1.Interface 定义:
1)UserManage
2)UserIdManage
3)UserNameManage
2.Ejb :
1)
deploy到Jboss服务器上,其Ejb name为:UserManageEjbBean.
3)JavaBean:
4) EjbClient:
(1) Main Class:
run Main,Console出现的Log:
UserId:0
UserName:Jamson
(2)web 页面:
deploy web project,输入:http://localhost:8080/EjbWebProject_Client/index.jsp
显示:
UserID:10
UserId:100
Key
EJB的组成
Local接口
Remote接口
Ejb Instance及工作方式
Sample实例
一 Ejb的组成
标准的Ejb至少由三个部分组成:Local接口,Remote接口以及Ejb Instance。
二 Local接口
1. Local接口,称为Home接口,继.承接基类javax.ejb.Local.从Ejb2.0开始出现的 新的接口,本质上是Java RMI接口.
2. 对于Local接口的使用,只能在本地使用。它列出了所有定位/创建/删除Ejb实例的方法。
3. 定义local接口的方法:
1) 在Ejb文件中定义:
@Local(value={Interface1, interface2,..})
2) 在Ejb文件中定义:
@Local(Interface1,Interface2,..)
3) 在Interface文件中定义
@Local
三 Remote接口
1. Remote接口列出Ejb类的业务逻辑方法。集成基类javax.ejb.Remote.本质上是Java RMI接口.
2. 定义local接口的方法:
1) 在Ejb文件中定义:
@Remote(value={Interface1, interface2,..})
2) 在Ejb文件中定义:
@Remote(Interface1,Interface2,..)
3) 在Interface文件中定义
@Remote
四 Ejb instance及工作方式:
对于Ejb的工作方式,如附件中的图:
五 Sample
1.Interface 定义:
1)UserManage
public interface UserManage {
public void addUser(User user);
}
2)UserIdManage
public interface UserIdManage {
public void addUserId(User user);
}
3)UserNameManage
public interface UserNameManage {
public void addUserName(User user);
}
2.Ejb :
1)
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
/**
* @author Jamson Huang
*
*/
@Stateless(name="UserManageEjbBean")/*rename ejb name*/
@Remote(value={UserManage.class,UserNameManage.class})/*定义Remote接口*/
@Local(value={UserManage.class,UserIdManage.class})/*定义Local接口*/
public class UserManageBean implements UserManage,UserNameManage,UserIdManage {
public void addUser(User user) {
System.out.println(user.getUserName());
user.setUserId(10);
}
public void addUserName(User user){
System.out.println(user.getUserName());
user.setUserName("EJB");
}
public void addUserId(User user){
System.out.print(user.getUserId());
user.setUserId(100);
}
}
deploy到Jboss服务器上,其Ejb name为:UserManageEjbBean.
3)JavaBean:
import java.io.Serializable;
/**
* @author Jamson Huang
*
*/
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1089875714097918835L;
private String userName;
private int userId;
/**
* @return the userName
*/
public String getUserName() {
return userName;
}
/**
* @param userName the userName to set
*/
public void setUserName(String userName) {
this.userName = userName;
}
/**
* @return the userId
*/
public int getUserId() {
return userId;
}
/**
* @param userId the userId to set
*/
public void setUserId(int userId) {
this.userId = userId;
}
}
4) EjbClient:
(1) Main Class:
import javax.naming.InitialContext;
import com.ejb.bean.user.User;
import com.ejb.bean.user.UserManage;
import com.ejb.bean.user.UserNameManage;
/**
* @author Jamson Huang
*
*/
public class UserManageEjbClient {
public static void main(String[] args) throws Exception {
InitialContext context = new InitialContext();
UserManage userManage = (UserManage)context.lookup("UserManageEjbBean/remote");
User user = new User();
user.setUserName("Jamson");
userManage.addUser(user);
System.out.println("UserId:"+user.getUserId());
UserNameManage userNameManage = (UserNameManage)context.lookup("UserManageEjbBean/remote");
userNameManage.addUserName(user);
System.out.println("UserName:" + user.getUserName());
}
}
run Main,Console出现的Log:
UserId:0
UserName:Jamson
(2)web 页面:
<%@ page language="java" import="java.util.*,javax.naming.*,com.ejb.bean.user.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>Ejb Interface test page</title>
</head>
<body>
<%
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext context = new InitialContext(props);
UserManage userManage = (UserManage)context.lookup("UserManageEjbBean/local");
User user = new User();
user.setUserName("Jamson");
userManage.addUser(user);
out.println("UserID:"+user.getUserId());
UserIdManage userIdManage = (UserIdManage)context.lookup("UserManageEjbBean/local");
userIdManage.addUserId(user);
out.println("UserId:"+user.getUserId());
%>
</body>
</html>
deploy web project,输入:http://localhost:8080/EjbWebProject_Client/index.jsp
显示:
UserID:10
UserId:100