`
jiagou
  • 浏览: 2530394 次
文章分类
社区版块
存档分类
最新评论

EJB3.0学习笔记---理解远程调用服务端和本地调用服务端的区别

 
阅读更多
项目目的:理解远程调用服务端和本地调用服务端的区别
1.异常:
javax.ejb.EJBException: Local and Remote Interfaces cannot


have duplicate interface for bean UserManagerBean
2.本地客户端可以使用远程访问方式;这样就会用远程的方式去调用;也就是说


取不到服务端设置的id值;
3.本地访问方式传递对象的时候,接口的实现类处理的对象和jsp中取得的对象


是同一个对象,也就是对应的本地的同一块内存区域,当用本地访问方式的时


候,user对象可以不实 现序列号接口
--------------------------------------------------------------------
4.注意:
a.本地的访问方式:客户端调用服务端EJB的时候,传递的是一个引用,客户端


和服务端用的是内存中的一块内存空间
b.远程访问的时候,传的是值;
--------------------------------------------------
5.注意:
a.如果写的客户端是web工程的时候,那么可以不需要引入EJB的包,因为
部署的时候,已经部署到jboss中了,而那些包,也已经在jboss启动的时


候加载,加入又重复的引入了EJB的jar包,那么eclipse在运行时候会把


这些jar包,加到WEB-INF/lib下,比如javax.servlet中千万不要重复的


丢到这里面来;
b.不需要,在src下写入jndi.properties文件;因为,它运行的时候就是在


jboss的运行环境中;
--------------------------------------------------------------------
1.新建项目:EJBTest_03
com.credream.ejb
User.java
package com.credream.ejb;


import java.io.Serializable;


public class User implements Serializable{
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}


}
----------------------------------------------------------

UserManager.java
package com.credream.ejb;


public interface UserManager {
public void addUser(User user);
}
------------------------------------------------

UserManagerBean.java
package com.credream.ejb;


import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;


@Stateless
@Remote(UserManager.class)
@Local(UserManager.class)
public class UserManagerBean implements UserManager {


public void addUser(User user) {
System.out.println("user[username="+user.getUsername()+"]已


经被成功保存了");
user.setId(10);
}
}
------------------------------------------------------------
新建本地客户端:javaproject,导入jar包,并且类路径下写入jndi.properties
com.credream.ejb
UserManagerClient.java
package com.credream.ejb;


import javax.naming.InitialContext;


public class UserManagerClient {
public static void main(String[] args) throws Exception{
InitialContext context=new InitialContext();
UserManager userManager=(UserManager) context.lookup("UserManagerBean/remote");
User user=new User();
user.setUsername("zhangsan");
user.setPassword("123lidewei");
userManager.addUser(user);
System.out.println("用户信息已经被成功保存,它的ID是:"+user.getId());
}


}
-------------------------------------------------------------------
新建远程客户端:新建web project
EJBTest03_webClient
<%@ page language="java" import="java.util.*,javax.naming.*,com.credream.ejb.*" 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>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>

<body>
<%
InitialContext context=new InitialContext();
//UserManager userManager=(UserManager) context.lookup("UserManagerBean/remote");
//本地客户端可以使用远程访问方式;这样就会用远程的方式去调用;也就是说 取不到服务端设置的id值;
UserManager userManager=(UserManager) context.lookup("UserManagerBean/local");
User user=new User();
user.setUsername("zhangsan");
user.setPassword("123lidewei");
userManager.addUser(user);
out.println("用户信息已经被成功保存,它的ID是:"+user.getId());
%>
</body>
</html>
--------------------------------------------------------------
通过这个例子的结果,可以分析,远程访问方式,和本地访问方式的不同,和联系
----------------------------------------------------------------
分享到:
评论

相关推荐

    EJB3.0入门经典-weblogi

    EJB3.0入门经典-weblogic EJB3.0入门经典-weblogic EJB3.0入门经典-weblogic

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...

    ejb3.0中文版--

    ejb3.0中文版 ejb3.0中文版 ejb3.0中文版

    EJB 3.0 实例教程-随书源码

    EJB 3.0 实例教程-随书源码,所有源码都在里面。简单易懂,深入浅出,欢迎下载

    EJB3.0实例教程-企业应用开发核心技术和Manning - EJB3 in Action

    EJB3.0实例教程-企业应用开发核心技术(作者黎活明)和Manning - EJB3 in Action(英文版)

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

    作者对EJB3.0 接触的时间很短,所以一些新的概念和知识理解也难免有误,有些概念和语义把握的不是很准, 希望在这方面有经验和了解的朋友批评指正,欢迎多提意见。 因为 JBOSS EJB3.0产品常未成熟,本教程随着新产品...

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

    EJB3.0 实例教程 第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成...

    传智播客EJB3.0_EJB3.0企业开发_Jboss_ppt_pptx_黎活明.rar

    2、传智播客EJB3.0.ppt--&gt;是以《传智播客EJB3.0.pptx》为源文件的简单复制与粘贴后的结果,其格式与源文件有些不同,更为简洁,但没有源文件美观。该文件office 97 - office 2003及以上版本都能打开。 下载资源后...

    agent-ejb-3.0-beta-1-javadoc.jar

    标签:agent-ejb-3.0-beta-1-javadoc.jar,agent,ejb,3.0,beta,1,javadoc,jar包下载,依赖包

    agent-ejb-3.0-beta-1-sources.jar

    标签:agent-ejb-3.0-beta-1-sources.jar,agent,ejb,3.0,beta,1,sources,jar包下载,依赖包

    agent-car-ejb-3.0-beta-1-sources.jar

    标签:agent-car-ejb-3.0-beta-1-sources.jar,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包

    agent-ejb-3.0-beta-1.jar

    标签:agent-ejb-3.0-beta-1.jar,agent,ejb,3.0,beta,1,jar包下载,依赖包

    EJB3.0规范-EJB3.0 SPECIFICATION

    EJB3.0规范 EJB3.0 SPECIFICATION 官方规范英文版

    Ejb3.0--4

    NULL 博文链接:https://xiaocong1001.iteye.com/blog/258852

    EJB3.0 学习笔记

    记录自己学习EJB3.0中学到的各个章节的一些东西.

    ejb3.0实例教程

    作者对 EJB3.0 接触的时间很短,所以一些新的概念和知识理解也难免有误,有些概念和语义把握的不是很准, 希望在这方面有经验和了解的朋友批评指正,欢迎多提意见。 因为 JBOSS EJB3.0 产品常未成熟,本教程随着新...

    ejb3.0入门图文教程

    ejb3.0入门图文教程,包括EJB3.0开发Entity.pdf、EJB3.0开发Message Driven Bean.pdf、EJB3.0开发Session Bean.pdf

    精通EJB3.0 中文版 3/3

    第二部分重点关注EJB编程的具体内容和过程,向开发者展示了如何使用会话Bean、将会话Bean发布为Web服务、消息驱动Bean;第三部分专注于高级EJB专题;第四部分是附录,收集了EJB组件技术相关的其他内容。

    EJB3.0规范和API文档

    ejb-3_0-pfd-spec-persistence ejb-3_0-pfd-spec-simplified ejb-3_0-fr-spec-ejbcore

Global site tag (gtag.js) - Google Analytics