- 浏览: 149057 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
415421979:
我也遇到了这个问题 求解啊
JBoss/Tomcat 安装路径带空格时 JNDI 无法初始化的BUG -
ivonxiao:
谢谢楼主的分享
异常管理系统 -
ivonxiao:
谢谢楼主的分享~~
Java对象的强、软、弱和虚引用
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的集成方式就行了。
首先,实现两个类,这两个类是用于定位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页面规范文件
2008-02-21 13:46 1084问题的提出: 默认Tapestry的页面模板文件(.html ... -
page specification寻找路径
2008-02-20 18:34 1271Tapestry4的机制是先找page模板,然后根据page模 ... -
页面跳转类组件
2008-02-20 14:46 1689ActionLink组件 页面响应时,创建了一个链接。如果触 ... -
Page对象池参数设置
2008-02-19 15:17 1223The internal pooling of Tapestr ... -
Tapestry简单的ajax实现
2008-02-19 15:15 2111Tapestry4.1.x中内置dojo实现ajax功能,不用 ... -
Tapestry页面属性持久化策略
2008-02-19 14:12 1124tapestry.persist.xml <con ... -
两个特殊的组件:content和remove
2008-02-19 11:27 997在tapestry中,有两个特殊的组件:remove和cont ... -
引用多个样式表的方法
2008-02-19 11:10 767<html jwcid="@Shell&quo ... -
转换器
2008-02-15 13:33 920表单中的元素的值都是字符串,在tapestry中,需要将这些值 ... -
基本组件的使用
2008-02-15 11:56 8801.combo box组件 .page文件: <comp ... -
页面属性
2008-02-15 09:50 905当在页面类中定义了抽象的getter方法时,在页面规范文件中( ... -
默认前缀
2008-02-14 18:31 970在模板文件中(.html),默认的前缀是literal,例如: ... -
解决tapestry中由于使用对象池而造成信息泄露的问题
2008-02-14 17:36 1227在tapestry中,由于每个页面都需要使用一个页面对象,为了 ... -
基础设施对象Infrastructure
2008-02-14 17:13 8531.获取应用程序的虚拟目录名称 String contex ... -
页面跳转汇总
2008-02-14 16:43 10441.表单提交后的页面跳转 表单提交后的页面跳转有三种方法: ... -
page规范文件的使用
2008-01-09 15:19 1051一、asset的使用 资源在类路径下: <asset n ... -
国际化与本地化
2008-01-08 14:09 877页面使用: <span jwcid="@Ins ... -
编码问题
2008-01-08 14:06 820在应用程序配置文件中配置 <meta key=" ... -
页面校验
2008-01-08 14:05 1325前台校验: 采用Tapestry提供的核心验证,页面调用的方法 ... -
URL redirect配置
2008-01-08 14:04 1860web.xml中配置: <filter> < ...
相关推荐
Tapestry、Spring和Hibernate作为三个广受好评的开源框架,各自在Web开发的不同层面提供了卓越的支持。本文将详细介绍这三个框架的功能特性,并探讨它们如何整合构建高效、灵活的Web应用。 #### Tapestry框架:构建...
整合Tapestry、Spring和Hibernate,开发者可以利用它们各自的优点:Tapestry的组件化开发、Spring的依赖管理和事务控制,以及Hibernate的ORM能力。这样的组合可以构建出结构清晰、易于维护且具有高度可扩展性的Web...
总结,Tapestry 与 Spring 的集成允许开发者利用两者的优点,构建出结构清晰、松耦合的 Web 应用。通过将业务逻辑和视图组件分离,Tapestry 提供了更好的用户体验和组件重用,而 Spring 则提供了强大的依赖管理和...
本教程分为两大部分:首先构建一个独立的 Spring-Hibernate 应用程序,然后将其与 Tapestry 集成。 #### II. 预备知识 ##### II.A 安装环境 - **Java**:确保安装了 Java 开发工具包 (JDK)。 - **Apache Maven** ...
Tapestry、Hibernate 和 Spring 是三个在 Java Web 开发中非常关键的开源框架,它们各自在应用程序的不同层面上发挥着重要作用。Tapestry 是一个基于组件的 Web 应用框架,提供了强大的动态页面渲染和丰富的用户体验...
这种集成允许开发者利用Tapestry5的易用性和组件化,Spring的灵活性和管理能力,以及Hibernate的数据库操作便利性,构建出高效且易于维护的Web应用程序。 在"Tapstry Wiki.mht"文件中,你可以找到详细的步骤和指导...
Tapestry通过Spring与Hibernate进行交互,利用Spring的数据源和SessionFactory配置,将持久层与业务层解耦。Tapestry的组件可以直接绑定到由Hibernate管理的实体对象,实现数据的透明访问。这种集成方式简化了数据...
【Tapstry5_Spring_HibernateDEMO】是一个用于展示如何集成和使用Apache Tapestry、Spring框架和Hibernate ORM的示例项目。这个DEMO旨在帮助开发者理解这三个强大的Java技术如何协同工作,以构建高效、模块化的Web...
这个项目结合了Groovy、Tapestry 5、Spring 2.5和Hibernate 3.2,旨在展示如何在实际开发中进行数据的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。下面将分别介绍这四个技术以及它们在项目...
2. **tapestry-hibernate-LICENSE.txt**:表示Tapestry与Hibernate集成的相关许可,Hibernate是一个流行的对象关系映射(ORM)框架,用于简化数据库操作。 3. **tapestry-hibernate-core-LICENSE.txt**:可能是针对...
2. **Tapestry Hibernate**:这是Tapestry与Hibernate集成的模块,Hibernate是一个流行的Java对象关系映射(ORM)框架,使得开发者可以用Java对象来操作数据库。它的LICENSE和NOTICE文件会涵盖与Hibernate相关的授权...
"基于Tapestry_Spring_Hibernate框架的Web应用.pdf"可能会讲解如何将Tapestry与Spring和Hibernate这两大流行框架集成,实现数据持久化和依赖注入。通过这样的集成,开发者可以构建更复杂、更灵活的web应用,同时享受...
包含: tapestry 的源代码, tapestry集成spring2.0 tapestry快速启动 tapestry upload tapestry hibernate tapestry annotations
- “tapestry-hibernate”是Tapestry与Hibernate集成的模块,使开发者能够方便地在Tapestry应用中使用Hibernate进行对象关系映射(ORM)操作。 - “tapestry-ioc”是Tapestry的依赖注入(IOC)容器,它简化了服务和...
这是Tapestry5.3.8 版本的一个大Demo,集合Spring4.0, 采用Maven 项目管理工具,没有集合Hibernate。 之所以说是个大Demo,是因为这项目中包含的内容并不少,包含: 1)解决了Tapestry5.3.8中文Bug问题 2)Tapestry...
6. **Spring集成**:通过tapestry-spring模块,Tapestry可以与Spring框架协同工作,利用Spring的IoC容器管理服务和bean。 7. **测试支持**:Tapestry-test模块提供了专门的测试工具,使得开发者能够对组件进行单元...
Tapestry可以与其他Java库和框架无缝集成,如Spring、Hibernate等,增强了其在大型项目中的适用性。 10. **学习资源**: 虽然Tapestry 4的中文文档较少,但提供的《Tapestry4 用户指南》和《Tapestry4 快速启动》...
7. **集成其他框架**:Tapestry 可以很好地与其他Java框架如Hibernate(用于ORM)、Spring(用于应用管理和依赖注入)集成,增强了其功能和适应性。 **文件结构与作用** - **LICENSE-2.0.txt**:包含Apache 2.0...
Tapestry可以与其他Java技术,如Spring、Hibernate等无缝集成,扩展其功能。这使得开发者可以充分利用现有的Java生态系统。 总之,Tapestry通过其组件化、类型安全和事件驱动的特性,为Java Web开发提供了一种高效...