dubbo之本地调用

本地调用

本地调用使用了 injvm 协议,是一个伪协议,它不开启端口,不发起远程调用,只在 JVM 内直接关联,但执行 Dubbo 的 Filter 链。

配置

定义 injvm 协议

<dubbo:protocol name="injvm" />

设置默认协议

<dubbo:provider protocol="injvm" />

设置服务协议

<dubbo:service protocol="injvm" />

优先使用 injvm

<dubbo:consumer injvm="true" .../>
<dubbo:provider injvm="true" .../>

<dubbo:reference injvm="true" .../>
<dubbo:service injvm="true" .../>

注意:服务暴露与服务引用都需要声明 injvm="true"

自动暴露、引用本地服务

从 2.2.0 开始,每个服务默认都会在本地暴露。在引用服务的时候,默认优先引用本地服务。如果希望引用远程服务可以使用一下配置强制引用远程服务。

<dubbo:reference ... scope="remote" />
时间: 2024-08-01 02:52:59

dubbo之本地调用的相关文章

Dubbo如何支持本地调用?InJvm方式解析

Dubbo是一个远程调用的框架,对于一个服务提供者,暴露了一个接口供外部消费者调用,那么对于提供者自己是否可以调用这个接口,需要什么特殊处理吗? 这篇文章就分享下Dubbo关于本地调用的实现机制,以及如何开启和关闭本地调用. injvm支持本地调用 使用 Dubbo 本地调用不需做特殊配置,按正常 Dubbo 服务暴露服务即可.任一服务在暴露远程服务的同时,也会同时以 injvm 的协议暴露本地服务.injvm 是一个伪协议,不会像其他协议那样对外开启端口,只用于本地调用的目的. InjvmPr

dubbo的本地存根(Stub)

dubbo的本地存根的原理是:远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,那么就在服务消费者这一端提供了一个Stub类,然后当消费者调用provider方提供的dubbo服务时,客户端生成 Proxy 实例,这个Proxy实例就是我们正常调用dubbo远程服务要生成的代理实例,然后消费者这方会把 Proxy 通过构造函数传给 消费者方的Stub ,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy.会通过代理类去完成这个调用

Dubbo实现RPC调用使用入门

使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Redis.Thrift等等.由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明.另外,如果我们使用Dubbo的服务注册中心组件,这样服务提供方将服务发布到注册的中心,只是将服务的名称暴露给外部,而服务消费方只需要知道注册中心和服务提供方提供的服

RHEL6-X Window System-8.图形桌面的本地调用与远程调用解析

Linux的X或X11 (X Window System)是一个基础的图形框架接口,拥有基本的图形显示.在此框架基础之上,有诸如GNOME/KDE之类的图形桌面窗口管理应用软件(Window manager).而且图形框架X11包括两大部分X Client与X Server,采用C/S主从架构.所以它是一个system而不单单只是一个组件. Linux图形桌面的本地调用与远程调用解析如图 说明: 通过图形还是文本控制台传递命令,经过内核处理后,返回相应的数据给对方 本地情况: 1.如果是图形,则

Dubbo实现RPC调用使用入门 【转】

使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Redis.Thrift等等.由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明.另外,如果我们使用Dubbo的服务注册中心组件,这样服务提供方将服务发布到注册的中心,只是将服务的名称暴露给外部,而服务消费方只需要知道注册中心和服务提供方提供的服

EJB远程调用和本地调用

一,远程调用 @Stateless//一般定义成无状态的 @Remote public class UserManagerBean implements UserManager { @Override public void addUser(User user) { System.out.println("User["+user.getUsername()+"] is saved..."); user.setId(10); } } 因为要在远程调用中使用User对象

[转载] Dubbo实现RPC调用使用入门

转载自http://shiyanjun.cn/archives/341.html 使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian.HTTP.RMI.Memcached.Redis.Thrift等等.由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明.另外,如果我们使用Dubbo的服务注册中心组件,这样服务提供方将服务发布到注册的中

解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常

EJB本地调用方式:把Webclient和EJB服务端部署到同一个JBoss,client和server通过一个JVM进行通信. Web客户端本地调用时.需引用EJB服务端打包的jar,不需引用JBoss/client下的jar和src下的jndi.properties文件.调用方式例如以下: <%@ page language="java" import="java.util.*,javax.naming.*,com.tgb.ejb.*" pageEncod

[转载:]C#与Fortran混合编程之本地调用Fortran动态链接库

前言 C#发展到现在,已是一门相当完善的语言,他基于C语言风格,演化于C++.并依靠强大的.NET底层框架.C#可以用来快速构建桌面及Web应用.然而在我们的实际工作中,尽管C#已经非常完善,但还是不能完成我们所有的工作.在很多工程计算中,C#语言的计算速度,精度,以及执行效率相对来说都达不到项目的要求.因此我们便考虑是否有一种方式将我们的工程计算部分和我们的项目分开,将计算部分用另一种执行更快,精度更高的语言来编写,然后在C#中调用,最后完成我们的工作.答案是肯定的. Fortran是一门古老