文档章节

hessian-spring简单应用

冰雷卡尔
 冰雷卡尔
发布于 2013/09/03 15:29
字数 707
阅读 109
收藏 1
1、服务端,这里是一个web项目:
项目结构

pom.xml文件中加入spring和hessian的依赖配置

web.xml中hessian的配置:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<!-- 手动指定applicationContext.xml文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:applicationContext.xml
		</param-value>
	</context-param>

	<!-- Spring 启动加载设置 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<!-- hessian begin -->
	<servlet>
  	    <servlet-name>remote</servlet-name>
  	    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	    <init-param>  
			<param-name>namespace</param-name>  
	        <param-value>classes/hessian/remote-servlet</param-value>  
	    </init-param>
	    <load-on-startup>1</load-on-startup>
  	</servlet>
  	<servlet-mapping>
  		<servlet-name>remote</servlet-name>
  		<url-pattern>/remote/*</url-pattern>
  	</servlet-mapping>
  	<!-- hessian end -->
	
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>
applicationContext中加入<import resource="classpath:hessian/remote-servlet.xml"/>

remote-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	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-3.0.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- 向外发布的hession用户接口 -->
	<bean id="userInfoServiceImpl" class="org.hessian.service.impl.UserInfoServiceImpl" />
	<bean name="/userInfoService" class="org.springframework.remoting.caucho.HessianServiceExporter">
		<property name="service" ref="userInfoServiceImpl" />
		<property name="serviceInterface" value="org.hessian.service.IUserInfoService" /> 
	</bean>
</beans>
再接下来就是向外发布的接口、实现类和所需要用到的DO类,服务端拥有客户端相同的接口和DO类,并且DO类要序列化

启动服务,对外发布用户接口成功,接下来看客户端如何调用该服务

2、客户端,java项目、web项目都可以:
项目结构

pom.xml文件中加入spring和hessian的依赖配置

web.xml配置,只负责加载applicationContext文件

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<!-- 手动指定applicationContext.xml文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:applicationContext.xml
		</param-value>
	</context-param>
	<!-- Spring 启动加载设置 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
</web-app>
applicationContext中加入
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
			 	<value>classpath:remote-hession.properties</value>
			</list>
		</property>
</bean>
<import resource="classpath:hessian/hessian-client.xml"/>



remote-hession.properties里面配置服务所在地址
hessian.http.path = http://localhost:9090/hessian_server

hessian-client.xml
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	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-3.0.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- client调用发布的hession用户接口 -->
	<bean name="userInfoService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
		<property name="serviceUrl">
			<value>${hessian.http.path}/remote/userInfoService</value>
		</property>
		<property name="serviceInterface">
			<value>org.hessian.service.IUserInfoService</value>
		</property>
	</bean>
</beans>



接下来就是和服务一致的接口类和DO类,下面就是测试代码:
package org.hessian.service;

import javax.annotation.Resource;

import org.hessian.service.common.JunitBase;
import org.hessian.service.common.UserInfo;
import org.junit.Test;

import com.caucho.hessian.client.HessianProxyFactory;

public class HessianClientTest extends JunitBase {

	@Resource
	private IUserInfoService userInfoService;
	
	/**
	 * 方式一
	 * java client(HessianProxyFactory)
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		UserInfo userinfo = new UserInfo();
		userinfo.setName("jack");
		
	    String url = "http://localhost:9090/hessian_server/remote/userInfoService";  
	    HessianProxyFactory factory = new HessianProxyFactory();
	    IUserInfoService userInfoService = (IUserInfoService) factory.create(IUserInfoService.class, url);
	    userInfoService.addUserInfo(userinfo);
	}
	
	/**
	 * 方式二,该junit测试会加载spring一系列配置文件
	 * spring web
	 * @throws Exception
	 */
	@Test
	public void testHessian() throws Exception {
		UserInfo userinfo = new UserInfo();
		userinfo.setName("china");
		userInfoService.addUserInfo(userinfo);
	}
}



JunitBase.java
package org.hessian.service.common;

import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class JunitBase
{
	private final Logger logger = Logger.getLogger(this.getClass());

	@Before
	public void before() {
		logger.debug("----------------------------Start Test---" + this.getClass() + "----------------------------------");
	}

	@After
	public void after() {
		logger.debug("----------------------------End Test---" + this.getClass() + "----------------------------------");
	}
}



HessianServiceExporter only supports POST requests

© 著作权归作者所有

共有 人打赏支持
冰雷卡尔
粉丝 30
博文 116
码字总数 81854
作品 0
深圳
程序员
基于 Spring Boot 的研发框架 - SOFABoot

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot ...

匿名
04/19
0
1
SpringMVC集成Hessian

SpringMVC集成Hessian 首先强调这里是SpringMVC,不是spring,这两者在集成Hessian的时候还是有差别的。Spring集成相对简单,网上随便搜一个就行。 SpringMVC有点麻烦。 注:如果你还不了解H...

飞翼
2016/12/28
1
0
《Spring技术内幕》学习笔记18——Spring使用Hessian实现远程调用

Spring目前提供了对RMI、 HttpInvoker、Hessian、Burlap及WebService等Remoting技术的集成。Spring屏蔽了这些实现技术的差异,用户只需开发简单的Java对象(Plain Old Java Objects,POJO)然后...

谜男amu
05/16
0
0
蚂蚁开源 | 在 Spring Boot 中集成 SOFABoot 类隔离能力

SOFABoot 是蚂蚁金服中间件团队开源的基于 Spring Boot 的一个开发框架,其在 Spring Boot 基础能力之上,增加了类隔离能力。蚂蚁金服内部丰富的实践场景表明,类隔离能力对解决类冲突、版本...

技术小能手
08/15
0
0
简单的Hessian接口开发实例

需要的jar包 hessian-4.0.7.jar #客户端 接口 package com.test; public interface Printer { public String print(String a); public String say(); } 2.实现该接口 package com.test; publ......

阿联酋挖石油
2015/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
29分钟前
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
1
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
9
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0
OpenCV边缘检测算子原理总结及实现

1. 拉普拉斯算子 原理:是一种基于图像导数运算的高通线性滤波器。它通过二阶导数来度量图像函数的曲率。 拉普拉斯算子是最简单的各向同性微分算子,它具有旋转不变性。一个二维图像函数的拉...

漫步当下
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部