hessian demo和hessian与spring整合demo

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。

另外spring的aop,事务管理等等都是我们经常⽤到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。

mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。

mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。

在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。

使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。

2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。

dubbo中的各种协议

dubbo中的各种协议

Dubbo各种协议协议参考手册dubbo://1.<dubbo:protocol name="dubbo" port="20880"/> Set default protocol:1.<dubbo:provider protocol="dubbo"/>Set service protocol:1.<dubbo:service protocol="dubbo"/>Multi port:1.<dubbo:protocol id="dubbo1" name="dubbo" port="20880"/>2.<dubbo:protocol id="dubbo2" name="dubbo" port="20881"/>Dubbo protocol options:1.<dubbo:protocol name=“dubbo”port=“9090”server=“netty”client=“netty” codec=“dubbo”serialization=“hessian2”charset=“UTF-8”threadpool=“fixed” threads =“100”queues=“0”iothreads=“9”buffer=“8192”accepts=“1000”payload=“838860 8” />∙Transportero mina, netty, grizzy∙Serializationo dubbo, hessian2, java, json∙Dispatchero all, direct, message, execution, connection∙ThreadPoolo fixed, cached∙<dubbo:protocol name="dubbo"connections="2"/><dubbo:service connections=”0”>或<dubbo:reference connections=”0”>表示该服务使用JVM共享长连接。

整合struts1+spring+hibernate框架完成简单的登录

整合struts1+spring+hibernate框架完成简单的登录

*编写环境:*开发工具:Myeclipse6.01*SPRING :spring2.0*STRUTS :struts1.2*HIBERNATE:hibernate3.0*JDK: 1.6*TOMCAT: 6.0*WINDOW641.新建web项目。

2.选中新建项目,右键--》选择“myeclipse”--》添加Struts支持。

3.在弹出的信息框,有必要修改一下图中的地方。

4.上面的操作完成之后,打开我们的项目我们可以看到我们的项目结构发生了变化,引入了一些struts标签和生成了struts-config.xml配置文件。

5.开始添加spring支持,同样选中新建项目,右键--》选择“myeclipse”--》“添加spring 支持”,在弹出的信息框,做如下内容修改:6.点击“next”,直接选择默认,当然也可根据自己的规则做修改。

7.在添加“Hibernate”支持的时候,首先做的工作是创建一个数据源。

这个创建方法有很多中(找百度可得)这里只介绍一种:打开你的myeclipse的右上角的小三角,选择“myeclipsedatabase explorer”在弹出的界面中,在如图位置右键“new”在弹出的界面中做如下修改:修改完成后点击“test driver”成功则继续。

8.暂时回到myeclipse开发界面。

正式开始添加“Hibernate”支持。

在弹出的界面中做如图修改:点击“next”这里如图,选择spring的配置文件。

下一步操作后,做如下图修改操作:下一步之后,界面修改操作,如下图:去掉复选框中的选项,然后点击“finish”完成整个操作。

之后将会直接打开spring的配置文件,然后你核对一下您的数据库连接是否正确。

至此三大支持操作完成,启动没有问题说明框架雏形已经完成。

9.在项目中的WEB-INF下找到web.xml,做如下修改:格式头部分省略,下面是需要新增的代码<!--初始化spring配置参数 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 配置监听 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</list ener-class></listener><!-- 配置spring过滤器解决中文乱码问题 --><filter>Ps :这个时候我们再次启动服务的时候,发现可能会报错:因为我们在刚才已经把spring 的配置文件做了初始化,而在spring 的配置文件中有数据源的连接,而我们的项目中可能还缺少一个包:commons-pool-1.4.jar(/detail/u013806366/7897665 )当我们把这个包放在lib 下,我们再次启动项目的时候,错误信息应该会消失。

hessian源码相对于spring操作事例演示

hessian源码相对于spring操作事例演示

因为最近有点时间,所以就想读一些技术的源码,最近选择hessian。

废话不多说,进入正题:hessian客户端时序图:hessian服务端时序图:因为hessian源码相对于spring算很简单了。

所以不浪费大家宝贵的时间来分析源码。

想说说怎么实现远程调用(rpc)。

远程调用,顾名思义就是通过远程调用别的机器(JVM or ...)中的方法。

要想实现远程调用,思路是怎样呢?常用的模式代理,工厂。

为啥怎么说呢?远程调用通过网络,肯定需要工厂产出不同的类,不然一个类写,会死人的。

代理模式,因为调用前你是不知道实际的调用,肯定是通过代理调用到远程方法。

下面给大家说说远程调用的原理(PS:不懂代理的同学,先上百度搜索:java代理)。

实现自定义的远程调用,就是序列化成字节流后,发送到服务端,服务端根据调用的api、方法、参数去具体调用一个方法,调用方法后把结果输入到输出流里面,最后结果展示在代理的return中。

ok,开始贴代码:客户端(HttpRpcClient):1 String url= "http://localhost:8080/hessian-study-server/helloworld1";2 HttpProxyFactory factory = new HttpProxyFactory();3 Class<?> clazz = Class.forName("com.jzx.hessian.server.SayHelloService");4 SayHelloService sayHelloService = (SayHelloService) factory.create(clazz,url);5 System.out.println(sayHelloService.sayHello("小明", "男"));6 UserVo vo= sayHelloService.sayHello1("小明", "男");7 System.out.println("姓名:" + vo.getName()+ " 性别:" + vo.getSex());从代码中分析,首先创建了一个工厂类HttpProxyFactory,其次创建了一个类的描述。

springMVC与hibernate整合实例

springMVC与hibernate整合实例

SpringMVC的搭建一直以来接触到的都是SSH的框架,形成了MVC模式,本来并没有想着去弄另一个MVC模式,但现在springMVC模式很热,所以我也学习一下,首先我声明一下,这个框架我也是在网上找了一些资料才完成的,源文件等也是利用的网上的现成的,但是有对其进行修改。

下面来详细的说一说这个模式的搭建。

首先在spring中是以controller来作为控制器(相当于SSH中的action),其他的和SSH框架没有区别。

因为Spring是基于注解的,所以在整个的模式中都是采用注解的方式来处理,这个项目是用springMVC+hibernate一起来搭建的。

这个项目的搭建我花了很久的时间,也弄了蛮久才成功,希望日后能更加完善!理解更加的深入。

一:整体框架的结构图以及所需的jar包。

这里spring是3.0.1,hibernate是用的3.6,数据库是用的mysql 5.6 ,前提工作是要建立好一个数据库,我这里是名为springmvc的数据库来进行操作,这里是采用的hibernate自动更新的方式,所以可以不需要建表只需要建立起数据库就好。

项目框架的代码结构:二:开始搭建环境。

1,首先把上面所需的包添加进来后,我们要在/WEB-INF目录下的web.xml里面添加spring的监听器,以及相关的配置。

源码如下:<?xml version="1.0"encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><display-name>s3h3</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext*.xml</param-value> </context-param><listener><listener-class>org.springframework.web.context.ContextLoaderList ener</listener-class></listener><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</se rvlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-servlet.xml</param-value> </init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring</servlet-name><!-- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --> <url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>2,接下来可以编写spring的配置文件,来整合hibernate,主要的配置写在一个专门存放配置文件的源码目录下config文件夹下,这里的applicationContext.xml是spring的主要配置文件,包括数据源等的配置。

完美Spring2.5、Hibernate3.0、Struts2整合配置实例

完美Spring2.5、Hibernate3.0、Struts2整合配置实例

完美Spring2.5、Hibernat e3.0、Struts2整合配置实例,自己动手实践的哦1.所要的jar包有,可以找对应的官网下载2.对应的配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?>< beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSche ma-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd http://www.springframewor /schema/tx/schema/tx/spring-tx-2.0.xsd/schema/aop/schema/aop/spring-aop-2.0.xsd" default-lazy-init="true"><bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass"><value>org.gjt.mm.mysql.Driver</value></property><property name="jdbcUrl"><value>jdbc:mysql://localhost:3306/huiyou?characterEncoding=UTF-8</ value></property><property name="user"><value>root</value></property><property name="password"><value>root</value></property><property name="minPoolSize"><value>1</value></property><property name="maxPoolSize"><value>20</value></property><property name="maxIdleTime"><value>1800</value></property><property name="acquireIncrement"><value>2</value></property><property name="maxStatements"><value>0</value></property><property name="initialPoolSize"><value>2</value></property><property name="idleConnectionTestPeriod"><value>1800</value></property><property name="acquireRetryAttempts"><value>30</value></property><property name="breakAfter AcquireFailure"><value>true</value></property><property name="testConnectionOnCheckout"><value>false</value></property></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property><property name="hibernatePropert ies"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><!--设置二级缓冲--><prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop><!--设置二级缓冲,打开查询缓冲--><prop key="e_query_cache">true</prop> <prop key="hibernate.show_sql">false</prop><prop key="hibernate.connection.release_mode">auto</prop><prop key="hibernate.autoReconnect">true</prop><prop key="e_reflection_opt imizer">true</prop></props></property><property name="mappingResources"><list><value>com/product/bean/Yuancheng.hbm.xml</value></list></property></bean><bean id="dao" class="com.product.dao.impl.DaoImpl"scope="prototype"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><bean id="service" class="com.product.service.impl.ServiceImpl"scope="prototype"><property name="dao"><ref bean="dao" /></property></bean><!-- action配置--><bean id="Saveorder Action" class="com.product.action.SaveorderAction" scope="prototype"><property name="service"><ref bean="service" /></property></bean><!-- 配置事务管理器--><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManage r"><property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- 配置事务特性,配置add、delete和update开始的方法,事务传播特性为required--><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes><tx:method name="insert*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice><!-- 配置那些类的方法进行事务管理,当前.jobedu.oa.service包中的子包、类中所有方法需要,还需要参考tx:advice的设置--> <aop:config><aop:pointcut id="allManager Method" expression="execution (* com.nizi.service.*.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="allManager Method"/> </aop:config>< /beans>url重写urlrewrite.xml<?xml version="1.0" encoding="utf-8"?>< !DOCTYPE urlrewrite PUBLIC "-////DTD UrlRewrite 2.6//EN""/res/dtds/urlrewrite2.6.dtd">< urlrewrite><rule><from>/findfengge_([0-9]\d*)_([0-9]\d*).html</from><to>/BproductAction!findfengge.action?fenggeid=$1&amp;cur=$2</to ></rule><rule><from>/getnews-([0-9]\d*).html</from><to>/BproductAction!getnews.action?id=$1</to></rule><rule><from>/newshangchuan.html</from><to>/BproductAction!newshangchuan.action</to></rule><rule><from>/userhuiproduct_([0-9]\d*)_(\w*)_([0-9]\d*).html</from><to>/BproductAction!listuserhuiproduct.action?userid=$1&amp;englis h=$2&amp;cur=$3</to></rule><rule><from>/userxianchang_([0-9]\d*)_(\w*)_([0-9]\d*).html</from><to>/BproductAction!xianchang.action?userid=$1&amp;english=$2&a mp;cur=$3</to></rule>< /urlrewrite>struts.xml<?xml version="1.0" encoding="UTF-8" ?>< !DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.locale" value="en_GB" /><constant name="struts.multipart.maxSize"value="104857600"></constant><package name="pro" extends="struts-default"><action name="Makecar Action" class="MakecarAction"><result name="success">/jsp/buy.jsp</result><result name="login">/jsp/login.jsp</result><result name="input">/W EB-INF/page/sorry.jsp</result></action></package>< /struts>web.xml<?xml version="1.0" encoding="UTF-8"?>< web-app version="2.5" xmlns="/xml/ns/javaee" xmlns:xsi="/2001/XML Schema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><error-page><error-code>404</error-code><location>/html/404error.html</location></error-page><error-page><error-code>500</error-code><location>/html/500error.htm</location></error-page><jsp-config><jsp-property-group><description>jsp encoding example</description><display-name>JSPConfiguration</display-name><url-pattern>/shtm l/main.jsp</url-pattern><el-ignored>true</el-ignored><page-encoding>UTF-8</page-encoding><scripting-invalid>false</scripting-invalid><include-prelude></include-prelude><include-coda></include-coda></jsp-property-group><jsp-property-group><description>html encoding example</description><display-name>JSPConfiguration</display-name><url-pattern>*.html</url-pattern><el-ignored>true</el-ignored><page-encoding>UTF-8</page-encoding><scripting-invalid>false</scripting-invalid><include-prelude></include-prelude><include-coda></include-coda></jsp-property-group><taglib><taglib-ur i>/W EB-INF/outtime</taglib-uri><taglib-location>/W EB-INF/outtime.tld</taglib-location></taglib><taglib><taglib-ur i>/W EB-INF/outtimecha</taglib-uri><taglib-location>/W EB-INF/outtimecha.tld</taglib-location> </taglib></jsp-config><context-param><param-name>log4jConfigLocation</param-name><param-value>/W EB-INF/log4j.properties</param-value></context-param><context-param><param-name>contextConfigLocation</param-name><param-value>/W EB-INF/applicationContext.xml</param-value> </context-param>< context-param><param-name>webAppRootKey</param-name><param-value>huiyou.root</param-value></context-param><session-config><session-timeout>60</session-timeout></session-config><listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener><listener><listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener><!--<listener><listener-class>huan.lin.caiji.FindnewsListener</listener-class></listener>--><filter><filter-name>CacheFilter</filter-name><filter-class>com.opensymphony.oscache.web.filter.CacheFilter </filter-class><init-param><param-name>time</param-name><param-value>60</param-value></init-param><init-param><param-name>scope</param-name><param-value>application</param-value></init-param></filter><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter><filter-name>struts-cleanup</filter-name><filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class></filter><filter-mapping><filter-name>struts-cleanup</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter </filter-class><init-param><param-name>logLevel</param-name><param-value>W ARN</param-value></init-param></filter><filter-mapping><filter-name>CacheFilter</filter-name><url-pattern>/</url-pattern></filter-mapping><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORW ARD</dispatcher><dispatcher>INCLUDE</dispatcher></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.html</welcome-file></welcome-file-list></web-app>log4j.propertieslog4j.root Logger=DEBUG,ROLLING_F ILElog4j.appender.ROLLING_F ILE=org.apache.log4j.RollingFileAppenderlog4j.appender.ROLLING_F ILE.Threshold=ERRORlog4j.appender.ROLLING_F ILE.File=zhuwei.htmllog4j.appender.ROLLING_F ILE.Append=truelog4j.appender.ROLLING_F ILE.MaxFileSize=10KBlog4j.appender.ROLLING_F ILE.MaxBackupIndex=1log4j.appender.ROLLING_F yout=org.apache.log4j.HT MLLayoutoscache.propertiescache.capacity=1000Cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceList cache.memory=true。

struts2+hibernate+spring经典整合实例教程

struts2+hibernate+spring经典整合实例教程

Struts2与Spring、Hibernate三者整合的过程示例:示例工具:MyEclipse 7.0、Tomcat 6.0、MySql步骤:1.创建一个WEB工程,命名为BookShop(名字自己取,此处为示例工程名);2.导入struts2的核心jar包,也就是在WEB-INF下的lib文件夹中放入jar包文件,如下图(图中jar包为示例版本):3.加载spring,选中工程名,右击并选择【MyEclipse】选项下的【Add Spring Capabilities...】(或者在工具栏中选择【MyEclipse】下的【Add Spring Capabilities...】),在弹出的对话框中进行如下图所示操作:点击【Next】,点击Folder文本框后的【Browse】,在弹出对话框中选择spring配置文件存储位置为WEB-INF 文件夹,如下图所示:点击【OK】后,再点击【Finish】完成。

至此,已经完成加载spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。

4.加载Hibernate,选择【MyEclipse】下的【Add Hibernate Capabilities...】,在弹出对话框中进行如下图所示操作:点击【Next】后,选择Existing Spring configuration file单选框,在SessionFactory Id文本框中填入"sessionFactory",如下图所示:点击【Next】,进行如下图所示操作:该操作中,只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大。

然后在DB Driver 下拉列表中,选择MyEclipse中创建好的数据库源xiaoqi,其他信息将自动填写。

点击【Next】,在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击【Finish】完成(创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,问全部保存【Keep Exiting】,还是替换掉【Replace】,可以选择替换掉【Replace】)。

浅谈Spring+Hibernate整合

浅谈Spring+Hibernate整合

Spring+Hibernate整合Spring是一个轻量级的bean容器,它为业务对象(business objects)、DAO对象和资源对象(如:JDBC数据源或者Hibernate SessionFactorie等)提供了IoC类型的装配能力。

Spring 通过使用一个xml格式的配置文件,为开发者提供了一种通过定制属性文件来手动管理单例对象或工厂对象的可选择性。

由于Spring将非侵入性做为一个重要的目标,因此由Spring 配置管理的bean均不需要依赖Spring自身的接口和类,就可以通过它们的bean属性完成配置。

从而可以被应用到任何环境中,无论你开发的是一个J2EE的web应用还是一个桌面应用甚至只是一个applet都可以。

在使用Hibernate的应用中,Spring对DAO对象通常的事务管理机制应该特别引起关注。

它的目的就是分离数据访问和事务处理,使事务性业务对象不与任何特殊的数据访问或事务策略耦合在一起,从而不影响业务对象的可复用性。

这种划分既可以经由事务模板(TransactionTemplate)用在java代码中编程的方式实现,也可以经由AOP的事务拦截器(一般用TransactionProxyFactoryBean)用在配置文件中声明的方式实现。

无论是本地的Hibernate / JDBC事务,还是JTA事务都支持对象外的事务策略,这对于本地的无状态会话Bean是一个非常有用的选择。

Spring的HibernateTemplate类提供了一个简单的方式实现了Hibernate-based DAO对象,而不必关心如何获得Hibernate的Session实例,也不必关心多方参与的事务处理。

无需使用try-catch块,也无需进行事务检查。

一个简单的Hibernate访问方法就完全解决了这些麻烦! 无论是在多个DAO接口还是在多方事务的情况下,Spring使得多种DAO对象无缝地协同工作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/***@version 1.1*@author iam00@*@create Mar18,2010*/Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI(Remote Method Invocation,远程方法调用)的功能。

采用的是二进制RPC (Remote Procedure Call Protocol,远程过程调用协议)协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

在进行基于Hessian的项目开发时,应当注意以下几点:▲JAVA服务器端必须具备以下几点:·包含Hessian的jar包。

·设计一个接口,用来给客户端调用。

·实现该接口的功能。

·配置web.xml,配好相应的servlet。

·对象必须实现Serializable 接口。

·对于复杂对像可以使用Map的方法传递。

▲客户端必须具备以下几点:·java客户端包含Hessian.jar的包。

·具有和服务器端结构一样的接口。

·利用HessianProxyFactory调用远程接口。

下面是一个hessian的简单例子。

Java服务器端:环境:j2sdk1.4.2、Tomcat6.0依赖的包:hessian-3.1.6.jar新建一个名为HessianServer的web project。

将hessian-3.1.6.jar放入WEB-INF/lib文件夹中。

创建接口:package server.demo;public interface DemoApi {public void setName(String name);public String sayHello();public User getUser();}实现接口:package server.demo;public class DemoService implements DemoApi { private String name;public String sayHello() {return"Hello "+name;}public void setName(String name) {=name;System.out.println("Hello "+name);}public User getUser() {return new User("lingling", "pass");}}创建User类,注意:一定要implements Serializable。

package server.demo;import java.io.Serializable;public class User implements Serializable { String name = "kitty";String password = "nopass";public User() {super();}public User(String name, String password) { super(); = name;this.password = password;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}配置web.xml:<servlet><servlet-name>first</servlet-name><servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class><init-param><param-name>service-class</param-name><param-value>server.demo.DemoService</param-value> </init-param></servlet><servlet-mapping><servlet-name>first</servlet-name><url-pattern>/helloworld</url-pattern></servlet-mapping>将项目发布到tomcat服务器上。

Java客户端:环境:j2sdk1.4.2依赖的包:hessian-3.1.6.jar创建一个名为HessianClient的java project,载入hessian-3.1.6.jar。

创建与服务器一样的接口及User类,注意它们所在的包路径也要与服务器相同,否则会出现ng.ClassNotFoundException。

接口:package server.demo;public interface DemoApi {public void setName(String name);public String sayHello();public User getUser();}User类:package server.demo;import java.io.Serializable;public class User implements Serializable { String name = "kitty";String password = "nopass";public User() {super();}public User(String name, String password) { super(); = name;this.password = password;}public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}}客户端程序:package client.demo;import .MalformedURLException;import server.demo.DemoApi;import com.caucho.hessian.client.HessianProxyFactory;public class ClientTest {public static void main(String[] args) throws MalformedURLException, ClassNotFoundException {String url = "http://localhost:9520/HessianServer/helloworld";HessianProxyFactory factory = new HessianProxyFactory();DemoApi api = (DemoApi) factory.create(url);api.setName("test");System.out.println(api.sayHello());System.out.println(api.getUser().getName());System.out.println(api.getUser().getPassword());}}现在,启动tomcat,运行ClientTest。

运行结果:Hello testlinglingpass现在,在以上基础上将hessian与spring整合。

Java服务器端(即我们上面建的名为HessianServer的web project):环境:j2sdk1.4.2、Tomcat6.0依赖的包:1.Hessian包:hessian-3.1.6.jar2.spring-framework-2.0.2包:a)aopalliance.jarb)commons-logging.jarc)log4j-1.2.14.jard)spring.jare)spring-aop.jarf)spring-beans.jarg)spring-context.jarh)spring-core.jari)spring-jdbc.jarj)spring-jms.jark)spring-web.jarl)spring-webmvc.jar配置web.xml,web.xml中增加:<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/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>写spring的发布hessian服务的配置文件remote-servlet.xml,这个文件就建在工程的src下,即deploy到tomcat后,在WEB-INF/classes目录下。

相关文档
最新文档