`
lu2002lulu
  • 浏览: 97314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rmi穿越防火墙

阅读更多
前段时间写了一个全文检索服务,用的是RMI远程调用。在本机上写好后,测试ok.但一部署到服务器上就报找不到服务。在网上找了一大通:
原因如下:
    RMI除了注册端口外,其通信端口是服务器随机产生的,因此不容易穿过防火墙。

现将我在网上搜索到的解决方法公布在这里,给其它人需要的人一个方便。也给自己一个方便。
如果要扣分就扣吧。
一、普通解决:

Java代码
1.import java.rmi.server.*;  
2.import java.io.*;  
3.import java.net.*;  
4.public class SMRMISocket extends RMISocketFactory {  
5.    public Socket createSocket(String host, int port)   
6.        throws IOException{  
7.        return new Socket(host,port);  
8.    }  
9.    public ServerSocket createServerSocket(int port)   
10.        throws IOException {  
11.        if (port == 0)  
12.            port = 2098;//不指定就随机  
13.        return new ServerSocket(port);  
14.    }  
15.}  
import java.rmi.server.*;
import java.io.*;
import java.net.*;
public class SMRMISocket extends RMISocketFactory {
    public Socket createSocket(String host, int port)
        throws IOException{
        return new Socket(host,port);
    }
    public ServerSocket createServerSocket(int port)
        throws IOException {
        if (port == 0)
            port = 2098;//不指定就随机
        return new ServerSocket(port);
    }
}



二、Spring中


Java代码
1. <bean id="rmiSearchService" class="org.springframework.remoting.rmi.RmiServiceExporter">  
2.<property name="serviceName" value="search"/><!-- 服务名称 -->  
3.<property name="service" ref="searchService"/>  
4.<property name="serviceInterface" value="velcro.searchengine.ISearcher"/>  
5.<property name="registryPort" value="2098"/><!-- 端口 -->  
6.<property name="servicePort" value="2098"/>><!--不指定就随机 -->  
7.</bean>  
分享到:
评论

相关推荐

    使用RMI远程连接JVM.用JMX获取JVM的参数

    在Java世界中,远程方法调用(Remote Method Invocation, RMI)和Java管理扩展(Java Management Extensions, JMX)是两个强大的工具,用于管理和监控分布式系统。本文将深入探讨如何利用RMI远程连接到Java虚拟机...

    长沙蓝杰实训java课件之 RMI技术解析(www.NetJava.cn)

    做为java分布式计算的基础框架的RMI体系,是javaEE结构的基础技术. ...使RMI穿过防火墙--定制rmiSocket 6.Spring中的rmi应用 7.类似RMI的相关开源技术实现 -------具体请下载附件或登陆www.NetJava.cn

    rmi through firewalls

    RMI编码简洁, 但是遇到防火墙就歇菜了, 那么,JAVA RMI如何才能穿越防火墙呢?

    Rmi示例 Rmi代码示例

    RMI(Remote Method Invocation,远程方法调用)是Java平台中的一个重要特性,它允许Java对象在不同的Java虚拟机之间进行通信,实现分布式计算。RMI是Java开发分布式应用程序的基础,尤其在构建分布式服务和微服务...

    java_rmi.rar_RMI java_java.rmi

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像它们在同一个进程内一样。RMI是Java在分布式系统领域的核心特性,极大地...

    经典:实例讲解如何穿越防火墙访问EJBs

    你是否曾想编写一个可以穿越防火墙来访问EJBs的J2EE应用程序?这会很麻烦,开发人员必须用各种迂回的方法,而没有一种是“特别好的”。开发人员通常写一个servlet来截取HTTP请求,并将它们导向到EJBs,这种方法很不...

    基于rmi的远程控制

    10. **部署与配置**:RMI应用需要正确配置JVM的RMI服务,包括设置RMIREGISTRY端口、JDK的`.policy`文件以指定安全策略,以及可能的防火墙或安全组规则。 在“基于RMI的远程控制”项目中,开发者可能创建了一个包含...

    java rmi java rmi

    根据提供的文件信息,我们可以深入探讨Java RMI(Java Remote Method Invocation)的相关知识点,包括其概念、原理、体系结构以及一个具体的示例。 ### RMI的概念 RMI是一种Java技术,它允许开发者创建分布式应用...

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    Java RMI(远程方法调用)是Java编程语言中的一项核心技术,自JDK 1.1版本起就被引入,用于构建分布式系统。RMI允许Java对象在不同的Java虚拟机(JVMs)之间进行交互,仿佛这些对象是在同一台机器上一样。这种技术的...

    java rmi 参考文档

    ### Java RMI (Remote Method Invocation) 概念与实践 #### 一、Java RMI简介 Java RMI(Remote Method Invocation)是一种允许调用不同Java虚拟机(JVM)上方法的机制。这些JVM可能位于不同的机器上,也可能在同一...

    java RMI实现代码

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行远程对象的调用。RMI使得开发者可以像调用本地对象一样调用网络上的对象,极大地简化了...

    JAVA RMI 传输 SSL加密

    Java RMI (Remote Method Invocation) 是一种用于在Java应用程序之间进行远程通信的技术。为了提高RMI通信的安全性,我们可以使用SSL (Secure Sockets Layer) 或其后继者TLS (Transport Layer Security) 进行加密。...

    JAVA RMI测试代码

    Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,实现远程方法调用。本压缩包文件"rmi-code"包含了一个完整的RMI测试代码示例,适合在Linux和...

    SpringRMI小例子

    Spring Remote Method Invocation(RMI)是Java平台上的一个远程对象调用框架,它允许一个Java对象在一台机器上执行,并且被另一台机器上的客户端调用。在这个"SpringRMI小例子"中,我们将深入探讨如何利用Spring...

    分布式实验报告RMI.docx

    分布式实验报告 RMI.docx 本实验报告主要介绍了 Java RMI(Remote Method Invocation,远程方法调用)的基本概念和实现步骤。RMI 是一种分布式对象通讯机制,允许运行在一个 Java 虚拟机的对象调用运行在另一个 ...

    JAVA RMI实现程序实例

    在两台机器上测试RMI应用程序时,确保防火墙设置正确,允许RMI相关的端口(默认是1099)通信。同时,需要在两台机器上安装JDK,并配置好Java环境。 通过上述步骤,我们可以实现一个简单的RMI“Hello, World”程序,...

    spring中使用RMI

    在Spring框架中,远程方法调用(Remote Method Invocation, RMI)是一种使应用程序能够通过网络调用另一个JVM上的对象方法的技术。RMI是Java平台的一部分,它允许开发者创建分布式应用,使得对象可以像调用本地方法...

    Ehcache RMI Replicated Cluster(RMI集群)

    Ehcache RMI Replicated Cluster 是一种分布式缓存解决方案,它使用远程方法调用(RMI)技术在多个节点之间复制数据,以实现高可用性和负载均衡。在大型分布式系统中,缓存是提高应用程序性能的关键组件,因为它可以...

    RMI原理及应用详解

    **RMI原理及应用详解** 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种分布式计算技术,允许在不同的Java虚拟机(JVM)之间进行对象方法的透明调用。RMI的核心思想是使Java对象能够跨越...

Global site tag (gtag.js) - Google Analytics