RMI-spring RMI固定随机数据端口

RMI 在启动时,会启动两个端口一个是应用端口,就是你的应用指定的端口,另一个是RMI随机分配的数据传输端口。如果LINUX开通了防火墙,必须同时开放这两个端口,才能正常访问服务。可以采用以下方式进行固定随机分配的数据传输端口。该方式只针对sping应用,其他方式暂未尝试。

1 示例

1.1 接口类

新建 BaseService.java

package com.example.springrmifixedport.rmi;import java.rmi.Remote;
import java.rmi.RemoteException;/***  RMI 接口类* @author Anna.* @date 2021/4/16 10:50*/
public interface BaseService extends Remote {/*** 测试* @param name* @return java.lang.String* @throws Exception* @author Anna.* @date 2021/4/16 10:50*/public String test(String name) throws RemoteException;
}

1.2 接口实现类

新建BaseServiceImpl.java

package com.example.springrmifixedport.rmi;import java.rmi.RemoteException;/*** RMI 实现类** @author Anna.* @date 2021/4/16 10:50*/
public class BaseServiceImpl implements BaseService {@Overridepublic String test(String name) throws RemoteException {return "hello " + name + " !";}
}

1.3 配置XML

resources目录新建spring-rmi.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="baseRmiService" class="com.example.springrmifixedport.rmi.BaseServiceImpl"/><bean id="baseServiceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter"><property name="service" ref="baseRmiService"></property><!-- 配置服务名称--><property name="serviceName" value="baseService/test"></property><!-- 配置服务接口--><property name="serviceInterface" value="com.example.springrmifixedport.rmi.BaseService"></property><!-- 配置服务端口--><property name="registryPort" value="8082"></property><!-- 固定随机分配的通信的端口 --><property name="servicePort" value="18082" /></bean>
</beans>

1.4 启动方法

    public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-rmi.xml");BaseService baseService = (BaseService) context.getBean("baseRmiService");System.out.println("baseRmiServicee start...........");}

1.5 接口测试

注意:引入BaseService接口类时,必须保证包名与服务一致

public static void main(String[] args) {String remoteAddr = "rmi://127.0.0.1:8082/baseService/test";try {BaseService baseService = (BaseService) Naming.lookup(remoteAddr);String resp = baseService.test("adsas");System.out.println(resp);} catch (NotBoundException e) {e.printStackTrace();} catch (MalformedURLException e) {e.printStackTrace();} catch (RemoteException e) {e.printStackTrace();}}

2 demo源码

spring-rmi-fixed-port.zip

链接:https://pan.baidu.com/s/170vsXxXThNWBT5TPXN5jAg 
提取码:j3np

RMI-spring RMI固定随机数据端口相关推荐

  1. python随机生成一组数据_使用Python random模块生成随机数据实例

    在本节中,我们将学习如何使用random模块(random)在Python中生成随机数和数据.该模块为各种分布(包括整数,浮点数(实数))实现了伪随机数生成器. 本文的目标: 以下是我们将在本文中介绍 ...

  2. Spring RMI反序列化漏洞分析

    文章目录 概况 ReadObject流程 Jndi注入POC分析 server部分 client部分 恶意类部分 整体的攻击流程 概况 漏洞的入口在于Spring-tx-xxx.jar中的JtaTra ...

  3. 《Spring技术内幕》学习笔记19——Spring RMI实现远程调用

    1.Spring除了使用基于HTTP协议的远程调用方案,还为开发者提供了基于RMI机制的远程调用方法,RMI远程调用网络通信实现是基于TCP/IP协议完成的,而不是通过HTTP协议. 在Spring ...

  4. Spring rmi

    2019独角兽企业重金招聘Python工程师标准>>> 1.org.springframework.remoting.rmi.RmiProxyFactoryBean 其使用的是rmi ...

  5. 静态Web服务器-返回固定页面数据

    1. 开发自己的静态Web服务器 实现步骤: 编写一个TCP服务端程序 获取浏览器发送的http请求报文数据 读取固定页面数据,把页面数据组装成HTTP响应报文数据发送给浏览器. HTTP响应报文数据 ...

  6. Spring整合Redis做数据缓存(Windows环境)

    当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是 ...

  7. X-Mas Musings –在Grails集成测试中不要使用随机服务器端口

    对许多人来说,十二月是反思或思考的时期. 所以我决定在去年的事情和想法,以反映- 每一天 ,直到圣诞节. 这是第四天 对于Grails集成测试,了解应用程序当前在哪个端口上运行非常有用. Spring ...

  8. Java VisualVM添加远程JMX连接时提示“无法使用service:jmx:rmi:///jndi/rmi******连接到*****”

    在使用本地Java VisualVM连接测试服务器上的JVM时出现提示 无法使用service:jmx:rmi:///jndi/rmi://***.***.***.***:****连接到***.*** ...

  9. 季节性的分析才不简单,小心不要在随机数据中也分析出季节性...

    雷锋网 AI 科技评论按:这篇文章来自 Automattic 的数据科学家 Carly Stambaugh,她研究了一个看似简单的问题:分析序列数据中的季节性.「季节性」说起来很简单,但是真的分析的时 ...

最新文章

  1. [Flutter] Android沉侵式标题栏顶部叠加层去除
  2. 适合零基础学python的书籍_适合零基础学习Python的书籍
  3. Android应用开发—知识点汇总
  4. √2是个无理数,没有尽头,为什么边长为1的直角三角形可以画出来? 是悖论吗?...
  5. Unity中Temporal AA
  6. 深度学习多模态融合_多模态深度学习:用深度学习的方式融合各种信息
  7. markdown格式的文章如何转换为可以发布在微信公众号上的内容
  8. linux无法侦听10000以上的端口,linux – git-daemon:“无法在主机(null)端口9418上分配任何侦听套接字”...
  9. 淘宝/天猫api 收货地址列表 API接口
  10. 手动编译源代码安装wget
  11. Java微信小微商户进件,已经解决接口暂无权限,稍后再试的问题
  12. 服务器3D场景建模(五):体素场景(三)
  13. 2022 Gartner新兴技术成熟曲线
  14. 永磁同步电机转子位置估算专题 —— 基波模型类位置估算概要
  15. HDwiki模板说明
  16. 29.Silverlight碰撞测试、检测自定义控件碰撞,雷达扫描图之扫描雷达点状态
  17. RK3399平台开发系列讲解(IIO子系统)4.43、IIO数据的获取方式介绍
  18. [USA]办理美国签证,被Check
  19. 安卓开发5-fragment和activity
  20. 怎么学会查看建筑图纸?dwg建筑图怎么打开?

热门文章

  1. IT项目管理——期末复习(青岛理工大学信管)
  2. 【taichi】关于SPH_Taichi的探索与尝试
  3. 目标检测 YOLOv5 - YOLOv5:v6版本多机多卡训练出现的错误及解决方案
  4. STM32-CUBEMX之找不到安装包小记
  5. 算术游戏 easyMath.py
  6. php定义一个学生类_PHP中的类-什么叫类
  7. wm 虚拟机成功安装苹果 lion 调整分辨率大小
  8. aircrack-ng暴力破解WIFI密码
  9. 小米怎么和计算机连接网络设置密码,小米路由器4A电脑设置密码
  10. DDOS攻击需要怎么防御