`
feiqitian
  • 浏览: 18828 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GWT Gilead 与 Hibernate 整合时异常处理

阅读更多
gwt与Hibernate整合会遇到集合序列化的问题,由于Hibernate内部用了代理集合类,所以会抛出org.hibernate.collection.PersistenceList 不能被Gwt序列化的异常。
从网上找到谷歌的解决方案:http://code.google.com/intl/zh-CN/webtoolkit/articles/using_gwt_with_hibernate.html,使用Gilead来解决上述问题,但是却抛出如下异常:
java.lang.RuntimeException: java.lang.ClassCastException: java.util.HashMap cannot be cast to net.sf.gilead.pojo.gwt.IGwtSerializableParameter
继续在网上搜寻答案,没找到解决方案,绝望ing。。。。
后来又到Gilead官网去看看,似乎有了点眉目,于是将Google的代码
 private HibernateUtil gileadHibernateUtil = new HibernateUtil();

  /**
   * Constructor
   */
  public MusicStoreServiceImpl() {
    gileadHibernateUtil.setSessionFactory(com.google.musicstore.util.HibernateUtil
        .getSessionFactory());

    PersistentBeanManager persistentBeanManager = new PersistentBeanManager();
    persistentBeanManager.setPersistenceUtil(gileadHibernateUtil);
    persistentBeanManager.setProxyStore(new StatelessProxyStore());

    setBeanManager(persistentBeanManager);
    }

稍加改动成如下代码:
  private HibernateUtil gileadHibernateUtil = new HibernateUtil();

  /**
   * Constructor
   */
  public MusicStoreServiceImpl() {
    gileadHibernateUtil.setSessionFactory(com.google.musicstore.util.HibernateUtil
        .getSessionFactory());
//对于PersistentBeanManager,
//需要使用GwtConfigurationHelper.initGwtStatelessBeanManager(gileadHibernateUtil)
//这句话进行配置,而不是简单的new
    PersistentBeanManager persistentBeanManager = 
GwtConfigurationHelper.initGwtStatelessBeanManager(gileadHibernateUtil);
//        下面注释掉的这句话不需要
//        persistentBeanManager.setProxyStore(new StatelessProxyStore());
      setBeanManager(persistentBeanManager);  
}

在业务方法里这样写
    public User validateUser(User user) {//在业务方法里这样写
        Session session = gileadHibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();//这里必须加事务,不加Gilead会抛异常
        user = (User)session.createQuery("from User u where u.username=? and u.password=?")
                .setParameter(0, user.getUsername())
                .setParameter(1, user.getPassword())
                .uniqueResult();
        session.getTransaction().commit();
        return user;
    }

大功告成!再没有异常,成功将对象从Server端传到了Client端。
0
0
分享到:
评论
2 楼 xuhuajian885 2012-10-16  
我还没有成功,请问可以把整个代码发一份给我看一下吗?邮箱:xuhuajian885@163.com
1 楼 ldsjdy 2011-06-02  
java.lang.RuntimeException: java.lang.ClassCastException: java.util.HashMap cannot be cast to net.sf.gilead.pojo.gwt.IGwtSerializableParameter


好像是 entity继承的 LightEntity不对,换成 gilead提供了几种 LightEntity,和之前遇到的也是提示 ClassCastException,把 Entity 继承的 LightEntity换成 gwt.LightEntity就可以了,不知道和你的情况是不是一样的

相关推荐

    GWTEXT 与Hibernate整合实例

    将GWTEXT 和Hibernate整合,可以使得在处理大量文本数据时,能够更便捷地进行持久化操作,即把内存中的数据保存到数据库或从数据库加载到内存。 在这个整合实例中,我们首先需要确保已经安装了Eclipse 3.3集成开发...

    gwt+spring+hibernate

    Spring与GWT结合,可以在服务器端处理业务逻辑,通过GWT的Remote Procedure Call (RPC)机制与客户端进行通信。 3. **Hibernate ORM**: Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者用Java...

    GWT整合Hibernate的一个小实例

    标题中的" GWT整合Hibernate的一个小实例 "是指将Google Web Toolkit(一种用于创建富客户端Web应用的Java开发框架)与Hibernate(一个流行的对象关系映射(ORM)框架)结合使用,以便在GWT应用中执行数据库交互。...

    GWT与Spring整合经典文章

    在整合GWT与Spring时,通常会遇到以下关键步骤: 1. 创建GWT项目,并配置好所需的库和依赖。 2. 设计服务接口(Service Interface)在GWT客户端,实现该接口的服务端(Service Implementation)在服务器端。 3. 使用...

    Ext-Gwt(GWT)开发实例(整合Spring +Hibernate)

    标题 "Ext-Gwt(GWT)开发实例(整合Spring +Hibernate)" 涉及到的是一个实际项目开发的教程,其中结合了三个重要的技术框架:Google Web Toolkit (GWT),Spring 和 Hibernate。这个实例旨在展示如何在Web应用开发中...

    smartgwt + spring + hibernate

    总的来说,这个项目展示了如何使用SmartGWT构建富客户端界面,通过Spring实现松耦合的架构,并利用Hibernate处理数据持久化。对于初学者,这是一个很好的学习案例,可以帮助理解如何将这三个强大工具结合在一起,...

    hibernate+gwt2.4

    标题“hibernate+gwt2.4”指的是一个基于Google Web Toolkit (GWT) 2.4版本与Hibernate ORM框架的集成应用示例。这个项目可能是为了展示如何在GWT前端应用程序中有效地利用Hibernate来处理后端数据库操作。GWT是一种...

    gwt spring整合资源下载

    在整合GWT和Spring时,开发者通常会遇到以下关键知识点: - **GWT编译过程**:GWT代码会被编译成优化过的JavaScript,以便在浏览器中运行。 - **Spring MVC**:Spring的模型-视图-控制器架构用于处理服务端请求和...

    GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合

    GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合,也可以上新浪博客去看 http://blog.sina.com.cn/s/blog_687dfecb0100yrmf.html

    gwt和tomcat整合

    3. **GWT与Tomcat的整合**: - 集成GWT应用程序到Tomcat,首先需要确保Tomcat服务器已经正确安装并配置好。 - 开发者通常会使用GWT的开发模式,通过内置的HTTP服务器进行本地调试。一旦准备好,需要将编译后的GWT...

    搭建简单的EXT-GWT(GXT)的开发环境(三)gxt结合spring和hibernate进行数据操作

    本篇文章将聚焦于如何在EXT-GWT中整合Spring框架和Hibernate ORM,以实现高效的数据操作。 首先,让我们了解EXT-GWT(GXT)的核心概念。EXT-GWT是GWT的一个扩展,它提供了大量的UI组件,如表格、树、表单等,以及...

    smartgwt+mybatis+spring的整合

    SmartGwt、Mybatis与Spring的整合是企业级Java应用开发中的常见技术栈组合,这三种框架各有其专长,可以高效地构建出强大的后台系统。SmartGwt是一款基于GWT(Google Web Toolkit)的开源UI组件库,提供丰富的用户...

    smartGwt、spring、Mybatis整合

    本项目"smartGwt、spring、Mybatis整合"就是一个很好的例子,它将三种流行的技术——SmartGWT、Spring和Mybatis融合在一起,创建了一个包含登录功能和分页查询功能的应用。以下是关于这三个技术及其整合方式的详细...

    struts2与gwt的整合

    整合时要考虑安全问题,例如防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。Struts2提供了丰富的拦截器来增强安全性,而GWT也有自己的安全机制,如URL混淆(HistoryToken)防止恶意篡改。 **5. 性能优化** - **...

    GWT开发者手册 GWT开发者手册

    - **异常处理**:try-catch-finally和自定义异常在GWT中均可用,但Throwable.getStackTrace()在WEB模式下不受支持。 - **断言**:GWT编译器理解assert语句,但在JAVASCRIPT中不会生成相应代码。 - **多线程与同步*...

    GWT Demo,GWT学习时的一些小例子

    例如,一个示例可能展示了如何创建一个按钮控件,当用户点击按钮时,通过GWT的RPC机制向服务器发送请求,获取数据并更新页面上的显示。另一个示例可能涉及使用GWT的Composite类来组合多个Widget,创建自定义的复杂...

    gwt 练习 gwt学习

    5. **事件处理**:GWT中的事件处理机制允许用户与界面交互。你可以通过添加事件监听器来响应用户的点击、键盘输入等操作。 6. **RPC通信**:GWT的Remote Procedure Call (RPC)机制使得客户端和服务器之间能进行数据...

    GWT开发者手册 GWT

    - **异常处理**:支持`try-catch-finally`结构,但在Web模式下`Throwable.getStackTrace()`不可用。 - **断言**:虽然支持断言语法,但在编译过程中不会生成相应的JavaScript代码。 - **多线程与同步**:由于...

    gwt+spring

    8. **错误处理**:当出现异常时,Spring可以捕获并封装成适当的HTTP响应,而GWT客户端可以解析这个响应并显示错误信息。 9. **版本更新**:考虑到描述中提到的资料更新滞后,开发者应关注最新的GWT和Spring版本,...

Global site tag (gtag.js) - Google Analytics