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,在接口上定义该接口该如何被调用









目录
相关文章
|
Java 机器人 Maven
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)
194 0
|
设计模式 负载均衡 Nacos
远程调用 OpenFeign 底层原理解析
Feign 是Springcloud 提供一个声明式的伪Http客户端 它使得调用远程服务就像调用本地服务一样简单 只需要创建一个接口 并且添加注解就可以 Nacos 很好的兼容Feign Feign 默认集成了Ribbon 所以在Nacos 下使用Fegin 默认就实现了负载均衡的效果
1778 0
远程调用 OpenFeign 底层原理解析
|
2月前
|
JSON Dubbo Java
Feign远程调用
Feign远程调用
25 1
Feign远程调用
|
5月前
|
编解码 负载均衡 监控
RPC远程调用
RPC远程调用
|
Java Maven 微服务
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法
182 0
|
8月前
|
JSON 负载均衡 算法
SpringCloud-Feign解决模块之间的远程调用
SpringCloud-Feign解决模块之间的远程调用
|
8月前
|
API 数据库管理
远程调用-其他服务
远程调用-其他服务
66 1
|
8月前
|
XML JSON 网络协议
RPC远程服务如何调用
【2月更文挑战第12天】一个完整的 RPC 调用框架包括:通信框架、通信协议、序列化和反序列化三部分。
|
8月前
|
Java Apache
远程调用工具HttpClient工具类封装
java远程调用工具HttpClient工具类类封装