dubbo之rmi协议使用

普通接口与实现类

public interface DemoService {    String sayHello(String msg);}
public class DemoServiceImpl implements DemoService {	@Override	public String sayHello(String msg) 	{		 return "hello " + msg;	}}

dubbo服务提供者配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://code.alibabatech.com/schema/dubbo       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->    <dubbo:application name="hello-world-app"/>

    <!-- 使用multicast广播注册中心暴露服务地址 -->    <!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->

    <!-- 用dubbo协议在20880端口暴露服务 -->    <dubbo:protocol name="rmi" port="9123" codec="spring"/>

    <!-- 声明需要暴露的服务接口 -->    <dubbo:service interface="com.dubbo.rmi.DemoService" ref="demoService" registry="N/A" path="hello"/>

    <!-- 和本地bean一样实现服务 -->    <bean id="demoService" class="com.dubbo.rmi.DemoServiceImpl"/>

</beans>

dubbo服务消费者配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://code.alibabatech.com/schema/dubbo       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->    <dubbo:application name="hello-world-app-consumer"/>

    <!-- 使用multicast广播注册中心暴露服务地址 -->    <!-- <dubbo:registry address="multicast://224.5.6.7:1234"/> -->

    <!-- 声明需要暴露的服务接口 -->    <dubbo:reference interface="com.dubbo.rmi.DemoService" id="demoService" url="rmi://localhost:9123/hello" registry="N/A"/>

</beans>

springRMI服务配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!--RMI的服务实现类-->    <bean id="demoService" class="com.dubbo.rmi.DemoServiceImpl" />

    <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">        <!--配置RMI的服务实现类-->        <property name="service" ref="demoService" />        <!--配置RMI的服务接口-->        <property name="serviceInterface" value="com.dubbo.rmi.DemoService"/>        <!--暴露的对外服务名-->        <property name="serviceName" value="hello" />        <!--服务本地注册端口-->        <property name="registryPort" value="9123" />        <!--服务对外暴露端口-->        <property name="servicePort" value="9123" />        <!--注册服务-->        <property name="alwaysCreateRegistry" value="true" />    </bean>

</beans>

springRMI客户端配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="demoService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">        <property name="serviceUrl" value="rmi://localhost:9123/hello" />        <property name="serviceInterface" value="com.dubbo.rmi.DemoService"/>    </bean>

</beans>

dubboRMI与springRMI相互调用注意点

  1. 端口须匹配
  2. <dubbo:service path="hello"> 与 springRMI配置<property name="serviceName" value="hello" /> 要一致, dubbo默认为接口全路径
时间: 2024-10-07 13:32:04

dubbo之rmi协议使用的相关文章

dubbo 各通讯协议比较

1.各协议的比较 协议名称 实现描述 连接 使用场景 dubbo 传输:mina.netty.grizzy 序列化:dubbo.hessian2.java.json     dubbo缺省采用单一长连接和NIO异步通讯    1.传入传出参数数据包较小 2.消费者 比提供者多 3.常规远程服务方法调用 4.不适合传送大数据量的服务,比如文件.传视频 rmi 传输:java  rmi 序列化:java 标准序列化 连接个数:多连接 连接方式:短连接 传输协议:TCP/IP 传输方式:BIO 1.常

Dubbo支持的协议

协议介绍 协议是两个网络实体进行通信的基础,数据在网络上从一个实体传输到另一个实体,以字节流的形式传递到对端.在这个字节流的世界里,如果没有协议,就无法将这个一维的字节流重塑成为二维或者多维的数据结构以及领域对象. 在通信过程中,不同的服务等级一般对应着不同的服务质量,那么选择合适的协议便是一件非常重要的事情.你可以根据你应用的创建来选择.例如,使用RMI协议,一般会受到防火墙的限制,所以对于外部与内部进行通信的场景,就不要使用RMI协议,而是基于HTTP协议或者Hessian协议. 常见的协议

[转载] 基于Dubbo的Hessian协议实现远程调用

转载自http://shiyanjun.cn/archives/349.html Dubbo基于Hessian实现了自己Hessian协议,可以直接通过配置的Dubbo内置的其他协议,在服务消费方进行远程调用,也就是说,服务调用方需要使用Java语言来基于Dubbo调用提供方服务,限制了服务调用方.同时,使用Dubbo的Hessian协议实现提供方服务,而调用方可以使用标准的Hessian接口来调用,原生的Hessian协议已经支持多语言客户端调用,支持语言如下所示: Java:http://h

基于Dubbo的Hessian协议实现远程调用

Dubbo基于Hessian实现了自己Hessian协议,可以直接通过配置的Dubbo内置的其他协议,在服务消费方进行远程调用,也就是说,服务调用方需要使用Java语言来基于Dubbo调用提供方服务,限制了服务调用方.同时,使用Dubbo的Hessian协议实现提供方服务,而调用方可以使用标准的Hessian接口来调用,原生的Hessian协议已经支持多语言客户端调用,支持语言如下所示: Java:http://hessian.caucho.com/#Java Flash/Flex:http:/

Dubbo 使用rest协议发布http服务

演示用GitHub地址:https://github.com/suyin58/dubbo-rest-example 1       Dubbo_rest介绍 Dubbo自2.6.0版本后,合并了dubbox的restful风格的接口暴露方式,其restful的处理采用的是jboss.resteasy框架.使用该功能可以简便的将dubbo服务直接通过http的方式发布,不需要再使用中转的http应用暴露服务. 如上图,原有结构中,HTTP访问需要通过API应用中转服务,RPC访问调用dubbo应用

RPC服务框架dubbo(三):Dubbo支持的协议

1.Dubbo 1.1 Dubbo官方推荐的协议. 1.2 本质:使用NIO和线程池进行处理. 1.3 缺点:大文件传输时可能出现文件传输失败问题. 2.RMI 2.1 JDK提供的协议,远程方法调用协议. 2.2 缺点:偶尔连接失败. 2.3 优点:JDK原生,不需要进行额外配置(导入jar) 3.Hession 3.1 优点:基于http协议,http请求支持. 3.2 缺点:需要额外导入jar,并在短连接时性能低 原文地址:https://www.cnblogs.com/shamo89/p

dubbo扩展http协议后FullGC

问题 dubbo内部定制的版本中,在处理大于10K的包的时候,会出现内存溢出的现象 原因是我们在定制dubbo http协议的时候,使用了jboss包里面的HttpRequestDecoder的http decoder方法来解析http协议内容 该方法在解析非http协议的大内容时,会出现内存溢出的情况 某个服务因为这个问题,出现了full gc 的情况 复现问题 根据描述复现该问题 指定dubbo版本 dubbo请求,非http请求 消息体大于10K jvm堆配置,jmap -heap pid

dubbo之webservice协议使用

普通接口及实现类 public interface WsService { String sayHello(String msg);} public class WsServiceImpl implements WsService { @Override public String sayHello(String msg)  {  return "hello " + msg; }} dubbo服务提供者配置 <?xml version="1.0" encodi

编写python调用dubbo接口hessian协议的例子

引子 今天有小伙伴问到了怎么用python调用dubbo的接口的方法,就随便写了这么一篇文章.其实dubbo接口可以使用loadrunner.jmeter等完成,最好是熟悉java语言的,那么编写起来就丝滑了很多哦 那么用python来调用其实也是很简单的,并不像大家想的那么复杂,基本3.4步就可以搞定,不要急,来看如何实现 接口说明 既然做接口测试,那接口的说明是必须的,问开发GG要,不要问从哪里来....大致包括如下内容: 接口地址 http://192.168.133.129:20880/