利用动态调用方式实现分布式应用(下)

原创 2002年04月09日 09:38:00

利用动态调用方式实现分布式应用(下)

(本文转载自软件工程专家网www.21cmm.com

苏洋

  上一讲介绍了利用动态调用方式实现分布式应用时, 客户端动态调用接口(DII)和服务对象动态骨架接口(DSI)的创建,下面用一个具体的例子来说明整个过程。

1. 对象功能描述和系统简要设计

  本例仍然模拟电信资费管理业务流程,在服务对象端注册一个电话用户。用户在远程客户端查询该用户本月发生的电话费用。根据对象功能的说明,用UML描述出服务对象需要实现的功能:

  getFee() : float

  openAccout( string name ) : Agent

2. 服务对象接口定义

  根据系统分析结果,用IDL编写出服务对象方法描述程序TeleComm.idl:

  module TeleComm

  {

  interface Agent

  {

  float getFee();

  };

  interface AgentManager

  {

  Account openAccount(in string name);

  };

  };

3. 接口的实现

(1)Agent接口的实现

  public class AgentImpl extends DynamicImplementation

  {

  //构造AgentImpl类

  //get方法在invoke动态调用方法中按名字匹配调用

  public synchronized org.omg.CORBA.Object get(String name){

  //申请账户金额,生成账户对象

  }

  public void invoke(org.omg.CORBA.ServerRequest request){

  //申请可移植对象适配器

  //填写调用参数,提出申请账户请求

  }

  }

(2)AgentManager接口实现

  public class AgentManagerImpl extends DynamicImplementation{

  //构造AgentManager类

  public void invoke(org.omg.CORBA.ServerRequest request){

  //填写调用参数表,向Agent对象提出业务请求,获取Agent对象

  //……

  }

  }

(3)服务器端程序设计

  public class Server {

  public static void main(String[] args) {

  //初始化ORB、申请POA和POA管理器

  //申请默认服务对象,激活POA管理器

  //等待调用请求

  //……

  }

(4)客户端程序设计

  public class Client {

  public static void main(String[] args) {

  //初始化ORB,定位Agentmanager对象

  //发出调用请求

  org.omg.CORBA.Request request=manager ._request(“getFee”);

  request.invoke();

  //查询返回结果,取得返回值

  request.get_response();

  //异常处理

  //……

  }

4. 程序设计及运行环境说明

  上述基于动态调用接口和动态骨架接口的程序是基于VisiBroker 4.5.1中间件环境开发的。其他环境下程序的实现方式和运行可能会有所差别。在VisiBroker环境下,按如下方式运行程序:

  (1)首先启动VisiBroker Smart Agent事务代理;

  (2)启动服务对象程序:vbj Server;

  (3)启动客户对象程序:vbj Client。

  其中vbj是VisiBroker for Java中的Java代码解释执行程序。读者也可以用Java解释工具java代替,但需要指定VisiBroker中的vbjorb等库。

Android上层APP利用sysfs调用底层驱动分析

自从移植驱动以来一直对应用层调用底层驱动的过程很感兴趣,每次看到Android的系统架构图时总是会自然的觉得上层APP调用底层驱动的时候使一层一层往下调用,从APP到framwork再到HAL最后到驱...
  • ouchao0727
  • ouchao0727
  • 2016年01月23日 16:07
  • 1862

谈谈分布式Session的几种实现方式,Session和Cookie的区别和联系以及Session的实现原理

一。分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可...
  • DreamSeeker_1314
  • DreamSeeker_1314
  • 2016年04月08日 19:42
  • 5290

分布式Session原理,最简单而高效的实现方式

分布式Session原理
  • collonn
  • collonn
  • 2016年09月29日 15:34
  • 2158

Spring 整合Quartz 2实现定时任务五:集群、分布式架构实现探讨

到这里,功能上我们已经全实现了。 但是有时候我们的项目不是部署在一台机器上的,而是一个集群环境,往往我们的定时任务只需要一台机器执行就够了。 那么我们怎么样来实现这种集群环境下的定时任务运...
  • hj7jay
  • hj7jay
  • 2016年03月01日 12:28
  • 2392

分布式Java应用之基于消息方式实现系统间的通信(2)

基于Java自身技术实现消息方式的系统间通信基于Java自身包实现消息方式的系统间通信的方式有:TCP/IP+BIO、TCP/IP+NIO、UDP/IP+BIO以及UDP/IP+NIO 4种,下面分别...
  • u010870518
  • u010870518
  • 2015年11月23日 19:40
  • 3593

分布式通信的几种方式

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,特别是在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等...
  • guodongsoft
  • guodongsoft
  • 2016年09月20日 09:19
  • 7213

实现动态代理的两种方式

常见的实现代理的两种方式:(1)JDK动态代理(2)使用cglib产生代理 这两种方法各有好坏。jdk动态代理是由java内部的反射机制生成字节码并生成对象来实现的,而cglib代理底层是借助asm...
  • qq_35347459
  • qq_35347459
  • 2017年05月03日 20:14
  • 1169

java分布式应用之初:实现系统间通信方式简介

我们知道大型的应用通常都会将整个系统拆分成多个子系统来实现,这些系统往往都会部署在不同的服务器上,对于java来说也可能是在不同的JVM上,但是这些子系统并不是独立的,他们需要通过互相通信来实现既定的...
  • lisaem
  • lisaem
  • 2016年07月01日 12:46
  • 2347

Redis分布式锁的正确实现方式(Java版)

前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有...
  • Josn_Hao
  • Josn_Hao
  • 2017年11月01日 12:22
  • 434

分布式Session的几种实现方式

一。分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的...
  • u014352080
  • u014352080
  • 2016年06月26日 20:38
  • 19179
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用动态调用方式实现分布式应用(下)
举报原因:
原因补充:

(最多只允许输入30个字)