java远程调用之spring和hessian

Spring-boot集成Hessian服务 阅读详情

     众所周之 ejb中的远程用是相当的不错,但是ejb毕竟是一个重型机器,而spring就提供了一辆轻型单车,

很多人都能骑,不是所有人都能去开。今天我学习了一下spring中结合hessian的一个远程调用的例子,希望给

刚学习的人作一下参考,所以我在这里把我的学习经历和大家分享一下,希望能帮助到刚学习的人。在这里我尽

量的详细一点,不至于能得头昏眼花。

我用的开发工具是eclipse,有myeclipse更好,服务器我用了tomcat6.0。

上网下载hessian的jar包,一定要和spring现有的版本所支持,就是说hessian的版本不能比spring的新,要不

然在编译时会出错,所以要注意,下面就来建工程了,首先是建立服务器端的工程,在eclipse中new一个web

project,把spring的一些基本的包引进项目中最重要的是要部romote的包引进来,还有下载的hessian包,基本

的环境搭建好了后就开始重要的事情了:

 

新建一个bean对象并序列化,用于数据传输的,主要是被客户端调用的一个实体类里面有get和set方法

 

package com;

import java.io.Serializable;

public class Dog implements Serializable {
    private Integer id;
    private String name;

    public Dog (){

    }

    public Dog (Integer id, String name) {
        super();
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}

 

建立一个接口,这个接口主要是用于暴露给客户端,客户端获取这个接口并调用这个接口中相应的方法

package com;


public intterface IregisterService(){

 public void register(Dog dog);

}

 


package com;


public class RegisterService implements IregisterService(){

 public void register(Dog dog){
     Dog d=new Dog();
     d.set(dog.getId()); 
     d.set(dog.getName());
 }
}


配置spring文件,把实现远程接口的实现类注入到spring的applicationcontext.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-2.0.xsd">

 <bean id="RegisterService" class="com.RegisterService"></bean>
 
</beans>

在web-info目录下的web.xml配置spring的配置和监听和servlet名等,如下:

    <context-param>
        <param-name>webAppRootKey</param-name>
        <param-value>Hession.root</param-value>
    </context-param>

    <context-param>
        <description>Spring配置文件位置</description>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
    </context-param>
    <context-param>
        <description>Spring日志文件位置</description>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.properties</param-value>
    </context-param>


    <listener>
        <description>Spring配置加载器</description>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>remoting</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>remoting</servlet-name>
         <url-pattern>/remoting/*</url-pattern>
    </servlet-mapping>


还要在此目录下增加一个remoting-servlet.xml文件,里面的配置如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<!--
  - Dispatcher servlet for HTTP remoting via Hessian, Burlap, and Spring's
  - HTTP invoker (see remoting-servlet.xml for the controllers).
  -->
<beans>


    <bean name="/registerService-hessian"

class="org.springframework.remoting.caucho.HessianServiceExporter">
        <property name="service" ref="orderService"/>
        <property name="serviceInterface"
   value="com.RegisterService"/>
     </bean>

</beans>

服务器端的配置完了,下面就到clent端的编写了,客户端主要是以测试问主,主要是写一个测试类,看一下它

是怎么样连接上服务器和传输数据的,在客户端也要配置spring的,把spring的包引进来,下面就开始了

先配置spring的文件

<?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-2.5.xsd">

<bean id="registerService"
class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    <property name="serviceUrl"
value="http://127.0.0.1:8989/springServer/remoting/registerService-hessian"/>
    <property name="serviceInterface"
value="com.RegisterService"/>
</bean>

</beans>

在这里我先解释一下上面的内容的由来,因为开始时我也是被上面的内容搞到头晕
serviceUrl这个属性的值http://127.0.0.1:8989/springServer/remoting/registerService-hessian,首先是

127.0.0.1:8989中127.0.0.1是服务器的ip地址,这里的ip是主机的ip,8989是http端口这个要在使用的服务器

中定义了,tomcat默认的是8080端口,springServer是定义的web工程的名称,remoting是在web中定义的

servlet名,registerService-hessian是在remoting-servlet.xml中定义的名称。

写一个test类用来连接服务器

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

 


public class TestOrder {

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @Test
    public void testOrder(){

        ApplicationContext ctx=new ClassPathXmlApplicationContext("spring-config.xml");

        IregisterService registerService=(IOrderService) ctx.getBean("orderService");

      
            Dog  dog=new Dog();
            dog=new .setId(5);
            dog=new .setName("shit");
            registerService.register(dog);
            System.out.println("successful");

           
         
    }

}

在这里就有疑问了,客户端的IregisterService这个接口哪里得到?很简单你可以直接从服务器端拷贝到客户端

,或者在eclipse中建立工程引用就ok了,至于怎么建立引用点工程右击-properties-projects-Add把引用的工

程加进去就可以引用到这个工程的类了。这里是使用到junit进行测试,只用把junit包倒进去就好了。这是我第

一次在此写文章,写得比较急促,请各位指教!

spring 整合Hessian Hessian服务暴露和服务调用 详细教程 源码地址 源码地址 1.Hessian使用的介绍 Hessian是一个轻量级的RPC框架,基于HTTP协议 1.1 服务端配置 三部曲 通过springMVC的DispatherServlet控制Hessian服务接口的URL访问路径 即web.xml配置 新建Hessian服务 例如:DemoService 和实现类 DemoServiceImpl 配置Hessian服务... 阅读详情

相关推荐

Spring整合Hessian(Maven Web工程)

一个Spring整合Hessian的Demo,同时包含Hessian服务端与客户端。是一个Maven工程,IDE使用的Eclipse,运行前需要安装Eclipse的Maven插件。可以结合文章一起学习,地址是http://blog.youkuaiyun.com/julyness/article/details/49023581

在Spring中使用Hessian

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。 Hessian也是将网络传输的对象转换为二进制流通过Http进行传递,不过它是使用自己的序列化机制实现的编组与反编组,其支持的数据类型是有限制的,不支持复杂的对象。Hessian的优点是可以透过防火墙。Hessian是一个轻量级的remoting on http工...

m0_53128394的博客 614

Spring集成Hessian案例

Spring集成Hessian案例

Spring框架学习【Spring使用Hessian实现远程调用】

1.Spring中除了提供HTTP调用器方式的远程调用,还对第三方的远程调用实现提供了支持,其中提供了对Hessian的支持。 Hessian是由Caocho公司发布的一个轻量级的二进制协议远程调用实现方案,Hessian也是基于HTTP协议的,其工作原理如下: (1).客户端: a.发送远程调用请求: 客户端程序—>发送远程调用请求—>Hessian客户端拦截器—>封装远程调用请求—>H

zhixiang2010的专栏 2874

SpringMVC整合Hessian简单案例

SpringMVC整合Hessian的简单案例,使用Maven管理,idea工具开发,案例中配置了两个接口的服务发布

Hessian与Spring整合需要jar包

Hessian与Spring整合需要jar包,需要的同学进行下载学习

Spring整合Hessian与分析

前言 上一篇文章Hessian入门体验与分析介绍了hessian的简单入门,并且从源码层面对Hessian的调用流程进行了分析;发现使用原生的Hessian还是比较繁琐的,下面看看Spring与Hessian进行整合并且进行简要分析。 使用 提供三个模拟块,分别模拟client,server以及被依赖的jar;对应的模块名称分别是:hessianClient,hessianServer以...

weixin_41140797的博客 1006

gdb对dwarf调试信息的解析和使用

gdb的对dwarf的调试信息的解析到使用的过程分析

JS072110的专栏 9568

java hessian spring_java遠程調用之spring和hessian

眾所周之 ejb中的遠程用是相當的不錯,但是ejb畢竟是一個重型機器,而spring就提供了一輛輕型單車,很多人都能騎,不是所有人都能去開。今天我學習了一下spring中結合hessian的一個遠程調用的例子,希望給剛學習的人作一下參考,所以我在這里把我的學習經歷和大家分享一下,希望能幫助到剛學習的人。在這里我盡量的詳細一點,不至於能得頭昏眼花。我用的開發工具是eclipse,有myeclipse...

weixin_29733427的博客 133

【机器人】线性方程最小二乘解法对机械臂DH参数进行标定

1.前言 看了一篇文章,觉得里面的DH参数标定法讲的很清晰,便使用Matlab复现了一下,效果还可以,特写此文记录。 2.原理 2.1.误差最佳值的最小二乘计算 有研究结果表明:几乎95%的机器人位置误差都是由机器人内部运动学的不准确描述引起的,所以对DH模型参数进行标定是很有必要的。 DH参数物理含义:选自《机器人学、机器视觉与控制-Matlab基础》 当DH参数确定后,我们...

要恰饭得嘛 1万+

树莓派安装snowboy

1、树莓派换源 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113615915 2、更新pip3 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113616214 3、存取麦克风 我们使用PortAudio作为音频输入/输出的跨平台支持。我们还使用sox作为快速实用程序来检查麦克风设置是否正确。 sudo apt-get install python-pyaudio python

qq_43556844的博客 1923

Java Spring的远程调用方式(如RMI、Hessian、Burlap等)

Spring框架通过提供对多种远程调用技术的集成,使得开发者可以根据项目需求和偏好选择合适的远程调用方式。Spring框架提供了对多种远程调用技术的集成,使得开发者可以方便地在分布式系统中实现远程服务调用。随着Web服务的发展,REST(Representational State Transfer)已成为一种流行的远程调用方式。RMI是一种Java特有的远程调用技术,允许一个Java虚拟机上的对象调用另一个Java虚拟机上的对象的方法。Spring对Hessian的支持通过。)的简单远程调用方案。

编程小弟的博客 1279

告别高延迟!用RV1106+4G模块+libdatachannel搭建低功耗WebRTC监控,保姆级避坑指南

本文详细介绍了如何利用RV1106低功耗处理器、4G模块和libdatachannel库构建嵌入式WebRTC监控系统,解决高延迟问题。通过硬件选型、系统优化和核心代码实现,提供了一套完整的低功耗实时视频传输方案,特别适合智能安防和工业物联网应用。

weixin_42527401的博客 193

spring对java远程调用的简化(二)之Hessian,Burlap

Hessian,Burlap是Caucho提供的两种基于Http的轻量级远程服务。 Hessian像RMI那样,使用二进制消息来建立客户端和服务端之间的交流。与其他二进制远程技术(想RMI)不同的是,它可以移植到其他非Java的语言。 Burlap是一种基于Xml的远程技术,这使得他可以移植到任何可以解析XML的语言中。比起Hessia...

anmishi2025的博客 172

OBC_开环扫频波特图拟合操作流程(结合 Simulink)

摘要: 本文详细介绍了基于Simulink的开环扫频波特图测试与拟合流程,适用于电源/控制系统(如LLC/PFC)的小信号分析。主要内容包括:1)前期准备(测试点选择、信号范围设定);2)Simulink建模方法(信号注入、数据记录);3)两种扫频方式(逐频正弦/Chirp扫频)的实现;4)MATLAB数据处理(FFT分析、传递函数拟合);5)线性分析工具使用技巧。重点强调了激励信号幅值控制、稳态数据采集及模型验证方法,并提供完整MATLAB脚本示例。该流程可有效获取系统频域特性,为控制器设计提供可靠依据。

Sumerking的博客 234

使用Python爬虫抓取公共交通网站的时刻表

Python爬虫是一种通过自动化方式从网页中抓取数据的程序。爬虫通过模拟用户请求,获取网站的HTML页面内容,并通过解析这些HTML内容,提取出我们需要的信息。requests:用于向网站发送HTTP请求并获取响应。:用于解析HTML文档,提取数据。Selenium:用于处理动态加载的网页,模拟浏览器操作。pandas:用于数据处理和分析,方便存储和操作抓取到的数据。本文介绍了如何使用Python爬虫抓取公共交通网站的时刻表,并提取其中的关键信息。我们使用了requestsSelenium和。

2201_76125261的博客 1119

用spirng和hessian构建分布式应用(远程接口)的方法

最近一期的《programmer》里几乎从头至尾在讲关于“J2EE without EJB”的事情,可怜的ejb啊,居然被描述成了遗产系统的重要组成部分。。。其实有上面的结论,无外乎现在java里面的新技术已经几乎能完全取代ejb的优点,而克服ejb的缺点,entity bean和有状态的session bean已经机乎被视为垃圾,hibernate和spring大行其到,看看最进n期《progr

benber66的专栏 1027

地下管网巡检机器人:基于YOLOv8与UI界面的智能化系统设计与实现

通过YOLOv8模型的目标检测功能结合实时视频流,我们能够实现对地下管网巡检机器人的智能化控制。系统通过图像识别技术帮助巡检人员快速识别管道中的各种缺陷和障碍物,从而提高巡检效率和准确性。未来,我们可以继续优化模型,增加更多的目标类别,并通过强化学习等方法提高机器人的自主巡检能力。此外,随着硬件技术的发展,未来的巡检机器人可能会具备更强的感知能力和更高的智能水平。

YOLO 531

java hessian 原理,hessian简单原理及实现例子–学习 | 学步园

Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI(Remote Method Invocation,远程方法调用)的功能。采用的是二进制RPC(Remote Procedure Call Protocol,远程过程调用协议)协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。在进行基于Hessian的项目开发时,应当注意以下几点:▲JAVA服务器...

weixin_42478330的博客 1190

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Spring的远程调用

Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易 四种远程调用技术: ◆ 远程方法调用(RMI) ◆ Caucho的Hessian和Burlap ◆Spring自己的Http invoker ◆使用SOAP和JAX-RPC的web Services Spring对上面的远程服务调用都有支持 Spring远程调用支持6种不同的RP...

weixin_30591551的博客 206

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Spring RMI,Hessian/Burlap,HttpInvoker的区别

1 Hessian/Burlap 方式     客户端通过Hessian/BurlapProxyFactoryBean生成的代理对象负责通过HTTP协议与远程服务通信。 在服务端,HessianServiceExporter是一个Spring MVC的控制器,可以通过接收请求并将这些请求翻译成对POJO对象的调用将POJO输出为一个服务。 需要添加两处配置 (1)S

任何技能都是从模仿开始,逐步升华。 2108

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

实现一个java远程调用

java的远程调用核心在于解决rpc序列化和反序列化,但是要完成一个远程调用,最花力气的并不是rpc的问题,rpc的方案已经有非常多的方案可以完成了,主要的问题在于通讯机制、负载、选举策略、服务治理等方向,这些方向与本篇文章越扯越远,我在这里只分享如何实现一个java的远程调用。 为了快速方便,项目是基于springboot开发的,2年前的项目了,写这个项目是当时我对springcloud与du...

u012599432的博客 2390

使用PHPHessian调用Java Spring Hessian暴露服务­

Java 部分:­1.写Spring服务接口以及实现类,这里暂且叫为TadgetManager,TadgetManagerImpl。这些都是我自己实现的暴露­­TadgetManager:­ 2.配置spring mvc和spring hessian组件,配置使用还是比较方便。暴露java服务:­1.       spring 配置文件 tadgets-se

suiyuan0808的专栏 1882
下一篇: struts 1 和struts 2的区别
sun0447
博客等级 码龄19年 4粉丝 9原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值