`

Tapestry与Spring和hibernate的集成

阅读更多
Tapestry4.1与Spring的集成只能通过Hivemind,幸好在Hivemind中已经预留了这个接口,具体的步骤如下:
首先,实现两个类,这两个类是用于定位BeanFactory对象的。
MyWebApplicationContextUtils类:
package com.gwssi.bjais.kernal.spring;
import org.apache.tapestry.web.WebContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* @author root
*
*/
public class MyWebApplicationContextUtils extends WebApplicationContextUtils{
public static WebApplicationContext getWebApplicationContext(WebContext wc)
{
Object obj=wc.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
if(obj==null)
{
return null;
}
if(obj instanceof RuntimeException)
{
throw (RuntimeException)obj;
}
if(!(obj instanceof WebApplicationContext))
{
throw new IllegalStateException("Root context attribute is not of type WebApplicationContext:"+obj);
}
return (WebApplicationContext)obj;
}
public static WebApplicationContext getRequiredWebApplicationContext(WebContext wc)
{
WebApplicationContext wac=getWebApplicationContext(wc);
if(wac==null)
{
throw new IllegalStateException("No WebApplicationContext found:no ContextLoaderListener registered?");
}
return wac;
}
}
MySpringBeanFactoryHolderImpl类:
package com.gwssi.bjais.kernal.spring;
import org.apache.hivemind.events.RegistryShutdownListener;
import org.apache.hivemind.lib.impl.SpringBeanFactoryHolderImpl;
import org.apache.tapestry.web.WebContext;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ConfigurableApplicationContext;
/**
* @author root
*
*/
public class MySpringBeanFactoryHolderImpl extends SpringBeanFactoryHolderImpl implements RegistryShutdownListener{
private WebContext context;
public BeanFactory getBeanFactory()
{
if(super.getBeanFactory()==null)
{
super.setBeanFactory(MyWebApplicationContextUtils.getWebApplicationContext(this.getContext()));
}
return super.getBeanFactory();
}
public WebContext getContext()
{
return context;
}
public void setContext(WebContext context)
{
this.context=context;
}
public void registryDidShutdown()
{
((ConfigurableApplicationContext)super.getBeanFactory()).close();
}

}

第二步,在hivemind.xml配置文件中配置“hivemind.lib.DefaultSpringBeanFactoryHolder”的接口实现:
<module id="MyTapestry" version="1.0.0" package="com.gwssi.bjais.kernal.insideService">
<implementation service-id="hivemind.lib.DefaultSpringBeanFactoryHolder">
  <invoke-factory>
  <construct autowire-services="false" class="com.gwssi.bjais.kernal.spring.MySpringBeanFactoryHolderImpl">
  <event-listener service-id="hivemind.ShutdownCoordinator"/>
  <set-object property="context" value="service:tapestry.globals.WebContext"/>
  </construct>
  </invoke-factory>
  </implementation>
</module>

第三步,在page规范文件中注入spring bean:
<inject property="loginService" object="spring:loginService"/>

Tapestry与hibernate的集成就通过Spring和hibernate的集成方式就行了。
分享到:
评论

相关推荐

    基于Tapestry+Spring+Hibernate框架的Web应用

    Tapestry、Spring和Hibernate作为三个广受好评的开源框架,各自在Web开发的不同层面提供了卓越的支持。本文将详细介绍这三个框架的功能特性,并探讨它们如何整合构建高效、灵活的Web应用。 #### Tapestry框架:构建...

    tapestry5.3.3+spring+hibernate整合源码

    整合Tapestry、Spring和Hibernate,开发者可以利用它们各自的优点:Tapestry的组件化开发、Spring的依赖管理和事务控制,以及Hibernate的ORM能力。这样的组合可以构建出结构清晰、易于维护且具有高度可扩展性的Web...

    tapestry 集成 spring

    总结,Tapestry 与 Spring 的集成允许开发者利用两者的优点,构建出结构清晰、松耦合的 Web 应用。通过将业务逻辑和视图组件分离,Tapestry 提供了更好的用户体验和组件重用,而 Spring 则提供了强大的依赖管理和...

    Tapestry5 + spring + hibernate 开发指南

    本教程分为两大部分:首先构建一个独立的 Spring-Hibernate 应用程序,然后将其与 Tapestry 集成。 #### II. 预备知识 ##### II.A 安装环境 - **Java**:确保安装了 Java 开发工具包 (JDK)。 - **Apache Maven** ...

    Tapestry+Hibernate+spring

    Tapestry、Hibernate 和 Spring 是三个在 Java Web 开发中非常关键的开源框架,它们各自在应用程序的不同层面上发挥着重要作用。Tapestry 是一个基于组件的 Web 应用框架,提供了强大的动态页面渲染和丰富的用户体验...

    Tapestry5, Spring and Hibernate 真正英文版.rar

    这种集成允许开发者利用Tapestry5的易用性和组件化,Spring的灵活性和管理能力,以及Hibernate的数据库操作便利性,构建出高效且易于维护的Web应用程序。 在"Tapstry Wiki.mht"文件中,你可以找到详细的步骤和指导...

    TSH.rar_Tapestry spring_tapestry_tapestry hiberna_tapestry workb

    Tapestry通过Spring与Hibernate进行交互,利用Spring的数据源和SessionFactory配置,将持久层与业务层解耦。Tapestry的组件可以直接绑定到由Hibernate管理的实体对象,实现数据的透明访问。这种集成方式简化了数据...

    tapstery5_spring_hibernateDEMO

    【Tapstry5_Spring_HibernateDEMO】是一个用于展示如何集成和使用Apache Tapestry、Spring框架和Hibernate ORM的示例项目。这个DEMO旨在帮助开发者理解这三个强大的Java技术如何协同工作,以构建高效、模块化的Web...

    Groovy+Tapestry5+Spring2.5+Hibernate3.2实现CRUD

    这个项目结合了Groovy、Tapestry 5、Spring 2.5和Hibernate 3.2,旨在展示如何在实际开发中进行数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。下面将分别介绍这四个技术以及它们在项目...

    tapestry-bin-5.1.0.5

    2. **tapestry-hibernate-LICENSE.txt**:表示Tapestry与Hibernate集成的相关许可,Hibernate是一个流行的对象关系映射(ORM)框架,用于简化数据库操作。 3. **tapestry-hibernate-core-LICENSE.txt**:可能是针对...

    优化大使tapestry-bin-5.0.18.zip

    2. **Tapestry Hibernate**:这是Tapestry与Hibernate集成的模块,Hibernate是一个流行的Java对象关系映射(ORM)框架,使得开发者可以用Java对象来操作数据库。它的LICENSE和NOTICE文件会涵盖与Hibernate相关的授权...

    Tapestry资料集合

    "基于Tapestry_Spring_Hibernate框架的Web应用.pdf"可能会讲解如何将Tapestry与Spring和Hibernate这两大流行框架集成,实现数据持久化和依赖注入。通过这样的集成,开发者可以构建更复杂、更灵活的web应用,同时享受...

    tapestry-src-5.1.0.5.zip

    包含: tapestry 的源代码, tapestry集成spring2.0 tapestry快速启动 tapestry upload tapestry hibernate tapestry annotations

    tapestry-bin-5.0.14.zip

    - “tapestry-hibernate”是Tapestry与Hibernate集成的模块,使开发者能够方便地在Tapestry应用中使用Hibernate进行对象关系映射(ORM)操作。 - “tapestry-ioc”是Tapestry的依赖注入(IOC)容器,它简化了服务和...

    Maven + Tapestry5.3.8 + Spring4.0.5 + Oracle10g

    这是Tapestry5.3.8 版本的一个大Demo,集合Spring4.0, 采用Maven 项目管理工具,没有集合Hibernate。 之所以说是个大Demo,是因为这项目中包含的内容并不少,包含: 1)解决了Tapestry5.3.8中文Bug问题 2)Tapestry...

    tapestry5.2.6 jar包

    6. **Spring集成**:通过tapestry-spring模块,Tapestry可以与Spring框架协同工作,利用Spring的IoC容器管理服务和bean。 7. **测试支持**:Tapestry-test模块提供了专门的测试工具,使得开发者能够对组件进行单元...

    tapestry官方中文文档

    Tapestry可以与其他Java库和框架无缝集成,如Spring、Hibernate等,增强了其在大型项目中的适用性。 10. **学习资源**: 虽然Tapestry 4的中文文档较少,但提供的《Tapestry4 用户指南》和《Tapestry4 快速启动》...

    Tapestry5.0.7

    7. **集成其他框架**:Tapestry 可以很好地与其他Java框架如Hibernate(用于ORM)、Spring(用于应用管理和依赖注入)集成,增强了其功能和适应性。 **文件结构与作用** - **LICENSE-2.0.txt**:包含Apache 2.0...

    Tapestry开发指南

    Tapestry可以与其他Java技术,如Spring、Hibernate等无缝集成,扩展其功能。这使得开发者可以充分利用现有的Java生态系统。 总之,Tapestry通过其组件化、类型安全和事件驱动的特性,为Java Web开发提供了一种高效...

Global site tag (gtag.js) - Google Analytics