`
liu0107613
  • 浏览: 74105 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

HttpInvoker in spring 2.0

    博客分类:
  • java
阅读更多

使用Spring进行远程访问与Web服务
17.1. 简介
Spring为各种远程访问技术的集成提供了工具类。Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易。目前,Spring支持四种远程技术:
• 远程方法调用(RMI)。通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,Spring同时支持传统的RMI(使用java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的透明远程调用(支持任何Java接口)。
• Spring的HTTP调用器。Spring提供了一种特殊的允许通过HTTP进行Java串行化的远程调用策略,支持任意Java接口(就像RMI调用器)。相对应的支持类是 HttpInvokerProxyFactoryBean 和 HttpInvokerServiceExporter。
• Hessian。通过 HessianProxyFactoryBean 和 HessianServiceExporter,可以使用Caucho提供的基于HTTP的轻量级二进制协议来透明地暴露服务。
• Burlap。 Burlap是Caucho的另外一个子项目,可以作为Hessian基于XML的替代方案。Spring提供了诸如 BurlapProxyFactoryBean 和 BurlapServiceExporter 的支持类。
• JAX RPC。Spring通过JAX-RPC为远程Web服务提供支持。
• JMS(待实现)。
在讨论Spring对远程访问的支持时,我们将使用下面的域模型和对应的服务:


package com.test.spring;

import java.io.Serializable;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/**
 * 用户和服务层交互的对象,即用来传递数据的对象
 *
 * @author test
 *
 */
public class Account implements Serializable {
 /**
  *
  */
 private static final long serialVersionUID = 2151697717808881589L;

 private String name;

 private int amount;

 public String getName() {
  return this.name;
 }

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

 public int getAmount() {
  return amount;
 }

 public void setAmount(int amount) {
  this.amount = amount;
 }

 public Account(String name, int amount) {
  super();
  this.name = name;
  this.amount = amount;
 }

 @Override
 public String toString() {

        return ToStringBuilder.reflectionToString(this,
                ToStringStyle.MULTI_LINE_STYLE);
 }
 
}

package com.test.spring;

import java.util.List;

/**
 * 服务层接口,对外公布的接口
 *
 * @author test
 *
 */
public interface AccountService {
 
 
 /**
  * 插入帐户信息
  * @param account
  */
 public void insertAccount(Account account);

 /**
  *
  * 根据帐户名称取对应帐户信息集合
  * @param name
  * @return
  */
 public List getAccounts(String name);

}

 


package com.test.spring;

import java.util.ArrayList;
import java.util.List;

/**
 * 服务端实现发布的服务的实现类
 * @author test
 *
 */
public class AccountServiceImpl implements AccountService {

 private List list=new ArrayList();
 
 @SuppressWarnings("unchecked")
 
 public void insertAccount(Account acc) {
  this.list.add(acc);
 }

 @SuppressWarnings("unchecked")
 public List getAccounts(String name) {
  List tempList=new ArrayList();
  for(int i=0;i    if (((Account)list.get(i)).getName().equals(name)){
    tempList.add(list.get(i));
   }
  }
  return tempList;
 }
}


在eclipse 中建立一个 java_web工程,

Web-inf/lib下加入以下包:
Commons-lang.jar
Connons-logging.jar
Hessian.jar
Spring.jar
Spring-aspects.jar


将上面的代码放到src下


Web.xml中加入:


 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/remoting-servlet.xml</param-value>
 </context-param>

 <listener>
  <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的内容:

<bean class="com.liuxt.spring.AccountServiceImpl" id="accountService"></bean><beans>
<bean id="accountService" class="com.liuxt.spring.AccountServiceImpl">
  <!-- any additional properties, maybe a DAO? -->
</bean>
<!--httpinvoker config   -->
<bean name="/AccountService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter" singleton="false">
  <property name="service" ref="accountService"/>
  <property name="serviceInterface" value="com.liuxt.spring.AccountService"/>
</bean>
 


在eclpse中启动 tomcat


确保没有错误,正常启动

 

   以上服务端的程序建立完毕

 


下面是客户端的程序的建立
建立一个普通的java工程
  将服务端的类:Account和AccountService复制到该工程的src下,确保包名不变
正常的工程是需要服务端把发布的接口和数据对象bean,打成jar包,发给客户端
   客户端也需要上面的服务器倒入的jar包


package spring.client;

import com.test.spring.AccountService;


/**
 * 该类主要在客户端用于调用服务器的发布的服务
 * @author test
 *
 */
public class SimpleObject {

 private AccountService accountService;

 public void setAccountService(AccountService accountService) {
  this.accountService = accountService;
 }


 public AccountService getAccountService() {
  return accountService;
 }
 
}


Src 目录下建立BeanHttpInvoker.xml
内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean class="spring.client.SimpleObject">
 <property name="accountService" ref="httpInvokerProxy"/>
</bean>
<bean id="httpInvokerProxy" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
  <property name="serviceUrl" value="http://localhost:8080/SpringWebRomote/remoting/AccountService"/>
  <property name="serviceInterface" value="com.liuxt.spring.AccountService"/>
</bean>


</beans>

 

注意url的填写,需要用你的web工程的名字替换

 

客户测试程序;

package spring.client;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.spring.Account;

public class HttpInvokerClient {

 public static void main(String[] args) {
  ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
    "BeanHttpInvoker.xml");
  SimpleObject simpleObject = (SimpleObject) applicationContext
    .getBean("spring.client.SimpleObject");
  Account account = new Account("cccc", 30);
  simpleObject.getAccountService().insertAccount(account);
  System.out.println("dddd"
    + simpleObject.getAccountService().getAccounts("cccc"));
 }

}

 

当然可以用其他的方法,文档最开头介绍的几个部分

具体参考spring2.0的官方在线文档

 

 


 

分享到:
评论

相关推荐

    springboot-httpinvoker-demo.zip

    而在微服务架构中,服务间通信是必不可少的一部分,HTTP Invoker作为Spring框架的一个组件,为Spring Boot应用提供了一种轻量级的远程方法调用(RMI)方案。本篇将深入探讨SpringBoot HTTP Invoker的原理、配置以及...

    spring2.0和spring2.5 及以上版本的jar包区别 spring jar 包详解

    9. **spring-remoting.jar**:提供了对远程调用的支持,包括RMI、HTTP Invoker等技术。 10. **spring-support.jar**:提供了一些额外的支持,例如缓存支持、邮件发送等。 11. **spring-web.jar**:为基于Web的应用...

    Spring HttpInvoker

    Spring HttpInvoker,是一套基于Maven+Spring+SpringMVC+MyBatis框架,还包含了Invoker的客户端及服务器端的demo实例

    Spring HttpInvoker的封装

    **Spring HttpInvoker的封装** 在Java企业级应用开发中,Spring框架因其强大的功能和灵活性而被广泛应用。HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java...

    使用httpInvoker提供远程服务

    HttpInvoker是Spring框架的一部分,它允许开发者使用HTTP协议进行远程方法调用,而不需要额外的类库。与Hessian等轻量级通信协议不同,HttpInvoker依赖于Java的序列化机制来处理方法的参数和返回值。 **14.7.1 输出...

    Spring HttpInvoker介绍

    公司内部讲义,比较了SOA,RMI和Spring HttpInvoker。并介绍了Spring HttpInvoker的基本使用方法。

    http invoker 做post测试

    3. **配置HTTP Invoker**:在服务端配置Spring,启用HTTP Invoker的支持,将接口绑定到特定的URL路径上,以便客户端可以访问。 4. **客户端构建请求**:在客户端,我们需要创建一个HTTP Invoker的代理对象,该对象...

    spring-httpinvoker-demo

    Spring HTTP Invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用,也就是说,可以通过防火墙,并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的...

    spring httpInvoker示例

    在本文中,我们将深入探讨如何使用Spring框架中的HTTP Invoker组件进行远程方法调用(RMI)的实例。HTTP Invoker是Spring框架提供的一种轻量级远程调用解决方案,它利用HTTP协议在客户端和服务端之间传输Java对象。...

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

    `Http Invoker`是Spring框架提供的一种基于HTTP协议的RPC实现,主要用于Java应用程序之间进行服务调用。本文将深入探讨如何使用Http Invoker实现RCP客户端与后台的交互,以及相关知识点。 1. **Http Invoker的基本...

    HttpInvoker.zip http调试工具

    《HttpInvoker:深入理解HTTP调试工具的奥秘》 在Web开发中,HTTP协议作为互联网应用的基础,扮演着至关重要的角色。为了确保我们的应用程序能够正确地与服务器进行通信,理解和调试HTTP请求至关重要。HttpInvoker...

    Spring 实现远程访问详解——httpinvoker

    Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 3) 暴露服务...

    Spring HttpInvoker 初学实例

    org.springframework.remoting.httpinvoker最基本的实现例子,这是3个eclipse的JavaEE工程,全部导入即可,能运行。 初学可以轻松了解Spring HttpInvoker 的结构和使用。

    Java Spring2.5 Remote Invoke HTTP Invoker

    Java Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...

    Hessian 、 HttpInvoker 、 XFire 、 Axis

    HttpInvoker主要面向Spring应用程序,易于集成,但相比Hessian,其数据传输效率较低,因为HTTP协议本身较重,且Java序列化也相对消耗资源。 XFire(后来被Apache CXF吸收)是一款基于XML的Web服务框架,它支持多种...

    Spring的HttpInvoker使用示例 (可下载源码)

    NULL 博文链接:https://lggege.iteye.com/blog/369151

    Http Invoker

    **Http Invoker:接口测试工具详解** Http Invoker是一款用于接口测试的工具,它允许开发者对Web服务进行调用和测试,验证API的功能和性能。虽然在某些用户看来,Http Invoker可能并不是最易用或者功能最全面的工具...

    Java Spring1.2 Remote Invoke HTTP Invoker

    Java Spring 1.2 远程调用HTTP Invoker是一个基于HTTP协议的远程服务调用框架,它是Spring框架的一部分,允许应用通过HTTP协议进行服务间的通信。这种通信方式相对于RMI(Remote Method Invocation)等其他远程调用...

    Eclipse工程Http Invoker Service & Client

    Http Invoker是Spring框架的一个组件,允许在分布式环境中通过HTTP协议透明地调用Java对象的方法,提供了一种轻量级的RPC(Remote Procedure Call)实现。 **Http Invoker服务端(Service)** 在Http Invoker...

Global site tag (gtag.js) - Google Analytics