博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EJB远程调用和本地调用
阅读量:6331 次
发布时间:2019-06-22

本文共 1266 字,大约阅读时间需要 4 分钟。

一,远程调用

@Stateless//一般定义成无状态的@Remotepublic 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,在接口上定义该接口该如何被调用

转载地址:http://xeboa.baihongyu.com/

你可能感兴趣的文章
并查集的应用之求解无向图中的连接分量个数
查看>>
7个神奇的jQuery 3D插件
查看>>
在线浏览PDF之PDF.JS (附demo)
查看>>
波形捕捉:(3)"捕捉设备"性能
查看>>
AliOS Things lorawanapp应用介绍
查看>>
美国人的网站推广方式千奇百怪
查看>>
java web学习-1
查看>>
用maven+springMVC创建一个项目
查看>>
linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法
查看>>
redis知识点整理
查看>>
Hello World
查看>>
Spring3全注解配置
查看>>
ThreadLocal真会内存泄露?
查看>>
IntelliJ IDEA
查看>>
低版本mybatis不能用PageHeper插件的时候用这个分页
查看>>
javaweb使用自定义id,快速编码与生成ID
查看>>
[leetcode] Add Two Numbers
查看>>
elasticsearch suggest 的几种使用-completion 的基本 使用
查看>>
04-【MongoDB入门教程】mongo命令行
查看>>
字符串与整数之间的转换
查看>>