`

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

    博客分类:
  • J2EE
阅读更多
这篇文章主要来学习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
  • 大小: 34.5 KB
3
0
分享到:
评论
1 楼 liu765023051 2013-12-26  
亲,local与remote有什么区别呢

相关推荐

    Local和Remote方式访问EJB

    EJB(Enterprise JavaBeans)是Java企业级应用开发的核心组件之一,主要用于构建可复用、安全和事务处理的服务器端应用程序。本主题将探讨“Local”和“Remote”两种方式访问EJB的知识点。 首先,我们要理解EJB的两...

    Weblogic Ejb 学习笔记

    - Remote接口适用于远程客户端,Local接口适用于在同一应用内的通信。 6. **EJB的并发和事务** - WebLogic Server支持多线程访问EJB,通过设置bean的并发策略(如Synchronized或Unsynchronized)来控制并发行为。...

    EJB3.0 实例教程 -- 切片1

    4.1.3 开发存在Remote与Local接口的无状态Session Bean ...17 4.2 STATEFUL SESSION BEANS(有状态BEAN)开发20 4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...22 4.4 如何改变SESSION BEAN的JNDI ...

    EJB3.0 实例教程 -- 切片2

    4.1.3 开发存在Remote与Local接口的无状态Session Bean ...17 4.2 STATEFUL SESSION BEANS(有状态BEAN)开发20 4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...22 4.4 如何改变SESSION BEAN的JNDI ...

    EJB学习

    3. **EJB接口和方法**:EJB通过接口暴露其服务,这些接口包括业务接口(Business Interface)、远程接口(Remote Interface)和本地接口(Local Interface)。业务方法定义了EJB提供的服务。 4. **EJB部署描述符**...

    Ejb2.0教程-java教程

    EJB 2.0 为不同类型的Bean定义了特定的接口,例如,实体Bean通常实现Home接口和Remote接口,而会话Bean可以有无接口、Local接口或Remote接口。 **9. 容器管理和组件接口** EJB 2.0 引入了Business Interface(业务...

    EJB基础(学习EJB者必看)

    EJB技术还涉及接口和实现的分离,通过远程接口(Remote Interface)和本地接口(Local Interface)使得客户端可以透明地调用bean的方法。此外,EJB 3.0引入了注解(Annotations),简化了bean的配置,使得开发者可以...

    ejb3.0非常实用教程

    - **同时提供Remote和Local接口**:结合两种接口类型的优势。 2. **有状态Session Bean** - 开发并部署有状态Session Bean。 3. **区别对比** - 无状态与有状态Session Bean的主要差异在于状态管理和生命周期。 4...

    EJB3最新学习教程,适合初学者

    - **@Local、@Remote:**定义本地和远程接口。 - **@EJB:**用于依赖注入EJB实例。 - **@Schedule:**用于定时任务。 #### 五、EJB3 实现业务逻辑 1. **定义接口:** - 使用`@Local`或`@Remote`注解来定义业务...

    Tomcat web工程 调用 JBOSS EJB local及remote源码

    Tomcat下web工程调用JBOSS部署的EJB项目 此源码包 包括local本地调用及remote远程调用 文档说明在http://blog.csdn.net/heardy/article/details/6906225

    EJB学习资料讲解EJB的三大bean的使用

    - 掌握EJB的接口和注解,例如`@Remote`、`@Local`、`@Stateless`、`@Stateful`、`@MessageDriven`等。 - 学习如何配置和部署EJB组件到应用服务器,如WildFly、GlassFish等。 - 熟悉JNDI(Java Naming and Directory ...

    EJB3.0中文 版

    ### EJB 3.0 中文版教程知识点总结 #### 1. 教程适用人群与背景 - **目标读者**:本教程旨在为具备Java基础的...通过学习这些知识点,初学者可以快速掌握EJB 3.0的核心概念和技术,并能够在实际项目中应用这些技术。

    EJB学习PPT(上)

    主要有Home接口(创建和查找bean实例)、Remote接口(业务方法)和Local接口(仅限于同一应用内的通信)。 5. **事务管理**:EJB支持事务属性,如Required、RequiresNew、Mandatory、NotSupported、Supports和Never...

    ejb 入门的几个项目

    - Session Bean的Remote接口与Home接口适用于远程访问,Local接口与Local Home接口则适用于同一应用内部访问。 5. EJB 3.0之后的简化: - 从EJB 3.0开始,引入注解替代XML配置,使得EJB更易于使用。 - 注解如`@...

    基于Java的实例源码-各种EJB之间的调用示例.zip

    - 本地接口调用(Local Interface Invocation):当客户端和EJB在同一JVM内时,可以使用本地接口,效率更高。 - 容器管理的依赖注入(Container-Managed Dependency Injection):EJB容器负责将依赖项注入bean,如...

    EJB学习笔记2

    - **Remote接口**:EJB对象实现的接口,复制Bean的公共业务方法,客户端通过此接口与EJB交互。 - **Home对象**:提供EJB对象的生成、查找和删除功能,实现EJB对象的工厂模式。 - **Local接口**:为提高效率,提供了...

    EJB专业学习资料

    在 EJB 架构中,客户端与 EJB 组件的交互通常是通过 Home 接口或 Local Home 接口完成的,而实际的业务逻辑由 Bean 类处理,这就体现了委派模式的应用。 #### 三、EJB类型 EJB 主要有三种类型: - **SessionBean**...

    javax.ejb-3.1.2.2.jar下载

    - `javax.ejb.EJB`、`javax.ejb.Local`和`javax.ejb.Remote`等注解:用于标记bean的接口,指定其作用范围和远程访问方式。 - `javax.ejb.TimerService`:提供了定时任务的管理,可以在EJB中创建和管理定时器。 描述...

    实战EJB 实战EJB 实战EJB

    1. **定义接口**:包括`remote`和`local`接口。 2. **实现无状态会话Bean**:实现定义的接口。 3. **配置部署描述符**:使用`ejb-jar.xml`指定Bean类型和其他部署信息。 **部署到应用服务器** 1. **打包**:将Bean...

Global site tag (gtag.js) - Google Analytics