EJB学习之三---Local和Remote接口

本文详细解析了EJB的组成元素,包括Local接口、Remote接口以及EjbInstance,并通过Sample实例展示了如何部署和使用EJB。重点介绍了如何在Java环境中实现远程调用和对象定位。
这篇文章主要来学习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
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值