项目目的:理解远程调用服务端和本地调用服务端的区别
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学习笔记---理解远程调用服务端和本地调用服务端的区别相关推荐

  1. EJB3.0学习笔记---多接口的时,实现类处理方法:

    EJB学习笔记--- 1.胖客户端:指的是定义的接口太多了,接口做的工作太多; 胖接口: 2.EJB实现类型的定义,用注解的方式,当一个EJBbean,实现了多个接口的时候, 需要用注解的方式指明哪一 ...

  2. EJB3.0学习笔记---MDBbean--区分P2P模式和Pub/Sub模式的示例

    1.注意在写MDB程序的时候,如果是使用的P2P方式的话,可能你写了多个同样的MDBbean,但是   只会有一个MDBbean被调用,至于是哪一个被调用是随机的,这时候其他的将不会起作用; 一个消息 ...

  3. EJB3.0学习笔记---MDB--第一个MDBBean程序:

    第一个MDBBean程序: P2P方式传递消息: 1.创建EJB项目:EJBTestP2P_05 2.在com.credream.ejb包下: MyQueueMDBBean.java package ...

  4. EJB3.0学习笔记--SOAP-AXIS--深入Soap引擎

    1.SOAP: 简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的.简单的.基于 XML 的协    议,它被设计成在 WEB 上交换结构化的和固化的信息. SOAP 可以和现存的许多因特网 ...

  5. EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P

    JMS:  1.jms是java的消息服务,jms的客户端之间可以通过jms服务进行异步的消息传输,jms支 持两种消息模型,Point--to--Point(P2P)和Publish/Subscri ...

  6. EJB3.0学习笔记---第一个EJB程序:

    第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java   pac ...

  7. EJB3.0学习笔记--第一个EJB程序:

    第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java   pac ...

  8. EJB3.0学习笔记---JBOSS 7.1.1 Final版本安装与配置

    一, 下载安装程序 由于JBOSS是免费开源软件,所以可以去官网直接下载即可. 下载地址:(目前最新版本是jboss-as-7.1.1.Final) http://download.jboss.org ...

  9. EJB3.0学习笔记---定义客户端访问接口:

    定义客户端访问接口: 1.回顾:有状态的EJB每次都是一个新的,可以区分客户端状态,无状态的EJB可 以看成是单例的 2.客户端仅通过业务逻辑Bean所定义的接口来访问业务逻辑(跟具体实现无关) 3. ...

最新文章

  1. 语义分割 DeepLabv3--Rethinking Atrous Convolution for Semantic Image Segmentation
  2. TENSORFLOW较好的博客
  3. 计算机视觉算法与应用清华大学,计算机视觉——算法与应用
  4. NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
  5. 如何在网络视听行业建一扇内容安全大门?
  6. compose yaml规则
  7. Qt开发之路——SogouInput\Components\ Error - RtlWerpReportException failed with status code :-107374182
  8. csdn积分c币获取方法
  9. iptable 简析
  10. Debian10.6 Xfce 系统安装教程
  11. 微信小程序自定义省市县联动组件
  12. Android 强大的图片加载缓存— Glide
  13. RT-Thread源码-__rt_ffs函数剖析
  14. java高德点到ian距离,高德地图(点到线段的最短距离算法)不调用高德API
  15. 叶胜超:V SYSTEMS(VSYS)--人人可发币的公链项目!
  16. 芯片引脚断了,没关系,剥开去盖后飞线还能用......
  17. composer 安装laravel 5.5 苹果终端
  18. 蹉跎二十载,漫漫人生路
  19. Python程序设计 实验5:字符串的应用
  20. vue2响应式原理解析并实现一个简单响应系统

热门文章

  1. scrapy中自定义过滤规则以及start_urls不进过滤器的问题
  2. 3Dslicer中 PET/CT 模块:PET Standard Uptake Value Computation
  3. WMI 获得已安装应用程序列表
  4. TensorFlow神经网络(九)VGG net论文阅读笔记
  5. 棋牌游戏服务器设计(1)
  6. Atmel与ARM合力打造物联网开发平台
  7. react-native 项目实战 -- 新闻客户端(6) -- 完善ListView头部视图
  8. uva 11396Claw Decomposotion(二分图判定)
  9. 中国企业借东博会“走出去”将打造马来西亚首个智慧城市
  10. Titon Toolkit – 非常强大的用户界面组件