Java rmi远程方法调用基本用法解析
本文主要介绍Java中的rmi的基本使用
1:项目架构
api:主要是接口的定义,url地址,端口号
rmiconsumer:rmi服务的调用者
rmiserver:rmi服务的提供者
2:pom.xnl
api的pom.xml
<artifactId>api</artifactId> <groupId>com.api</groupId> <version>1.0</version> rmiconsumer和rmiserver的pom.xml <dependency> <groupId>com.api</groupId> <artifactId>api</artifactId> <version>1.0</version> </dependency>
该功能主要是将api的引入到服务端和客户端
3:代码
api的代码
public interface RMIInterface extends Remote { String RMI_URL = "rmi://127.0.0.1:9080/RMIServer"; int PORT = 9080; Object sayHello(String name) throws RemoteException; }
rmiserver的代码
public class RMIInterfaceImpl extends UnicastRemoteObject implements RMIInterface { public RMIInterfaceImpl() throws RemoteException { } @Override public Object sayHello(String name) throws RemoteException { return "你好,你连接成功,姓名:"+name; } }
public class RMIServer { public static void main(String[] args) { try { RMIInterface rmi = new RMIInterfaceImpl(); //注册通讯端口 LocateRegistry.createRegistry(RMIInterface.PORT); //注册通讯路径 Naming.bind(RMIInterface.RMI_URL,rmi); System.out.println("rmi服务端启动成功"); }catch (Exception e){ e.printStackTrace(); } } }
rmiconsumer
public class RMIConsumer { public static void main(String[] args) { //远程调用RMI RMIInterface rmiInterface =null; try{ rmiInterface =(RMIInterface) Naming.lookup(RMIInterface.RMI_URL); Object ret = rmiInterface.sayHello("张先生"); System.out.println("测试远程调用成功,返回结果:"+ret); }catch (Exception e){ e.printStackTrace(); } } }
4:总结
接口必须继承 Remote
接口的实现类必须继承 UnicastRemoteObject
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Java远程调用Shell脚本并获取输出信息【推荐】
1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId&g
-
如何用java编写一个rmi
RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方法调用的任何对象必须实现该远程接口. 调用这样一个对象时,其参数为 "marshalled" 并将其从本地虚拟机发送到远程虚拟机(该远程虚拟机的参数为 "unmarshalled")上.该方法终止时,将编组来自远程机的结果并将结果发送到调用方的虚拟机.如果方法调用导致抛出异常,则该
-
Java的Spring框架下RMI与quartz的调用方法
Spring调用RMI RMI(Remote Method Invocation) 远程方法调用,实现JAVA应用之间的远程通信.下面介绍使用Spring如何使用RMI. 包的结构如下: 定义调用接口 public interface UserDao { public String getUser(String username)throws Exception; } 接口实现类 public class UserDaoImplimplements UserDao { public String
-
Java利用Sping框架编写RPC远程过程调用服务的教程
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC.会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化. 众所周知,TCP 是传输层协议,HTTP 是应用层协议,而传输层较应用层更加底层,在数据传输方面,越底层越快,因此,在一般情况下
-
Java RMI详细介绍及简单实例
Java RMI详解 概要: Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方法调用的任何对象必须实现该远程接口. Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术. 大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一些开源的远程调用组件,其底层技术也是rmi. 在大力鼓吹Web Service.SO
-
java使用rmi传输大文件示例分享
为什么要用RMI在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了RMI和Java-sockets两种之间,其中RMI的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,反观java-sockets,虽然比较灵活,但需要自己规定服务器端和客户端之间的通信协议.比较麻烦,几经权衡,最终还是选择RMI来进行服务器-客户端通信 文件上传问题在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比
-
java远程连接调用Rabbitmq的实例代码
本文介绍了java远程连接调用Rabbitmq,分享给大家,希望此文章对各位有所帮助. 打开IDEA创建一个maven工程(Java就可以了). pom.xml文件如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apac
-
百度手写板代码JavaScript远程调用的实现(鼠标输入法)
百度在线手写板 #sx{color:#00C;text-decoration:underline;cursor:pointer;} 手写 var w = window,d = document,n = navigator,k = d.f.wd if (w.attachEvent) { w.attachEvent("onload", function() {k.focus();}) } else { w.addEventListener('load', function() {k.foc
-
启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
一.问题描述 今天一来公司,在IntelliJ IDEA 中启动Tomcat服务器时就出现了如下图所示的错误: 错误: 代理抛出异常错误: java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use: JVM_Bind 这里说的是1099端口被其它进程占用了. 二.解决办法 找出占用1099端口的进程,
-
Java rmi远程方法调用基本用法解析
本文主要介绍Java中的rmi的基本使用 1:项目架构 api:主要是接口的定义,url地址,端口号 rmiconsumer:rmi服务的调用者 rmiserver:rmi服务的提供者 2:pom.xnl api的pom.xml <artifactId>api</artifactId> <groupId>com.api</groupId> <version>1.0</version> rmiconsumer和rmiserver的pom
-
Java设计模式模板方法模式(Template)用法解析
这篇文章主要介绍了Java设计模式模板方法模式(Template)用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言: 我们在开发中有很多固定的流程,这些流程有很多步凑是固定的,比如JDBC中获取连接,关闭连接这些流程是固定不变的,变动的只有设置参数,解析结果集这些是根据不同的实体对象"来做调整",针对这种拥有固定算法流程,其中有固定的步凑,存在不固定的步凑的情况下就诞生了模板方法模式. 模板方法模式(Template)定义
-
Java桥接模式原理及用法解析
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类.这两种类型的类可被结构化改变而互不影响. 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法.其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆. 介绍 意图:将抽象部分与实现部分分离,使它们都可以独立的变化. 主要解决:在有多
-
Java多线程volatile原理及用法解析
首先volatile有两大功能: 保证线程可见性 禁止指令重排序 1.保证线程可见性 首先我们来看这样一个程序,其中不加volatile关键字运行的结果截然不同,加上volatile程序能够正常结束,不加则程序进入死循环: package com.designmodal.design.juc01; import java.util.concurrent.TimeUnit; /** * @author D-L * @Classname T001_volatile * @Version 1.0 *
-
Java foreach相关原理及用法解析
foreach其实就是for的加强版,其语法如下: for(元素类型type 元素变量value : 遍历对象obj) { 引用x的java语句; } 举个例子,比如定义一个数组,使用foreach以此输出元素,其中for内部的int a :ar,就是讲数组ar每次循环取出一个数赋给变量a,然后循环打印变量a的值. int[] ar = new int[]{1, 2, 3, 4, 5}; for (int a : ar) { System.out.print(a + " "); } S
-
Java Thread多线程详解及用法解析
最全面的java多线程用法解析,如果你对Java的多线程机制并没有深入的研究,那么本文可以帮助你更透彻地理解Java多线程的原理以及使用方法. 1.创建线程 在Java中创建线程有两种方法:使用Thread类和使用Runnable接口.在使用Runnable接口时需要建立一个Thread实例.因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例.Thread构造函数: public Thread( ); public Thread(Runnab
-
Java String的intern用法解析
这篇文章主要介绍了Java String的intern用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在Java6中,intern方法返回的是对应字符串在永久态(方法区)中的地址:Java7以后,intern方法返回的是该字符串首次创建时候的堆内存的地址: 在java7中: package com.ecarx.daa.data.manager.utils; public class StringTest { public static
-
Java内存分配多种情况的用法解析
这篇文章主要介绍了Java内存分配多种情况的用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java内存五大区 栈:用于保存函数内部的局部变量,函数形参,一旦超出作用域,就删除 堆:凡是new出来的东西都是存放在堆里,也可以说可变对象(非基本数据类型)都是保存在这里面. 堆里面的东西,都有一个内存(16进制),栈中存放的就是这个16进制的内存值. 堆里面存放的东西都用默认值: 整数:默认值0 浮点数:默认0.0 布尔:默认false 字
-
Java图形界面Swing原理及用法解析
这篇文章主要介绍了Java图形界面Swing原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 JButton组件 布局管理器 FlowLayout 流式布局 BorderLayout 方位布局 GridLayout 表格布局 绝对布局 JLable 组件 文本框组件 JPanel轻量级容器 创建事件监听类 (更换监听类实现监听) 窗口监听适配器 都可使用匿名类实现监听 每个监听方法都可以返回一个Event对象来返回监听值 以上就是本
-
Java类加载器ClassLoader用法解析
这篇文章主要介绍了Java类加载器ClassLoader用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 正文 当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载.连接.初始化3个步骤来对该类进行初始化.如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化. 一.类加载过程 1.加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说
随机推荐
- AJAX实现瀑布流布局
- Python中使用Boolean操作符做真值测试实例
- PL/SQL Developer过期的两种解决方法
- libsvm支持向量机回归示例
- iOS开发中一些手写控件及其相关属性的使用
- 一个字段同时满足多个条件的查询
- ajax jquery校验用户是否已经注册演示代码
- JS实现定时页面弹出类似QQ新闻的提示框
- C++实现数字转换为十六进制字符串的方法
- php使用strpos判断字符串中数字类型子字符串出错的解决方法 原创
- Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
- 一种JavaScript的设计模式
- Win XP系统丢失还原点解决办法
- iOS 10新的通知机制中添加图片的方法详解
- C#实现动态生成静态页面的类详解
- Android限时抢购倒计时实现代码
- 游戏私服安全攻防技巧全攻略之攻击篇
- 遗传算法python版
- 如何用Python制作微信好友个性签名词云图
- python实现最小二乘法线性拟合