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学习笔记---理解远程调用服务端和本地调用服务端的区别相关推荐
- EJB3.0学习笔记---多接口的时,实现类处理方法:
EJB学习笔记--- 1.胖客户端:指的是定义的接口太多了,接口做的工作太多; 胖接口: 2.EJB实现类型的定义,用注解的方式,当一个EJBbean,实现了多个接口的时候, 需要用注解的方式指明哪一 ...
- EJB3.0学习笔记---MDBbean--区分P2P模式和Pub/Sub模式的示例
1.注意在写MDB程序的时候,如果是使用的P2P方式的话,可能你写了多个同样的MDBbean,但是 只会有一个MDBbean被调用,至于是哪一个被调用是随机的,这时候其他的将不会起作用; 一个消息 ...
- EJB3.0学习笔记---MDB--第一个MDBBean程序:
第一个MDBBean程序: P2P方式传递消息: 1.创建EJB项目:EJBTestP2P_05 2.在com.credream.ejb包下: MyQueueMDBBean.java package ...
- EJB3.0学习笔记--SOAP-AXIS--深入Soap引擎
1.SOAP: 简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的.简单的.基于 XML 的协 议,它被设计成在 WEB 上交换结构化的和固化的信息. SOAP 可以和现存的许多因特网 ...
- EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P
JMS: 1.jms是java的消息服务,jms的客户端之间可以通过jms服务进行异步的消息传输,jms支 持两种消息模型,Point--to--Point(P2P)和Publish/Subscri ...
- EJB3.0学习笔记---第一个EJB程序:
第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java pac ...
- EJB3.0学习笔记--第一个EJB程序:
第一个EJB程序: 开发服务端程序: 1.新建一个EJB project:EJBTest_01 2.在src下建包:com.credream.ejb 3.写接口:FirstEjb.java pac ...
- EJB3.0学习笔记---JBOSS 7.1.1 Final版本安装与配置
一, 下载安装程序 由于JBOSS是免费开源软件,所以可以去官网直接下载即可. 下载地址:(目前最新版本是jboss-as-7.1.1.Final) http://download.jboss.org ...
- EJB3.0学习笔记---定义客户端访问接口:
定义客户端访问接口: 1.回顾:有状态的EJB每次都是一个新的,可以区分客户端状态,无状态的EJB可 以看成是单例的 2.客户端仅通过业务逻辑Bean所定义的接口来访问业务逻辑(跟具体实现无关) 3. ...
最新文章
- 语义分割 DeepLabv3--Rethinking Atrous Convolution for Semantic Image Segmentation
- TENSORFLOW较好的博客
- 计算机视觉算法与应用清华大学,计算机视觉——算法与应用
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
- 如何在网络视听行业建一扇内容安全大门?
- compose yaml规则
- Qt开发之路——SogouInput\Components\ Error - RtlWerpReportException failed with status code :-107374182
- csdn积分c币获取方法
- iptable 简析
- Debian10.6 Xfce 系统安装教程
- 微信小程序自定义省市县联动组件
- Android 强大的图片加载缓存— Glide
- RT-Thread源码-__rt_ffs函数剖析
- java高德点到ian距离,高德地图(点到线段的最短距离算法)不调用高德API
- 叶胜超:V SYSTEMS(VSYS)--人人可发币的公链项目!
- 芯片引脚断了,没关系,剥开去盖后飞线还能用......
- composer 安装laravel 5.5 苹果终端
- 蹉跎二十载,漫漫人生路
- Python程序设计 实验5:字符串的应用
- vue2响应式原理解析并实现一个简单响应系统
热门文章
- scrapy中自定义过滤规则以及start_urls不进过滤器的问题
- 3Dslicer中 PET/CT 模块:PET Standard Uptake Value Computation
- WMI 获得已安装应用程序列表
- TensorFlow神经网络(九)VGG net论文阅读笔记
- 棋牌游戏服务器设计(1)
- Atmel与ARM合力打造物联网开发平台
- react-native 项目实战 -- 新闻客户端(6) -- 完善ListView头部视图
- uva 11396Claw Decomposotion(二分图判定)
- 中国企业借东博会“走出去”将打造马来西亚首个智慧城市
- Titon Toolkit – 非常强大的用户界面组件