Hessian+Maven Demo 一个简单的实例(有问题,可以提问,经常在线,源码会粘上连接,可下载)

本文主要是介绍Hessian+Maven Demo 一个简单的实例(有问题,可以提问,经常在线,源码会粘上连接,可下载),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1:这个小Demo是我在IOS系统上搞起来的,MAVEN、JDK、TOMCAT、ECLIPSE安装都不一一说了,可以自己尝试一下,有问题,可以在线问我

2:这是一个Hessian入门级别的项目,项目是Maven项目、方便管理和以后整合SpringMVC。


==================================把环境搞起来,先跑一下,就知道Hessian Demo作为一个轻量级的remoting onhttp工具的大概原理了=====

1Maven的Pom.xml文件  依赖的包(hessian的jar包,会报异常,到时候可以注意一下这个问题

<dependencies>

<dependency>

<groupId>com.caucho</groupId>

<artifactId>hessian</artifactId>

<!--  <version>4.0.7</version> -->

<version>3.1.5</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.0.1</version>

</dependency>

<dependency>

<groupId>commons-logging</groupId>

<artifactId>commons-logging</artifactId>

<version>1.1.1</version>

</dependency>

</dependencies>


2:web.xml(这里的内容都已经写好注释了,不懂的地方可以再看一下)

<!-- 使用Hessian远程访问:配置拦截 -->

<servlet>

<servlet-name>synchLocalhost</servlet-name>

<!-- 自定义名称 -->

<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>

<!-- 这个是调用jar里面的Hessian拦截器,不需要更改-->

<init-param>

<param-name>home-class</param-name>

<!-- 这个是Hessian拦截器后跳转的实现类标识符,不需要更改 -->

<param-value>com.shenhl.hession.HelloHessianImpl</param-value>

<!-- 自定义Hessian的实现类的全路径 -->

</init-param>

<init-param>

<param-name>home-api</param-name>

<!-- 这个是Hessian拦截器后跳转的接口标识符,不需要更改 -->

<param-value>com.shenhl.hession.HelloHessian</param-value>

<!-- 自定义Hessian的接口类的全路径 -->

</init-param>

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

</servlet>

<servlet-mapping>

<!-- servlet-name:与前面的一致 -->

<!-- url-pattern :访问入口名 客户端通过访问入口进入服务器中Hessian拦截器,拦截后跳转到自定义的实现类中方法处理-->

<servlet-name>synchLocalhost</servlet-name>

<url-pattern>/synchLocalhost</url-pattern>

</servlet-mapping>

3:类,源码:HelloHessian.java

package com.shenhl.hession;


import java.util.List;

import java.util.Map;


public interface HelloHessian {

String sayHello();


List myLoveFruit();


Map myBabays();


MyCar getMyCar();

}


4:HelloHessianImpl接口的实现类

package com.shenhl.hession;


import java.io.Serializable;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import com.caucho.hessian.server.HessianServlet;

/**

 * 2016 7 26 9:27

 * @author user

 *

 */

public class HelloHessianImplextends HessianServlet implements HelloHessian , Serializable{


/**

*/

privatestatic finallong serialVersionUID =1L;


public String sayHello() {


return"welcom to my Hessian";

}


public List<String> myLoveFruit() {

List<String> list =new ArrayList<String>();

list.add("blueberry");

list.add("banana");

list.add("grape");

returnlist;

}


public Map<String, String> myBabays() {

Map<String, String> map = new HashMap<String, String>();

map.put("son","张大四");

map.put("daughter","李小三");

map.put("son","王小二");

returnmap;

}


public MyCar getMyCar() {

MyCar car =new MyCar();

car.setCarName("英菲尼迪");

car.setCarModel("Q50");

returncar;

}


}


5:实例类MyCar

package com.shenhl.hession;


import java.io.Serializable;


public class MyCarimplements Serializable {


/**

*/

private static final long serialVersionUID = 5302943492321676322L;


private StringcarName;

private StringcarModel;


public String getCarName() {

returncarName;

}


public void setCarName(String carName) {

this.carName =carName;

}


public String getCarModel() {

returncarModel;

}


public void setCarModel(String carModel) {

this.carModel =carModel;

}


@Override

public String toString() {


return"my car name:[" + this.carName +"] model:[" + this.carModel +"].";

}


}



6:HessianClientTest.java类

package com.shenhl.hession;


import java.net.MalformedURLException;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;


import com.caucho.hessian.client.HessianProxyFactory;


/**

 * 参考的源文:http://ribbonchen.blog.163.com/blog/static/118316505201472024252460/

 * 

 * @author user

 *

 */

public class HessianClientTest {


public static void main(String[] args) {

//URL:http://本地地址:服务端口/项目名称/web.xml中配置的名称

String url ="http://localhost:8080/hession_demo/synchLocalhost";

HessianProxyFactory factory = new HessianProxyFactory() ;

try {

HelloHessian hello = (HelloHessian)factory.create(HelloHessian.class,url);

System.out.println(hello.sayHello());

MyCar car =hello.getMyCar();     

            System.out.println(car.toString());     

    

            for (Object entry:hello.myBabays().entrySet()) {

                System.out.println(entry +"************" + entry);     

            }     

    

            for (Object str:hello.myLoveFruit()) {     

                System.out.println("Object Love Fruit:"+str);     

            } 

            Map babies = hello.myBabays();

            Iterator it = babies.entrySet().iterator();

            while(it.hasNext()){

            Entryentry = (Entry)it.next();

            System.out.println(entry.getKey() +"    " + entry.getValue());

            }

    

        } catch (MalformedURLException e) {     

            e.printStackTrace();     

        }   

}


}



这篇关于Hessian+Maven Demo 一个简单的实例(有问题,可以提问,经常在线,源码会粘上连接,可下载)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436787

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

maven私服配置全过程

《maven私服配置全过程》:本文主要介绍maven私服配置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录使用Nexus作为 公司maven私服maven 私服setttings配置maven项目 pom配置测试效果总结使用Nexus作为 公司maven私

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码