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

本文档介绍了如何在Spring应用中固定RMI的数据传输端口,以确保在Linux防火墙环境下正常访问服务。通过创建RMI接口和实现类,配置XML文件设置服务端口和服务接口,然后在启动方法中加载配置,实现端口的固定。此外,还提供了客户端调用接口的示例代码,并附带了完整项目的源码下载链接。
摘要由CSDN通过智能技术生成

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 {
    @Override
    public 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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丨Anna丨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值