- 浏览: 74105 次
- 性别:
- 来自: 大连
最新评论
-
Heart.X.Raid:
//非递归后序遍历二叉树
void aftorder_t ...
树的遍历 -
zhangjunji111:
airlink 写道建议你再加个0来循环。
我的测试结果是10 ...
Spring的获取Bean的性能测试。 -
airlink:
建议你再加个0来循环。我的测试结果是10倍以上的差距。spri ...
Spring的获取Bean的性能测试。 -
rmn190:
结果中哪一个是C++的,哪一个Java的呢? 楼主最好用一个t ...
简单的c++排序跟java的性能比较。仅仅学习。 -
moshalanye:
每个对象都有一个隐含锁静态对象属于Class对象,非晶态对象属 ...
Java里面的同步跟oracle的锁的联想
使用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的官方在线文档
发表评论
-
Java里面的同步跟oracle的锁的联想
2009-07-16 08:21 1154暂时不讨论。不明白 -
想做一个JMSServer,实现10000/s可以吗?
2009-07-02 17:51 1016本贴已经删除,有很多东西需要学习。谢谢大大家给予的建议和批评啊 ... -
Spring的事务管理例子代码
2009-06-27 10:29 3430事务管理: 分global事务管理和local事务管理, ... -
Java String中的hashCode函数
2009-06-27 09:43 4258String 类中的hash函数如下: public ... -
java中HashCode的作用和Map的实现结构
2009-06-25 22:50 3888Map 是一种数据结构,用来实现key和value 的映射。通 ... -
使用Spring后会带来什么好处
2009-06-23 16:20 9261 为你的项目增加一个管家,你不必写很多的代码去实现一些框架已 ... -
jboss EJB
2009-06-15 14:39 804暂时不讨论。不明白 -
简单的归并排序算法例子
2009-06-14 21:36 1053import java.util.ArrayList;impo ... -
Jboss消息中间件跟IBM MQ的比较
2009-06-12 21:28 1598简单说几点. 1 jboss消息以java编写,嵌入到jbo ... -
Jboss message point to point
2009-06-12 21:17 879下面的例子程序是从Jbos ... -
Jboss SubscriberClient 主动式接受消息
2009-06-11 21:35 689下载jboss后面,按照默认启动就可以。 packag ... -
http报文
2009-06-11 21:09 2548HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII ... -
面向对象的三个特征
2009-06-11 20:52 774面向对象的三个基本特征是:封装、继承、多态。 Th ... -
java的同样排序函数的执行效率
2009-06-11 20:50 1289package com.liuxt.sort; import ... -
apache ab 性能测试
2009-06-10 20:22 1469测试结果的说明:参考文章:http://www.phpchin ... -
java虚拟机规范 3.5 运行期数据区
2009-06-10 14:35 921http://java.sun.com/docs/books/ ... -
java SQL注入分析程序
2009-06-09 22:11 1952DROP TABLE IF EXISTS `user`;CRE ... -
java virtural machine data type
2009-06-08 16:35 668data ... -
parse xml file with dom and sax .
2009-06-07 13:47 891基于dom方式的dom4j和jdom以及JDK提供的dom方式 ... -
memcached 的linux配置
2009-06-03 22:45 680详细参选下面的连接: http://www.ccvita.co ...
相关推荐
而在微服务架构中,服务间通信是必不可少的一部分,HTTP Invoker作为Spring框架的一个组件,为Spring Boot应用提供了一种轻量级的远程方法调用(RMI)方案。本篇将深入探讨SpringBoot HTTP Invoker的原理、配置以及...
9. **spring-remoting.jar**:提供了对远程调用的支持,包括RMI、HTTP Invoker等技术。 10. **spring-support.jar**:提供了一些额外的支持,例如缓存支持、邮件发送等。 11. **spring-web.jar**:为基于Web的应用...
Spring HttpInvoker,是一套基于Maven+Spring+SpringMVC+MyBatis框架,还包含了Invoker的客户端及服务器端的demo实例
**Spring HttpInvoker的封装** 在Java企业级应用开发中,Spring框架因其强大的功能和灵活性而被广泛应用。HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java...
HttpInvoker是Spring框架的一部分,它允许开发者使用HTTP协议进行远程方法调用,而不需要额外的类库。与Hessian等轻量级通信协议不同,HttpInvoker依赖于Java的序列化机制来处理方法的参数和返回值。 **14.7.1 输出...
公司内部讲义,比较了SOA,RMI和Spring HttpInvoker。并介绍了Spring HttpInvoker的基本使用方法。
3. **配置HTTP Invoker**:在服务端配置Spring,启用HTTP Invoker的支持,将接口绑定到特定的URL路径上,以便客户端可以访问。 4. **客户端构建请求**:在客户端,我们需要创建一个HTTP Invoker的代理对象,该对象...
Spring HTTP Invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用,也就是说,可以通过防火墙,并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的...
在本文中,我们将深入探讨如何使用Spring框架中的HTTP Invoker组件进行远程方法调用(RMI)的实例。HTTP Invoker是Spring框架提供的一种轻量级远程调用解决方案,它利用HTTP协议在客户端和服务端之间传输Java对象。...
`Http Invoker`是Spring框架提供的一种基于HTTP协议的RPC实现,主要用于Java应用程序之间进行服务调用。本文将深入探讨如何使用Http Invoker实现RCP客户端与后台的交互,以及相关知识点。 1. **Http Invoker的基本...
《HttpInvoker:深入理解HTTP调试工具的奥秘》 在Web开发中,HTTP协议作为互联网应用的基础,扮演着至关重要的角色。为了确保我们的应用程序能够正确地与服务器进行通信,理解和调试HTTP请求至关重要。HttpInvoker...
Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 3) 暴露服务...
org.springframework.remoting.httpinvoker最基本的实现例子,这是3个eclipse的JavaEE工程,全部导入即可,能运行。 初学可以轻松了解Spring HttpInvoker 的结构和使用。
Java Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...
HttpInvoker主要面向Spring应用程序,易于集成,但相比Hessian,其数据传输效率较低,因为HTTP协议本身较重,且Java序列化也相对消耗资源。 XFire(后来被Apache CXF吸收)是一款基于XML的Web服务框架,它支持多种...
NULL 博文链接:https://lggege.iteye.com/blog/369151
**Http Invoker:接口测试工具详解** Http Invoker是一款用于接口测试的工具,它允许开发者对Web服务进行调用和测试,验证API的功能和性能。虽然在某些用户看来,Http Invoker可能并不是最易用或者功能最全面的工具...
Java Spring 1.2 远程调用HTTP Invoker是一个基于HTTP协议的远程服务调用框架,它是Spring框架的一部分,允许应用通过HTTP协议进行服务间的通信。这种通信方式相对于RMI(Remote Method Invocation)等其他远程调用...
Http Invoker是Spring框架的一个组件,允许在分布式环境中通过HTTP协议透明地调用Java对象的方法,提供了一种轻量级的RPC(Remote Procedure Call)实现。 **Http Invoker服务端(Service)** 在Http Invoker...