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

这篇文章主要来学习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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax.ejb.AfterCompletion.class javax.ejb.ApplicationException.class javax.ejb.Asynchronous.class javax.ejb.AsyncResult.class javax.ejb.BeforeCompletion.class javax.ejb.ConcurrencyManagement.class javax.ejb.ConcurrencyManagementType.class javax.ejb.ConcurrentAccessException.class javax.ejb.ConcurrentAccessTimeoutException.class javax.ejb.CreateException.class javax.ejb.DependsOn.class javax.ejb.DuplicateKeyException.class javax.ejb.EJB.class javax.ejb.EJBAccessException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb.EJBLocalHome.class javax.ejb.EJBLocalObject.class javax.ejb.EJBMetaData.class javax.ejb.EJBObject.class javax.ejb.EJBs.class javax.ejb.EJBTransactionRequiredException.class javax.ejb.EJBTransactionRolledbackException.class javax.ejb.embeddable.EJBContainer.class javax.ejb.EnterpriseBean.class javax.ejb.EntityBean.class javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopbackException.class javax.ejb.Init.class javax.ejb.Local.class javax.ejb.LocalBean.class javax.ejb.LocalHome.class javax.ejb.Lock.class javax.ejb.LockType.class javax.ejb.MessageDriven.class javax.ejb.MessageDrivenBean.class javax.ejb.MessageDrivenContext.class javax.ejb.NoMoreTimeoutsException.class javax.ejb.NoSuchEJBException.class javax.ejb.NoSuchEntityException.class javax.ejb.NoSuchObjectLocalException.class javax.ejb.ObjectNotFoundException.class javax.ejb.PostActivate.class javax.ejb.PrePassivate.class javax.ejb.Remote.class javax.ejb.RemoteHome.class javax.ejb.Remove.class javax.ejb.RemoveException.class javax.ejb.Schedule.class javax.ejb.ScheduleExpression.class javax.ejb.Schedules.class javax.ejb.SessionBean.class javax.ejb.SessionContext.class javax.ejb.Session

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值