EJB远程调用和本地调用

简介: 一,远程调用@Stateless//一般定义成无状态的@Remotepublic class UserManagerBean implements UserManager { @Override public void addUser(User user) { System.out.println("User["+user.getUsername()+"] is saved..."); user.setId(10); }}       因为要在远程调用中使用User对象,所以这个对象要实现序列化的接口。


一,远程调用


@Stateless//一般定义成无状态的
@Remote
public class UserManagerBean implements UserManager {
	@Override
	public void addUser(User user) {
		System.out.println("User["+user.getUsername()+"] is saved...");
		user.setId(10);
	}
}

       因为要在远程调用中使用User对象,所以这个对象要实现序列化的接口。


       测试远程调用:


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("张三");
		user.setPassword("lhc");
		userManager.addUser(user);
		System.out.println("用户信息已经被成保存,用户ID是:"+user.getId());
	}
	


     结果:




      发现调用完成之后,是服务端并没有把对User对象的值设置好之后返回client端。



二,本地调用


     新增类:




        PS:我的Jboss版本不支持将类同时标记为远程对象和本地对象,所以就分开写了。如果你在查找的时候,找不到对象,可能也是因为将类标记为remote跟local之后,因为服务器不支持,导致报错了。


        之后,新建web项目,并将这个web项目部署到跟EJB项目同一个jboss服务器下面.




     测试本地调用:


<%
	
		InitialContext context=new InitialContext();
		UserManager userManager=(UserManager)context.lookup("UserManagerBeanTwo/local");
		User user=new User();
		user.setUsername("张三");
		user.setPassword("lhc");
		userManager.addUser(user);
		out.println("用户信息已经被成保存,用户ID是:"+user.getId());
 %>

      根据结果:



       从上我们可以推断,因为两个项目在同一个Jboss服务器下面,所以本地调用ejb对象的时候,User对象是在这个服务器中是以引用的形式传递的,所以当服务端执行完成之后,我们可以从客户端看到用户ID被改变。


三,其他定义remote和local的方式


1,使用value标记接口该以哪种方式被调用





2,在接口上定义该接口该如何被调用









目录
相关文章
|
前端开发
2023Web前端开发八股文&面试题(万字系列)——这篇就够了!
2023Web前端开发八股文&面试题(万字系列)——这篇就够了!
2596 2
|
消息中间件 容器
【MQ系列】查看RabbitMQ的版本号
如果上述报错,则试试下面的方法。
1733 0
【MQ系列】查看RabbitMQ的版本号
|
2月前
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
189 1
Redis专题-实战篇二-商户查询缓存
|
JavaScript 前端开发 API
精选5个.NET开源且免费的通用权限管理系统
精选5个.NET开源且免费的通用权限管理系统
271 3
|
缓存 网络协议 固态存储
[译] 首字节时间 (TTFB) 如何影响了网站性能
[译] 首字节时间 (TTFB) 如何影响了网站性能
|
机器学习/深度学习 Python
线性回归 最小二乘法的求解推导与基于Python的底层代码实现
作为最常见的方法之一,线性回归仍可视为有监督机器学习的方法之一,同时也是一种广泛应用统计学和数据分析的基本技术。它是一种用于估计两个或多个变量之间线性关系的方法,其中一个变量是自变量,另一个变量是因变量。线性回归假设这两个变量之间存在线性关系,并试图找到一条最佳拟合直线,使预测值与实际值之间的误差最小化。
|
前端开发 搜索推荐 UED
React Server Side Rendering的神奇之处:如何用SSR提升SEO与首屏加载速度,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代Web开发中,React服务器端渲染(SSR)能显著提升SEO性能和首屏加载速度。通过在服务器端预渲染组件并发送HTML至客户端,SSR不仅优化了首屏加载时间,增强了用户体验,还生成了便于搜索引擎抓取的静态HTML文件,提升了页面排名。此外,SSR还具备提高安全性的优点,能够有效防范XSS攻击。虽然其开发复杂性和服务器负载是潜在劣势,但借助如Next.js等库、编写高效组件及定期维护等最佳实践,可以充分发挥SSR的优势,为未来Web开发注入更强动力。
298 0
|
算法 Serverless 计算机视觉
使用OpenCV和Python进行极线校正
使用OpenCV和Python进行极线校正
534 1
|
存储 Python Windows
文件位置标记与定位:概念、方法与实现
文件位置标记与定位:概念、方法与实现
383 0