`

HttpInvoker远程调用实例

阅读更多

一、服务器端:

1、服务接口与实现类

package org.eesite.bbs.remote;

/**

 * 远程服务接口

 * 

 * @author zhanjia

 * 

 */

public interface IRemoteService {

    public String getString(String msg);

}

 

package org.eesite.bbs.remote;

/**

 * 远程服务接口实现类

 * 

 * @author zhanjia

 * 

 */

public class RemoteServiceImpl implements IRemoteService {

    public String getString(String msg) {

       String str = "正在请求调用...远程服务调用成功! " + msg;

       return str;

    }

}

  

2、服务暴露配置remote-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

    <!-- 通过Spring HttpInvoker机制暴露远程访问服务 -->

    <bean id="rmiService"

       class="org.eesite.bbs.remote.RemoteServiceImpl" />

 

    <bean name="/remoteService"

class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">

       <property name="service" ref="rmiService" />

       <property name="serviceInterface"

           value="org.eesite.bbs.remote.IRemoteService" />

    </bean>

</beans>

 

 

 

3web.xml配置

<!-- 加载服务配置文件 -->

<context-param>

       <param-name>contextConfigLocation</param-name>

       <param-value>/WEB-INF/remote-servlet.xml</param-value>

    </context-param>

 

<!-- 配置DispatcherServlet -->

    <servlet>

        <servlet-name>remote</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 配置该Servlet随应用启动时候启动 -->

        <load-on-startup>1</load-on-startup>

    </servlet>

<!-- 配置DispatcherServlet映射的url -->

    <servlet-mapping>

       <servlet-name>remote</servlet-name>

       <url-pattern>/remoting/*</url-pattern>

    </servlet-mapping>

  

注意:

注册servlet名为remote,此名字要和服务配置文件的名字的第一部分相同,即servlet的名字必须为remote-servlet中的remote

 

 

二、客户端

1、配置文件

<!-- 通过Spring HttpInvoker机制代理远程访问服务 -->

    <bean id="remoteService"

    class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">

       <property name="serviceUrl"

           value="http://localhost:2601/EEweb/remoting/remoteService" />

       <property name="serviceInterface"

           value="org.eesite.bbs.remote.IRemoteService" />

    </bean>

其中

1)IRemoteService只要有与服务端接口的方法一样就可以调用,此处的包名和类名可以根据实际情况给出,不过一般建议和服务器端的接口/类名一样,这样更合理些。

2)EEweb为服务端应用名称,remotingweb.xmlservlet过滤url/remoting/*中的remoting

 

 

2、测试类

package test;

import org.eesite.bbs.remote.IRemoteService;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

/**

 * @author zhanjia

 *

 */

public class TestRemote {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       ApplicationContext applicationContext = new ClassPathXmlApplicationContext("remote.xml");

       IRemoteService service = (IRemoteService) applicationContext

              .getBean("remoteService");

       String msg = service.getString("哈哈,我来了!");

       System.out.println(msg);

    }

}

 

测试结果:正在请求调用...远程服务调用成功! 哈哈,我来了!

 

 

分享到:
评论
9 楼 上官车月 2013-08-31  
一次成功,呵呵

虽然httpinvoker 性能不咋的,不过在其它方面性能不错
8 楼 zhanjia 2008-09-12  
1、一般在不同项目间需要互相调用方法时就可能会用到
2、我测试的时候是在两个不同的项目中测试的
7 楼 flykete 2008-09-10  
不错,试了下,挺好玩的。
感觉就是一个webservice,只不过使用了spring的东西罢了,我以前做Xfire,步骤和这个差不多,我说的对么?
还有一个疑问,搂住测试和web服务是在同一个项目里吧,如果别人想访问,这个IRomteService这个接口类怎么暴露给客户端????
6 楼 vvgg 2008-09-10  
效率比hessian来的低
5 楼 kwj 2008-09-10  
不错,跟hessian的方式差不多。

我们这边有个客户想使用分布式来做一个项目,我们提供的就是一种这样的一个远程调用的方案。

学习中。。。

4 楼 flykete 2008-09-10  
看上去挺不错的,不过若若的问下,这种用法一般在什么应用上用比较好(或者说是方便)?期待高手们的见解。
3 楼 zhanjia 2008-09-10  
EEweb就是项目名称
2 楼 HRoger 2008-08-23  
注册servlet名为remote,此名字要和服务配置文件的名字的第一部分相同,即servlet的名字必须为remote-servlet中的remote。表述不清楚
1 楼 shengdianjisi 2008-08-20  
写得很好,但是我还是存在一些疑惑的地方,主要有:

1):注册servlet名为remote,此名字要和服务配置文件的名字的第一部分相同,即servlet的名字必须为remote-servlet中的remote.这里是为什么呢?
2):EEweb为服务端应用名称,remoting为web.xml中servlet过滤url的/remoting/*中的remoting.这里的EEweb为服务端应用名称是什么意思啊?

麻烦您说详细点好吗?

相关推荐

    spring远程调用简单实例

    要实现Spring的HTTP Invoker远程调用,我们需要以下几个步骤: 1. **服务提供方配置**:创建服务接口,并实现该接口。在Spring配置文件中定义一个bean,标记为`@Service`,并指定接口类型。此外,还需要配置`...

    使用httpInvoker提供远程服务

    使用HttpInvoker服务出口商(HttpInvokerServiceExporter)可以将普通的JavaBean实例转换为远程服务。这个过程类似于HessianServiceExporter,但更注重于Java对象的序列化。下面是一个使用...

    httpinvoker的使用实例

    HTTPInvoker是Spring框架中的一种远程调用机制,它允许客户端通过HTTP协议来调用服务器端的方法,实现远程服务的透明化访问。这个技术基于HTTP,所以具有较好的穿透性,适用于内网或者对安全性要求不高的环境。在这...

    Spring HttpInvoker的封装

    HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java应用之间能够进行安全、高效的通信。本篇文章将深入探讨Spring HttpInvoker的原理以及如何对其进行封装,以便...

    Hessian 、 HttpInvoker 、 XFire 、 Axis

    Hessian、HttpInvoker、XFire和Axis是四种常见的远程调用框架,它们各自有不同的特性和应用场景。 Hessian是一种轻量级的二进制RPC协议,它通过HTTP进行传输,减少了网络开销,提高了服务调用效率。Hessian提供了...

    用Http Invoker实现RCP客户端与后台的交互

    - **HttpInvokerRequestExecutor**:客户端组件,用于处理HTTP请求和响应,实现远程调用。 - **HttpInvokerProxyFactoryBean**:客户端代理工厂,用于创建客户端的代理对象,使客户端可以像调用本地方法一样调用...

    spring httpInvoker示例

    在本文中,我们将深入探讨如何使用Spring框架中的HTTP Invoker组件进行远程方法调用(RMI)的实例。HTTP Invoker是Spring框架...对于初学者来说,这个例子是一个很好的起点,可以帮助理解Spring框架如何处理远程调用。

    http接口相关介绍

    Spring HTTP Invoker是Spring框架提供的一个远程调用模型,它允许通过HTTP进行远程调用,这意味着可以在防火墙环境下实现服务间的通信。与传统的远程过程调用(RPC)不同,Spring HTTP Invoker简化了客户端和服务端...

    外部接口调用 使用spring4+hessian4实例(二)

    它提供了多种集成远程服务的方式,包括RMI、HTTP Invoker、Hessian等。在Spring中配置Hessian服务,我们可以利用Spring的自动装配能力,简化服务的发布和消费过程。 要实现Spring4与Hessian4的结合,你需要完成以下...

    Spring(RMI)实例

    Spring框架是Java开发中广泛应用的轻量级框架,它提供了丰富的功能来简化应用程序的构建...同时,这也是一个很好的起点,可以帮助开发者进一步探索Spring与其他远程调用协议,如Hessian、 Burlap或HTTP Invoker的集成。

    java远程通讯技术及简单实现.docx

    Java远程通讯技术是分布式服务框架中的关键组成部分,它允许不同机器上的应用...然而,随着技术的发展,出现了如Hessian、HttpInvoker等更高级别的封装工具,这些工具简化了开发者的使用,但理解底层原理仍然是必要的。

    第四课:Dubbo调用模块详解1

    Dubbo通过动态代理技术(如Javassist)生成服务代理类,使得消费者可以像调用本地方法一样调用远程服务,隐藏了远程调用的复杂性。例如,在`com.alibaba.dubbo.config.ReferenceConfig#createProxy`方法中,会根据...

    spring RMI 实例

    同时,随着Java技术的发展,虽然RMI在一些场景下依然有用,但很多现代的分布式通信框架,如Spring的JMS、HTTP Invoker、Hessian、 Burlap等,以及基于HTTP/REST的Web服务,已经提供了更灵活、更高效的选择。...

    rmi实例(Spring整合)

    4. **配合Spring Remoting**:Spring Remoting提供了一种抽象层,可以轻松地切换到其他远程调用机制,如Hessian、 Burlap或HTTP Invoker。这意味着如果你的系统开始时使用RMI,但后来希望切换到其他协议,Spring ...

    java项目使用spring rmi所涉及到的包

    - `org.springframework.remoting`: 这是Spring的远程调用支持包,包含了各种远程调用协议的实现,如HTTP Invoker、Hessian、 Burlap等。尽管不是直接针对RMI,但提供了远程调用的通用抽象。 - `org.spring...

    hessian 实例

    远程调用方法就是HttpInvoker:他也是将参数和返回值通过Java的序列化机制进行编组和反编组,它具有RMI的支持所有可序列化对象的优点。试使用Http协议传输二进制流的,同时又具有Hessian、Burlap(传输xml文本)的...

    carmine:使用 HTTP(S) 的轻量级 Java RMI 替代方案

    该库为 (远程方法调用)或 [Spring HTTP Invoker]( ),使用HTTP(S)协议进行客户端和服务器端之间的通信。 主要特征 Java 到 Java 的远程方法调用是使用HTTP(S)协议完成的 在客户端处理远程对象仅在实例化过程中...

    dubbo-2.5.6源码tar.gz

    Invocation则封装了远程调用的相关信息,如方法名、参数等。通过动态代理,Dubbo将调用转换为对Invoker的调用,实现了透明化的远程访问。 三、服务注册与发现 Dubbo采用基于ZooKeeper的服务注册与发现机制。在`org....

    DWR初学者笔记

    - **`creator`属性**:指定如何创建要远程调用的类的实例。 - `new`:使用类的默认构造方法创建实例。 - `scripted`:允许使用脚本语言创建实例,如使用Beanshell。 - `spring`:从Spring容器中获取Bean实例。 ...

    分布式服务框架 dubbox

    - 远程调用过程包括客户端发起请求、服务端处理请求并返回结果、网络传输等环节,涉及请求编解码、连接管理等技术。 3. **服务治理**: - 负载均衡:Dubbo 提供多种负载均衡策略,如 Random、RoundRobin、...

Global site tag (gtag.js) - Google Analytics