当前位置: 首页 > news >正文

网站建设必会的软件官网指的是什么网站

网站建设必会的软件,官网指的是什么网站,建设地方性综合门户网站大致多少钱?要多大的流量?,济南专业的设计网站见#xff1a;https://baike.baidu.com/item/RMI/1786244?fraladdin RMI远程方法调用 相关概述 RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象#xff0c;它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说https://baike.baidu.com/item/RMI/1786244?fraladdin RMI远程方法调用 相关概述 RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说这样使原先的程序在同一操作系统的方法调用变成了不同操作系统之间程序的方法调用由于J2EE是分布式程序平台它以RMI机制实现程序组件在不同操作系统之间的通信。比如一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。RMIRemote Method Invocation远程方法调用是用Java在JDK1.1中实现的它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言其巨大的威力就体现在它强大的开发分布式网络应用的能力上而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信实现远程对象之间的无缝远程调用。RMI目前使用Java远程消息交换协议JRMPJava Remote Messaging Protocol进行通信。JRMP是专为Java的远程对象制定的协议。因此Java RMI具有Java的“Write OnceRun Anywhere”的优点是分布式应用系统的百分之百纯Java解决方案。用Java RMI开发的应用系统可以部署在任何支持JREJava Run Environment Java运行环境的平台上。但由于JRMP是专为Java对象制定的因此RMI对于用非Java语言开发的应用系统的支持不足。不能与用非Java语言书写的对象进行通信。Java Remote Method Invocation ( RMI -- Java远程方法调用)允许您使用Java编写分布式对象。本文将介绍RMI的优点以及如何将其连接到现有的和原有的系统中以及与用Java 编写的组件的连接。RMI为采用Java对象的分布式计算提供了简单而直接的途径。这些对象可以是新的Java对象也可以是围绕现有API的简单的Java包装程序。Java体现了“编写一次就能在任何地方运行的模式。而RMI可将Java模式进行扩展使之可在任何地方运行”。因为RMI是以Java为核心的所以它将Java的安全性和可移植性等强大功能带给了分布式计算。您可将代理和业务逻辑等属性移动到网络中最合适的地方。如果您要扩展Java在系统中的使用RMI将使您充分利用其强大功能。RMI可利用标准Java本机方法接口JNI[1]与现有的和原有的系统相连接。RMI还可利用标准JDBC包与现有的关系数据库连接。RMI/JNI和RMI/JDBC相结合可帮助您利用RMI与目前使用非Java语言的现有服务器进行通信而且在您需要时可扩展Java在这些服务器上的使用。RMI可帮助您在扩展使用时充分利用Java的强大功能。RMI系统运行机理 RMI应用程序通常包括两个独立的程序服务器程序和客户机程序。典型的服务器应用程序将创建多个远程对象使这些远程对象能够被引用然后等待客户机调用这些远程对象的方法。而典型的客户机程序则从服务器中得到一个或多个远程对象的引用然后调用远程对象的方法。RMI为服务器和客户机进行通信和信息传递提供了一种机制。在与远程对象的通信过程中RMI使用标准机制stub和skeleton。远程对象的stub担当远程对象的客户本地代表或代理人角色。调用程序将调用本地stub的方法而本地stub将负责执行对远程对象的方法调用。在RMI中远程对象的stub与该远程对象所实现的远程接口集相同。调用stub的方法时将执行下列操作(1) 初始化与包含远程对象的远程虚拟机的连接(2) 对远程虚拟机的参数进行编组写入并传输(3) 等待方法调用结果(4) 解编读取返回值或返回的异常(5) 将值返回给调用程序。为了向调用程序展示比较简单的调用机制stub将参数的序列化和网络级通信等细节隐藏了起来。在远程虚拟机中每个远程对象都可以有相应的skeleton在JDK1.2环境中无需使用skeleton。Skeleton负责将调用分配给实际的远程对象实现。它在接收方法调用时执行下列操作(1) 解编读取远程方法的参数(2) 调用实际远程对象实现上的方法(3) 将结果返回值或异常编组写入并传输给调用程序。stub和skeleton由rmic编译器生成。利用RMI编写分布式对象应用程序需要完成以下工作(1) 定位远程对象。应用程序可使用两种机制中的一种得到对远程对象的引用。它既可用RMI的简单命名工具rmiregistry来注册它的远程对象也可以将远程对象引用作为常规操作的一部分来进行传递和返回。2与远程对象通信。远程对象间通信的细节由RMI处理对于程序员来说远程通信看起来就像标准的Java方法调用。3给作为参数或返回值传递的对象加载类字节码。因为RMI允许调用程序将纯Java对象传给远程对象所以RMI将提供必要的机制既可以加载对象的代码又可以传输对象的数据。在RMI分布式应用程序运行时服务器调用注册服务程序以使名字与远程对象相关联。客户机在服务器上的注册服务程序中用远程对象的名字查找该远程对象然后调用它的方法。系统组成 一个正常工作的RMI系统由下面几个部分组成·远程服务的接口定义·远程服务接口的具体实现·桩Stub和框架Skeleton文件·一个运行远程服务的服务器·一个RMI命名服务它允许客户端去发现这个远程服务·类文件的提供者一个HTTP或者FTP服务器·一个需要这个远程服务的客户端程序技术原理 RMI系统结构在客户端和服务器端都有几层结构。--------- ----------| 客户 | |服务器|---------- ----------| |------------- ----------| 占位程序| |骨干网|-------------- -----------| |------------------------------------| 远 程 引 用 层 |------------------------------------| |------------------------------------| 传 输 层 |------------------------------------方法调用从客户对象经占位程序Stub)、远程引用层(Remote Reference Layer)和传输层Transport Layer向下传递给主机然后再次经传 输层向上穿过远程调用层和骨干网Skeleton到达服务器对象。 占位程序扮演着远程服务器对象的代理的角色使该对象可被客户激活。 远程引用层处理语义、管理单一或多重对象的通信决定调用是应发往一个服务器还是多个。传输层管理实际的连接并且追追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端再向上经传输层和远程调用层返回。最后占位程序获得返回值。要完成以上步骤需要有以下几个步骤1、生成一个远程接口2、实现远程对象(服务器端程序)3、生成占位程序和骨干网(服务器端程序)4、编写服务器程序5、编写客户程序6、注册远程对象7、启动远程对象具体实现如下1、生成一个远程接口package c15.ptime;importjava.rmi.*;public interface PerfectTimeI extends Remote {long getPerfectTime() throws RemoteException;}2、实现远程对象服务器端程序package c15.ptime;import java.rmi.*;importjava.rmi.server.*;importjava.rmi.registry.*;import java. nbsp;net.*;public class PerfectTime extends UnicastRemoteObject implements PerfectTimeI {public long getPerfectTime() throws RemoteException {return System.currentTimeMillis();}public PerfectTime() throws RemoteException {super();}public static void main(String[] args) {try {PerfectTime pt new PerfectTime();LocateRegistry.createRegistry(2005);Naming.rebind( //zhouty:2005/PerfectTime , pt);System.out.println(Ready to do time);} catch(Exception e) {e.printStackTrace();}}}4、编译远程对象服务器端程序javac -classpath . -d . PerfectTime.java5、生成根和干占位程序和骨干程序rmic -classpath . -d . c15.ptime.PerfectTime注jdk1.2以后的都不需要skeleton,所以如果你用的jdk为5.0版本的不要奇怪为什么只产生了stub没有skeleton。6、注册远程对象start rmiregistry 2005注绑定服务的默认端口为1099如果使用了这个端口则可以直接使用 start rmiregistry而不需要跟端口如果这种注册远程对象的方法不起作用还有一种方法就是在绑定服务之前使用LocateRegistry.createRegistry(1099) 来注册远程对象7、启动服务器端程序java-Djava.rmi.server.codebasefile:///d:/TestRMI/ c15.ptime.PerfectTime8、编写客户端程序package c15.ptime;import java.rmi.*;importjava.rmi.registry.*;public class DisplayPerfectTime {public static void main(String[] args) {System.setSecurityManager( new RMISecurityManager());try {PerfectTimeI t (PerfectTimeI)Naming.lookup( 192.168.0.171:2005/PerfectTime);for(int i 0 ; i 10; i)System.out.println(Perfect time t.getPerfectTime());} catch(Exception e) {e.printStackTrace();}}}9、编译客端程序javac -classpath . -d . DisplayPerfectTime.java10、修改JVM的配置文件 客户机和服务器的都需要经过修改%JRE_HOME%\policytool.exe11、启动客户程序java -classpath . c15.ptime.DisplayPerfectTime12、返回结果Perfect time 967274884390Perfect time 967274884450Perfect time 967274884450Perfect time 967274884450Perfect time 967274884500Perfect time 967274884500Perfect time 967274884560Perfect time 967274884610Perfect time 967274884610Perfect time 967274884610RMI远程方法调用的优点 从最基本的角度看RMI是Java的远程过程调用(RPC)机制。与传统的RPC系统相比RMI具有若干优点因为它是Java面向对象方法的一部分。传统的RPC系统采用中性语言所以是最普通的系统--它们不能提供所有可能的目标平台所具有的功能。RMI以Java为核心可与采用本机方法与现有系统相连接。这就是说RMI可采用自然、直接和功能全面的方式为您提供分布式计算技术而这种技术可帮助您以不断递增和无缝的方式为整个系统添加Java功能。RMI的主要优点如下面向对象RMI可将完整的对象作为参数和返回值进行传递而不仅仅是预定义的数据类型。也就是说您可以将类似Java哈希表这样的复杂类型作为一个参数进行传递。而在目前的RPC系统中您只能依靠客户机将此类对象分解成基本数据类型然后传递这些数据类型最后在服务器端重新创建哈希表。RMI则不需额外的客户程序代码(将对象分解成基本数据类型)直接跨网传递对象。可移动属性RMI可将属性(类实现程序)从客户机移动到服务器或者从服务器移到客户机。例如您可以定义一个检查雇员开支报告的接口以便察看雇员是否遵守了公司目前实行的政策。在开支报告创建后客户机就会从服务器端获得实现该接口的对象。如果政策发生变化服务器端就会开始返回使用了新政策的该接口的另一个实现程序。您不必在用户系统上安装任何新的软件就能在客户端检查限制条件--从而向用户提供烁快的反馈并降低服务器的工作量。这样就能具备最大的灵活性因为政策改变时只需要您编写一个新的Java类并将其在服务器主机上安装一次即可。设计方式对象传递功能使您可以在分布式计算中充分利用面向对象技术的强大功能如二层和三层结构系统。如果您能够传递属性那么您就可以在您的解决方案中使用面向对象的设计方式。所有面向对象的设计方式无不依靠不同的属性来发挥功能如果不能传递完整的对象--包括实现和类型--就会失去设计方式上所提供的优点。安 全RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。RMI使用专门为保护系统免遭恶意小应用程序侵害而设计的安全管理程序可保护您的系统和网络免遭潜在的恶意下载程序的破坏。在情况严重时服务器可拒绝下载任何执行程序。便于编写和使用RMI使得Java远程服务程序和访问这些服务程序的Java客户程序的编写工作变得轻松、简单。远程接口实际上就是Java接口。服务程序大约用三行指令宣布本身是服务程序其它方面则与任何其它Java对象类似。这种简单方法便于快速编写完整的分布式对象系统的服务程序并快速地制做软件的原型和早期版本以便于进行测试和评估。因为RMI程序编写简单所以维护也简单。可连接现有/原有的系统RMI可通过Java的本机方法接口JNI与现有系统进行进行交互。利用RMI和JNI您就能用Java语言编写客户端程序还能使用现有的服务器端程序。在使用RMI/JNI与现有服务器连接时您可以有选择地用Java重新编写服务程序的任何部分并使新的程序充分发挥Java的功能。类似地RMI可利用JDBC、在不修改使用数据库的现有非Java源代码的前提下与现有关系数据库进行交互。编写一次到处运行RMI是Java“编写一次到处运行 ”方法的一部分。任何基于RMI的系统均可100%地移植到任何Java虚拟机上RMI/JDBC系统也不例外。如果使用RMI/JNI与现有系统进行交互工作,则采用JNI编写的代码可与任何Java虚拟机进行编译、运行。分布式垃圾收集RMI采用其分布式垃圾收集功能收集不再被网络中任何客户程序所引用的远程服务对象。与Java虚拟机内部的垃圾收集类似分布式垃圾收集功能允许用户根据自己的需要定义服务器对象并且明确这些对象在不再被客户机引用时会被删除。并行计算RMI采用多线程处理方法可使您的服务器利用这些Java线程更好地并行处理客户端的请求。Java分布式计算解决方案RMI从JDK 1.1开始就是Java平台的核心部分因此它存在于任何一台1.1 Java虚拟机中。所有RMI系统均采用相同的公开协议所以所有Java 系统均可直接相互对话而不必事先对协议进行转换。RMI与CORBA的关系 RMI 和 CORBA 常被视为相互竞争的技术因为两者都提供对远程分布式对象的透明访问。但这两种技术实际上是相互补充的一者的长处正好可以弥补另一者的短处。RMI 和 CORBA 的结合产生了RMI-IIOPRMI-IIOP 是企业服务器端 Java 开发的基础。1997 年IBM 和 Sun Microsystems启动了一项旨在促进 Java 作为企业开发技术的发展的合作计划。两家公司特别着力于如何将 Java 用作服务器端语言生成可以结合进现有体系结构的企业级代码。所需要的就是一种远程传输技术它兼有 Java 的 RMIRemote Method Invocation远程方法调用较少的资源占用量和更成熟的 CORBACommon Object Request Broker Architecture公共对象请求代理体系结构技术的健壮性。出于这一需要RMI-IIOP问世了它帮助将 Java 语言推向了目前服务器端企业开发的主流语言的领先地位。RMI示例Java远程方法调用(RMI)提供了Java程序语言的远程通讯功能,这种特性使客户机上运行的程序可以调用远程服务器上的对象,使Java编程人员能够在网络环境中分布操作。创建一个简单的Java分布式远程方法调用程序可以按以下几个步骤操作,一、定义远程接口在 Java 中远程对象是实现远程接口的类的实例, 远程接口声明每个要远程调用的方法。在需要创建一个远程对象的时候我们通过传递一个接口来隐藏基层的实施细节客户通过接口句柄发送消息即可。远程接口具有如下特点1) 远程接口必须为public属性。如果不这样除非客户端与远程接口在同一个包内否则 当试图装入实现该远程接口的远程对象时调用会得到错误结果。2) 远程接口必须扩展接口java.rmi.Remote。3) 除与应用程序本身特定的例外之外远程接口中的每个方法都必须在自己的throws从句中 声明java.rmi.RemoteException。或RemoteException 的父类。4) 作为参数或返回值传递的一个远程对象(不管是直接还是本地对象中嵌入)必须声明为远 程接口而不应声明为实施类。下面是远程接口的接口RmiSample的定义Java代码import java.rmi.*; public interface RmiSample extends Remote { public int sum(int a,int b) throws RemoteException; }二、实现远程接口远程对象实现类必须扩展远程对象java.rmi.UnicastRemoteObject类并实现所定义的远程接口。远程对象的实现类中包含实现每个远程接口所指定的远程方法的代码。这个类也可以含有附加的方法但客户只能使用远程接口中的方法。因为客户是指向接口的一个句柄而不是它的哪个类。必须为远程对象定义构造函数即使只准备定义一个默认构造函数用它调用基础类构造函数。因为基础类构造函数可能会抛出java.rmi.RemoteException所以即使别无它用必须抛出java.rmi.RemoteException例外。以下是远程对象实现类的声明Java代码import java.rmi.*;importjava.rmi.server.*;public class RmiSampleImpl extends UnicastRemoteObject implements RmiSample {RmiSampleImpl() throws RemoteException {super();}public int sum(int a,int b) throws RemoteException {return a b;}}三、编写服务器类:包含 main 方法的类可以是实现类自身也可以完全是另一个类。下面通过RmiSampleServer 来创建一个远程对象的实例并通过java.rmi.registry.LocateRegistry类的createRegistry 方法从指定端口号启动注册服务程序也可以通过执行 rmiregistry 命令启动注册服务程序注册服务程序的缺省运行端口为 1099。必须将远程对象名字绑定到对远程对象的引用上Naming.rebind(//localhost:8808/SAMPLE-SERVER , Server);以下是服务器类的声明Java代码import java.rmi.*;import java.rmi.registry.*;public class RmiSampleServer{public static void main(String args[]) {try {LocateRegistry.createRegistry(8808) ;SampleServerImpl Server new SampleServerImpl();// 将该对象实例与名称“SAMPLE-SERVER”捆绑Naming.rebind(//localhost:8808/SAMPLE-SERVER , Server);} catch (MalformedURLException me) {System.out.println(Malformed URL: me.toString());} catch (RemoteException re) {System.out.println(Remote exception: re.toString());}}}四、编写使用远程服务的客户机类:客户机类的主要功能有两个一是通过Naming.lookup方法来构造注册服务程序stub 程序实例二是调用服务器远程对象上的远程方法。以下是服务器类的声明Java代码import java.rmi.*;importjava.rmi.server.*;public class RmiSampleClient { public static void main(String[] args) {try {String url //localhost:8808/SAMPLE-SERVER;RmiSample RmiObject (RmiSample)Naming.lookup(url);System.out.println( 1 2 RmiObject.sum(1,2) );} catch (RemoteException exc) {System.out.println(Error in lookup: exc.toString());} catch (MalformedURLException exc) {System.out.println(Malformed URL: exc.toString());} catch (java.rmi.NotBoundException exc) {System.out.println(NotBound: exc.toString());}}}五、编译代码:要编译 Java 源文件请运行javac 命令Java代码javac RmiSample.java RmiSampleImpl.java RmiSampleServer.java RmiSampleClient.javajavac RmiSample.java RmiSampleImpl.java RmiSampleServer.java RmiSampleClient.java六、为远程对象实现创建根和干要创建存根程序和骨架文件应以包含远程对象实现的已编译类包全名运行 rmic编译器。存根Stub是远程对象在客户端的代理它将RMI调用传递给服务器端的骨架Skeleton后者负责将该调用传递给实际的远程方法输入如下Java代码D:\RMIrmic -d D:\RMI RmiSampleImplD:\RMIrmic -d D:\RMI RmiSampleImpl 执行这个命令 若rmic成功运行RMI目录下就会多出两个新类 RmiSampleImpl_Stub.class RmiSampleImpl_Skel.class 它们分别对应的是存根(stub)和骨架(skeleton).七、运行代码运行服务端程序在Windows下输入下列命令在后台启动RmiSampleServer程序Java代码D:\RMIjava RmiSampleServerD:\RMIjava RmiSampleServer运行客户端程序:Java代码D:\RMIjava RmiSampleClientD:\RMIjava RmiSampleClient客户端输出: 1 2 3
http://www.zqtcl.cn/news/42819/

相关文章:

  • 商务网站开发代码icp备案查询官网入口
  • 做的网站怎么发布一般通过人
  • 初中生做网站挣钱做网站用旧域名好不好
  • 外贸营销网站制作公司找产品厂家用哪个app
  • 陕西省建设注册中心网站哪里有网站建设哪家好
  • 国家和住房城乡建设部网站门户网站建站方案
  • vs中做网站怎么设置图片标准招聘网站做销售
  • 小程序网址链接提取东莞市网络优化推广公司
  • 潍坊网站设计好处做国际物流在哪些网站找客户
  • 专业网站建设设计装饰wordpress提权
  • 专业做家具的网站有哪些四川绵阳网站建设
  • 做服饰网站苏州cms建站
  • 山东网站策划怎么做产品软文
  • 昆山网站建设秦皇岛北京ifc大厦
  • 威海网站制作wordpress post 请求
  • 长沙大型做网站公司如何建单页网站栏目
  • 做定制网站多少钱东华网站开发
  • 美工做任务网站做app软件开发的公司
  • 关键词那种网站设计兼职网站
  • flash网站建设教程手游app平台推广微信xiala5
  • 安徽企业建站系统平台阿里云网站建设方案
  • 广州电商网站开发广东电白建设集团有限公司网站
  • 企业网站备案网站网站建设在电子商务中的作用的看法
  • 网站建设公司及网络安全法哪些网站比较容易做
  • 巩义便宜网站建设黄页88怎样发信息
  • 淘宝京东拼多多购物券网站怎么做WordPress显示不出广告
  • 模板网站建设合同口碑好的网站建设商家
  • 网站建设网络网站建设最基础是什么
  • 山东平台网站建设找哪家ci wordpress cms
  • 网站建设以及推广销售客户怎么找浙江省建设工程信息网官网