spring 4.0.3整合Hessian4.0.38 IDEA

1.1 Hessian简介

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

1.2 整合

对于Hessian是分服务端和客户端的,网上的一些例子也是大部分分开的(SpringMVC整合Hessian访问远程服务)。这里使用IntelliJ IDEA把服务端和客户端整合在一个项目里面。利用maven统一管理包。其他module直接继承依赖。

项目结构

pom.xml

1<?xml version="1.0" encoding="UTF-8" ?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <groupId>com.mr.web</groupId> 6 <artifactId>hessian-web</artifactId> 7 <packaging>pom</packaging> 8 <version>1.0-SNAPSHOT</version> 9 <name>hessian-web</name> 10 <description>公共工具包</description> 11 12 <modules> 13 <module>api</module> 14 <module>service</module> 15 <module>web</module> 16 </modules> 17 <properties> 18 <spring_version>4.0.3.RELEASE</spring_version> 19 <hessian.version>4.0.38</hessian.version> 20 </properties> 21 <dependencyManagement> 22 23 <dependencies> 24 <!-- spring start --> 25 <dependency> 26 <groupId>org.springframework</groupId> 27 <artifactId>spring-core</artifactId> 28 <version>${spring_version}</version> 29 </dependency> 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-beans</artifactId> 33 <version>${spring_version}</version> 34 </dependency> 35 <dependency> 36 <groupId>org.springframework</groupId> 37 <artifactId>spring-web</artifactId> 38 <version>${spring_version}</version> 39 </dependency> 40 <dependency> 41 <groupId>org.springframework</groupId> 42 <artifactId>spring-webmvc</artifactId> 43 <version>${spring_version}</version> 44 </dependency> 45 <dependency> 46 <groupId>org.springframework</groupId> 47 <artifactId>spring-context</artifactId> 48 <version>${spring_version}</version> 49 </dependency> 50 <dependency> 51 <groupId>org.springframework</groupId> 52 <artifactId>spring-aop</artifactId> 53 <version>${spring_version}</version> 54 </dependency> 55 <dependency> 56 <groupId>org.springframework</groupId> 57 <artifactId>spring-orm</artifactId> 58 <version>${spring_version}</version> 59 </dependency> 60 <dependency> 61 <groupId>org.springframework</groupId> 62 <artifactId>spring-tx</artifactId> 63 <version>${spring_version}</version> 64 </dependency> 65 <dependency> 66 <groupId>org.springframework</groupId> 67 <artifactId>spring-jdbc</artifactId> 68 <version>${spring_version}</version> 69 </dependency> 70 71 <dependency> 72 <groupId>org.springframework</groupId> 73 <artifactId>spring-context-support</artifactId> 74 <version>${spring_version}</version> 75 </dependency> 76 <!-- spring end --> 77 <!-- hessian --> 78 <dependency> 79 <groupId>com.caucho</groupId> 80 <artifactId>hessian</artifactId> 81 <version>${hessian.version}</version> 82 </dependency> 83 <!-- test --> 84 <dependency> 85 <groupId>junit</groupId> 86 <artifactId>junit</artifactId> 87 <version>4.8.2</version> 88 <scope>test</scope> 89 </dependency> 90 91 <!-- servlet start --> 92 <dependency> 93 <groupId>org.apache.tomcat</groupId> 94 <artifactId>tomcat-servlet-api</artifactId> 95 <version>8.0.3</version> 96 <scope>provided</scope> 97 </dependency> 98 99 <dependency> 100 <groupId>org.apache.tomcat</groupId> 101 <artifactId>jsp-api</artifactId> 102 <version>6.0.39</version> 103 <scope>provided</scope> 104 </dependency> 105 106 <dependency> 107 <groupId>jstl</groupId> 108 <artifactId>jstl</artifactId> 109 <version>1.2</version> 110 </dependency> 111 112 <dependency> 113 <groupId>javax.servlet.jsp</groupId> 114 <artifactId>jsp-api</artifactId> 115 <version>2.1</version> 116 <scope>provided</scope> 117 </dependency> 118 <!-- servlet end --> 119 </dependencies> 120 </dependencyManagement> 121</project>

服务端接口目录

服务端接口ITaskRemoteService

1public interface ITaskRemoteService { 2 String task(); 3}

Pom文件

1<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <parent> 4 <groupId>com.mr.web</groupId> 5 <artifactId>hessian-web</artifactId> 6 <version>1.0-SNAPSHOT</version> 7 <relativePath>../pom.xml</relativePath> 8 </parent> 9 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>api</artifactId> 13 <packaging>jar</packaging> 14 <name>${project.artifactId}</name> 15</project>

接口实现目录

接口实现

1TaskRemoteService 2 3@Service("taskRemoteService") 4public class TaskRemoteService implements ITaskRemoteService { 5 public String task() { 6 System.out.println("This is a task test for hessian "); 7 return "SUCCESS"; 8 } 9}

 pom文件

打包为war文件,供客户端调用

1<pre style="font-family: 宋体; font-size: 9pt; background-color: rgb(255, 255, 255);"><pre name="code" class="java"><?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <parent> 5 <groupId>com.mr.web</groupId> 6 <artifactId>hessian-web</artifactId> 7 <version>1.0-SNAPSHOT</version> 8 </parent> 9 10 <modelVersion>4.0.0</modelVersion> 11 12 <artifactId>service</artifactId> 13 <packaging>war</packaging> 14 <name>${project.artifactId}</name> 15 16 <dependencies> 17 <dependency> 18 <groupId>com.mr.web</groupId> 19 <artifactId>api</artifactId> 20 <version>1.0-SNAPSHOT</version> 21 </dependency> 22 23 <dependency> 24 <groupId>com.caucho</groupId> 25 <artifactId>hessian</artifactId> 26 </dependency> 27 <dependency> 28 <groupId>org.springframework</groupId> 29 <artifactId>spring-web</artifactId> 30 </dependency> 31 <dependency> 32 <groupId>junit</groupId> 33 <artifactId>junit</artifactId> 34 </dependency> 35 36 <dependency> 37 <groupId>org.springframework</groupId> 38 <artifactId>spring-core</artifactId> 39 </dependency> 40 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-beans</artifactId> 44 </dependency> 45 46 <dependency> 47 <groupId>org.springframework</groupId> 48 <artifactId>spring-web</artifactId> 49 </dependency> 50 51 <dependency> 52 <groupId>org.springframework</groupId> 53 <artifactId>spring-context</artifactId> 54 </dependency> 55 56 <dependency> 57 <groupId>org.springframework</groupId> 58 <artifactId>spring-webmvc</artifactId> 59 </dependency> 60 61 <dependency> 62 <groupId>org.springframework</groupId> 63 <artifactId>spring-tx</artifactId> 64 </dependency> 65 66 <dependency> 67 <groupId>org.springframework</groupId> 68 <artifactId>spring-jdbc</artifactId> 69 </dependency> 70 </dependencies> 71 72</project>

配置文件context_hessian_service.xml

1<beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans 5 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 6 <bean id="/taskRemoteService" class="org.springframework.remoting.caucho.HessianServiceExporter"> 7 <property name="service" ref="taskRemoteService"/> 8 <property name="serviceInterface" value="com.mr.hessian.api.ITaskRemoteService"/> 9 </bean> 10 <context:component-scan base-package="com.mr"/> 11</beans>

web.xml设置

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 5 <display-name>hessian-web</display-name> 6 7 <!-- spring mvc --> 8 <servlet> 9 <servlet-name>hessian-service</servlet-name> 10 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 11 <init-param> 12 <param-name>contextConfigLocation</param-name> 13 <param-value>classpath:context_hessian_service.xml</param-value> 14 </init-param> 15 <load-on-startup>1</load-on-startup> 16 </servlet> 17 18 <servlet-mapping> 19 <servlet-name>hessian-service</servlet-name> 20 <url-pattern>/</url-pattern> 21 </servlet-mapping> 22 23</web-app>

客户端设置。

客户端目录

controller

1@Controller("/") 2public class TaskController { 3 4 @Autowired 5 private ITaskRemoteService taskRemoteService; 6 7 @RequestMapping("task") 8 public String index(Model model) { 9 String task = "FAIL"; 10 task = taskRemoteService.task(); 11 model.addAttribute("status", task); 12 return "task"; 13 } 14}

客户端配置

context_hessian_api.xml

1<beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://www.springframework.org/schema/beans 4 http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 <bean id="taskRemoteService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> 6 <property name="serviceUrl" value="http://localhost:8080/service/taskRemoteService"/> 7 <property name="serviceInterface" value="com.mr.hessian.api.ITaskRemoteService"/> 8 </bean> 9</beans>

spring-config.xml

1<beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 8 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 9 "> 10 <context:component-scan base-package="com.mr"/> 11 12 <import resource="context_hessian_api.xml"/> 13 <mvc:annotation-driven/> 14 <!-- ViewResolver --> 15 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 16 <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 17 <property name="prefix" value="/WEB-INF/"/> 18 <property name="suffix" value=".jsp"/> 19 </bean> 20 21</beans>

task.jsp

1<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 2<!DOCTYPE html> 3<html> 4<body> 5<h2>Hello World!</h2> 6<a>Hessian 远程调用 </a>${status} 7</body> 8</html>

web.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 5 <display-name>hessian-web</display-name> 6 7 <!-- spring mvc --> 8 <servlet> 9 <servlet-name>appServlet</servlet-name> 10 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 11 <init-param> 12 <param-name>contextConfigLocation</param-name> 13 <param-value>classpath:spring-config.xml</param-value> 14 </init-param> 15 <load-on-startup>1</load-on-startup> 16 </servlet> 17 18 <servlet-mapping> 19 <servlet-name>appServlet</servlet-name> 20 <url-pattern>/</url-pattern> 21 </servlet-mapping> 22 23</web-app>

index.jsp

1<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 2<!DOCTYPE html> 3<html> 4<body> 5<h2>Hello World!</h2> 6<a href="${pageContext.request.contextPath}/task">点我</a> 7</body> 8</html>

pom.xml

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <parent> 5 <groupId>com.mr.web</groupId> 6 <artifactId>hessian-web</artifactId> 7 <version>1.0-SNAPSHOT</version> 8 <relativePath>../pom.xml</relativePath> 9 </parent> 10 11 <modelVersion>4.0.0</modelVersion> 12 13 <artifactId>web</artifactId> 14 <packaging>war</packaging> 15 <name>${project.artifactId}</name> 16 17 <dependencies> 18 19 <dependency> 20 <groupId>com.mr.web</groupId> 21 <artifactId>api</artifactId> 22 <version>1.0-SNAPSHOT</version> 23 </dependency> 24 25 <dependency> 26 <groupId>com.caucho</groupId> 27 <artifactId>hessian</artifactId> 28 </dependency> 29 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-core</artifactId> 33 </dependency> 34 35 <dependency> 36 <groupId>org.springframework</groupId> 37 <artifactId>spring-beans</artifactId> 38 </dependency> 39 40 <dependency> 41 <groupId>org.springframework</groupId> 42 <artifactId>spring-web</artifactId> 43 </dependency> 44 45 <dependency> 46 <groupId>org.springframework</groupId> 47 <artifactId>spring-context</artifactId> 48 </dependency> 49 50 <dependency> 51 <groupId>org.springframework</groupId> 52 <artifactId>spring-webmvc</artifactId> 53 </dependency> 54 55 <dependency> 56 <groupId>org.springframework</groupId> 57 <artifactId>spring-tx</artifactId> 58 </dependency> 59 60 <dependency> 61 <groupId>org.springframework</groupId> 62 <artifactId>spring-jdbc</artifactId> 63 </dependency> 64 65 <!-- servlet --> 66 <dependency> 67 <groupId>org.apache.tomcat</groupId> 68 <artifactId>tomcat-servlet-api</artifactId> 69 </dependency> 70 <dependency> 71 <groupId>org.apache.tomcat</groupId> 72 <artifactId>jsp-api</artifactId> 73 </dependency> 74 <dependency> 75 <groupId>javax.servlet.jsp</groupId> 76 <artifactId>jsp-api</artifactId> 77 </dependency> 78 <dependency> 79 <groupId>jstl</groupId> 80 <artifactId>jstl</artifactId> 81 </dependency> 82 83 </dependencies> 84</project>

发布

添加war包

在浏览器查看

源码地址:https://github.com/wuxinshui/hessian-web

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )