`
smartcdrw
  • 浏览: 2150 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Flex + Hessian + Spring

阅读更多

這是我第一偏的文章
我是初學 FLEX
如同標題所示我一直在找 FLEX 與 JAVA 溝通的管道
Hessian 我選擇了他,簡單易用且支持很多 client 當然最近也支持了 FLEX
要怎麼上手呢看了 Hessian 網站上的範例 hessian.caucho.com/doc/flash.xtp
有了一點基礎但是要實做一個 HessianServlet 總覺得不是很好用
想說我用 spring 用習慣了來看看有沒有解決的方法想到 spring 的文檔 Remoting and web services using Spring
static.springframework.org/spring/docs/2.5.x/reference/remoting.html
剛好有對 hessian 支持
所以馬上來試用 首先當然是設定一些文檔好讓 spring remoting 能夠活起來

web.xml 代码
 
  1. < servlet >   
  2.     < servlet-name > remoting </ servlet-name >   
  3.     < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class >   
  4.     < load-on-startup > 1 </ load-on-startup >   
  5. </ servlet >   
  6.   
  7. < servlet-mapping >   
  8.     < servlet-name > remoting </ servlet-name >   
  9.     < url-pattern > /remoting/* </ url-pattern >   
  10. </ servlet-mapping >   


上面的設置是必須的啦通過 servlet 的代理可直接呼叫你的 service
記住 servlet-name 與你下面檔案命名有關當然你也可以自己設定你喜歡對應的文檔名
我喜歡用 default 的值所以我的
servlet-name 為 remoting, spring 到時會去抓取
WEB-INF/remoting-servlet.xml 讀取你設定的 bean

xml 代码
 
  1. < bean   id = "accountService"   class = "example.AccountServiceImpl" >   
  2.   < property   name = "accountDao"   ref = "accountDao" />   
  3. </ bean >   
  4.   
  5. < bean   name = "/AccountService"   class = "org.springframework.remoting.caucho.HessianServiceExporter" >   
  6.   < property   name = "service"   ref = "accountService" />   
  7.   < property   name = "serviceInterface"   value = "example.AccountService" />   
  8. </ bean >   



上面的 /AccountService 就是映射你要訪問的 url 當然你的 url 不是只 /AccountService 還要加上你 servlet-mapping 的 url-pattern /remoting/*
所以對應的 url 就是 /remoting/AccountService 這就是我們 flex 端要連上的位址
當然你也可以簡化你的
url-pattern 為 /* ,那 URL 就是只對應到 /AccountService
至於 flex 端要怎麼連上來呢 ?

xml 代码
 
  1. < mx:Application   
  2.   xmlns:mx = "http://www.adobe.com/2006/mxml"   xmlns:word = "*"   
  3.   implements = "mx.rpc.IResponder" >   
  4.   
  5.   < mx:Script >   
  6.     < [CDATA[  
  7.       import hessian.client.HessianService;  
  8.   
  9.       import mx.rpc.AsyncToken;  
  10.       import mx.rpc.events.ResultEvent;  
  11.   
  12.       private var service:HessianService  =  new  HessianService("remoting/AccountService");  
  13.   
  14.       private function getAccount():void  
  15.       {  
  16.         var token:AsyncToken  =  service .getAccount.send(va.text);  
  17.         token.addResponder(this);  
  18.       }  
  19.   
  20.       public function result(data:Object):void  
  21.       {  
  22.          var event : ResultEvent  =  data  as ResultEvent;  
  23.          uplogDataGrid.dataProvider  =  event .result as Array;  
  24.       }  
  25.   
  26.       public function fault(info:Object):void  
  27.       {  
  28.   
  29.       }  
  30.     ]]>   
  31.   </ mx:Script >   
  32.   < mx:TextInput   x = "100"   y = "90"   id = "va"   text = "" />   
  33.   < mx:Button   x = "260"   y = "90"   label = "Button"   click = "getAccount()"   />   
  34.   < mx:DataGrid   id = "aDataGrid"   x = "10"   y = "120"   width = "99%"   />   
  35. </ mx:Application >   


其實很簡單只要使用 HessianService 去作遠程呼叫即可
先創造一個
HessianService 實例此實例當然要指向你要呼叫的遠端 sevice 的 url new  HessianService("remoting/AccountService"); 
然後用其 getOperation("getAccount").send();
以上面為例為 service.getOperation("getAccount").send(va.text);
也可以寫成
service.getAccount.send(va.text);
getAccount 當然是你要呼叫遠端
AccountService 的 getAccount( String name );

以下是一些 java
Account.java 代码
  1. public class Account implements Serializable{
  2. private String name;
  3. public String getName();
  4. public void setName(String name) {
  5. this .name = name;
  6. }
  7. }

AccountService. java 代码
  1. public interface AccountService {
  2. public void insertAccount(Account account);
  3. public List getAccounts(String name);
  4. }
AccountServiceImpl. java 代码
  1. public class AccountServiceImpl implements AccountService {
  2. private AccountDao accountDao;
  3. private void setAccountDao(AccountDao) {
  4. this .accountDao = accountDao;
  5. }
  6. public void insertAccount(Account acc) {
  7. // do something...
  8. }
  9. public List getAccounts(String name) {
  10. return accountDao.getAccounts(name);
  11. }
  12. }

java 代码
  1. // the implementation doing nothing at the moment
  2. public class AccountDaoImpl implements AccountDao{
  3. public void insertAccount(Account acc) {
  4. // do something...
  5. }
  6. public List getAccounts(String name) {
  7. List list = new ArrayList();
  8. Account a = new Account();
  9. a.setName(name);
  10. list.add(a);
  11. return list;
  12. }
  13. }

分享到:
评论
1 楼 nathanlee 2009-08-03  
请问 你用的hessian-XXXX.jar和hessian-flex-XXXX.swc分别是什么版本的?
还有Spring.jar是什么版本?

相关推荐

    Flex + Hessian 留言本

    主要是将《Flex第一步》里使用FDS数据传输改为使用Hessian来实现,一些地方做了些简单的修改。 关于Flex使用Hessian进行远程调用,请参考: Flex + Hessian 学习笔记(一) ...

    Spring + Hessian + Spring MVC(包括Server和Client).zip

    1.名称:Spring + Hessian + Spring MVC(包括Server和Client).zip 2.来源:自己实现 3.备注:项目有两个系统,包括Server端和Client端,项目已经跑通,可以实现。 4.注意:client中pom.xml里最后的一个jar包,需要...

    Flex + Hessian 学习笔记(二)

    Flex和Hessian是一种常见的客户端-服务器通信技术组合,用于构建富互联网应用程序(RIA)。这篇学习笔记将深入探讨这两个技术,并通过实例代码解析它们的工作原理。 Flex是Adobe开发的一个开源框架,主要用于创建...

    SpringMVC + Mybatis + Hessian + Maven

    Spring + Mybatis + Hessian 亲自手写,附带测试用例,有问题随时提问。操作流程,自己导入sql,并修改数据库配置,配置Tomcat后启动服务,然后启动Tomcat, 最后测试用例。 测试用例步骤:步骤1.Run HessianTest. ...

    struts2+ibatis+spring+Hessian 整合项目

    struts2+ibatis+spring+Hessian 整合项目 web项目整合,服务端用hessian协议远程调用服务端的方法,hessian是用spring代理整合,struts2+ibatis+spring的整合项目,用作学习和开发基础平台构建很有用处,工程导入...

    spring+hessian+maven整合.zip

    spring+hessian+maven整合.zip

    OSGI+SpringDM+Hessian

    标题 "OSGI+SpringDM+Hessian" 涉及到三个重要的技术概念,它们分别是OSGI(Open Services Gateway Initiative)、SpringDM(Spring Dynamic Modules)和Hessian。这些技术在Java开发领域中都有其独特的应用和价值。...

    基于spring+hessian框架的webservice实例

    本实例重点探讨的是基于Spring框架和Hessian协议的Web Service实现,这是一种轻量级、高效的远程调用解决方案。 首先,我们要理解Spring框架。Spring是Java领域的一个核心框架,它提供了全面的编程和配置模型,用于...

    SpringMVC+ibatis+hessian基础框架

    压缩包里有两个 springMVC+Ibatis 的项目:HessianServer(服务器端),HessianClient(客户端),解压导入到MyEclipse 更改配置文件中的数据源,建表(和实体类对应的表),执行客户端中的BasicClient.java文件即可...

    spingMVC+mybatis+hessian+activeMQ+redis

    完美整合spingMVC+mybatis+hessian+activeMQ+redis,引入mybatis物理分页插件,模拟cookie登陆的工具类。

    CXF+RMI+HESSIAN

    【标题】:“CXF+RMI+HESSIAN”整合详解 在IT行业中,当我们谈论“CXF+RMI+HESSIAN”时,我们实际上是在讨论三种不同的技术,它们协同工作以实现分布式服务和远程调用。让我们逐一深入了解这三个概念。 首先,CXF...

    外部接口调用 使用spring4+hessian4实例

    标题 "外部接口调用 使用spring4+hessian4实例" 提供了一个关于如何使用Spring4框架与Hessian4库实现远程服务调用的具体实践。在这个场景中,Hessian4被用作一个轻量级的RPC(远程过程调用)协议,它允许应用程序在...

    spring+hessian搭建rpc体系

    如果用tomcat部署服务器,需要hessian的认证,请在E:\tomcat\apache-tomcat-7.0.69\conf\tomcat-users.xml下面配置信息:如下 &lt;role rolename="Hessian"/&gt; 账号" password="密码" roles="Hessian"/&gt;

    外部接口调用 使用spring4+hessian4实例(二)

    标题中的“外部接口调用 使用spring4+hessian4实例(二)”指的是使用Spring框架的版本4和Hessian库的版本4来实现远程服务调用的一种实践案例。在这个实例中,我们将探讨如何利用这两个组件来构建分布式系统中的服务...

Global site tag (gtag.js) - Google Analytics