`

openview失效

    博客分类:
  • java
阅读更多
我原来用struts/spring/hibernate的时候同样使用OpenSessionInView,但是似乎没有robbin所说的问题啊。而且我在使用的时候,是ContextLoaderListener和ContextLoaderPlugIn一起用的。整个配置如下: 1.首先是web.xml Java代码 1.<filter> 2. <filter-name>OpenSessionInViewFilter</filter-name> 3. <filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class> 4. </filter> 5. 6. <filter-mapping> 7. <filter-name>OpenSessionInViewFilter</filter-name> 8. <url-pattern>/*</url-pattern> 9. </filter-mapping> 10. 11. <listener> 12. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 13.</listener> 14. 15...... <filter><filter-name>OpenSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>OpenSessionInViewFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> ...... 2. 然后是struts-config.xml: Java代码 1.<plug-in classname="org.springframework.web.struts.ContextLoaderPlugIn"> 2. <set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml"></set-property> 5.</plug-in><plug-in classname="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml"></set-property></plug-in> 其余部分省略。 在上述配置下,使用OpenSessionInView似乎没有问题。 不知道robbin所说的ContextLoaderListener和ContextLoaderPlugIn不应该同时使用是不是做得是如下的配置:(struts-config.xml) Java代码 1.<plug-in> 3.<set-property property="contextConfigLocation"></set-property> 6.</plug-in><plug-in classname="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml, /WEB-INF/action-servlet.xml"></set-property></plug-in> 我尝试了一下,用这种配置时,OpenSessionInView的确失效了。 我猜想,原因大概是这样:struts的这个plugIn,可能只是为了整合一个action-servlet.xml,将action-servlet.xml中的定义当作Spring的bean来使用,因此,在保存时,只要有action-servlet.xml的配置,就被保存到robbin所提到的那个attrName中,而不是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE中,所以,OpenSessionInView是取不到这个配置的。 那么这个配置什么时候被取到呢?直觉告诉我,可能是和Action的Proxy有关。于是,查看了org.springframework.web.struts.DelegatingActionProxy的源码,果然: Java代码 1./** 2. * Return the delegate Action for the given mapping. 3. *

The default implementation determines a bean name from the 4. * given ActionMapping and looks up the corresponding bean in the 5. * WebApplicationContext. 6. * @param mapping the Struts ActionMapping 7. * @return the delegate Action 8. * @throws BeansException if thrown by WebApplicationContext methods 9. * @see #determineActionBeanName 10. */ 11. protected Action getDelegateAction(ActionMapping mapping); throws BeansException { 12. WebApplicationContext wac = getWebApplicationContext(getServlet();, mapping.getModuleConfig(););; 13. String beanName = determineActionBeanName(mapping);; 14. return (Action); wac.getBean(beanName, Action.class);; 15. } 16. 17. /** 18. * Fetch ContextLoaderPlugIn's WebApplicationContext from the 19. * ServletContext, containing the Struts Action beans to delegate to. 20. * @param actionServlet the associated ActionServlet 21. * @param moduleConfig the associated ModuleConfig 22. * @return the WebApplicationContext 23. * @throws IllegalStateException if no WebApplicationContext could be found 24. * @see DelegatingActionUtils#getRequiredWebApplicationContext 25. * @see ContextLoaderPlugIn#SERVLET_CONTEXT_PREFIX 26. */ 27. protected WebApplicationContext getWebApplicationContext( 28. ActionServlet actionServlet, ModuleConfig moduleConfig); throws IllegalStateException { 29. return DelegatingActionUtils.getRequiredWebApplicationContext(actionServlet, moduleConfig);; 30. } /** * Return the delegate Action for the given mapping. *

The default implementation determines a bean name from the * given ActionMapping and looks up the corresponding bean in the * WebApplicationContext. * @param mapping the Struts ActionMapping * @return the delegate Action * @throws BeansException if thrown by WebApplicationContext methods * @see #determineActionBeanName */ protected Action getDelegateAction(ActionMapping mapping); throws BeansException { WebApplicationContext wac = getWebApplicationContext(getServlet();, mapping.getModuleConfig(););; String beanName = determineActionBeanName(mapping);; return (Action); wac.getBean(beanName, Action.class);; } /** * Fetch ContextLoaderPlugIn's WebApplicationContext from the * ServletContext, containing the Struts Action beans to delegate to. * @param actionServlet the associated ActionServlet * @param moduleConfig the associated ModuleConfig * @return the WebApplicationContext * @throws IllegalStateException if no WebApplicationContext could be found * @see DelegatingActionUtils#getRequiredWebApplicationContext * @see ContextLoaderPlugIn#SERVLET_CONTEXT_PREFIX */ protected WebApplicationContext getWebApplicationContext( ActionServlet actionServlet, ModuleConfig moduleConfig); throws IllegalStateException { return DelegatingActionUtils.getRequiredWebApplicationContext(actionServlet, moduleConfig);; } 仔细看其中的取wac的代码,它并不是从WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE取的wac。 由此,我相信,除了robbin讲的修改源码以外,同时使用ContextLoaderListener和ContextLoaderPlugIn,但是不要在ContextLoaderPlugIn里面加入applicationContext.xml,只要加入你的action-servlet.xml,我相信,同样也可以非常流畅的使用OpenSessionInView

分享到:
评论

相关推荐

    HP OpenView

    HP OpenView 网管系统详细说明 HP OpenView 是一款功能强大且灵活的网管系统,能够满足企业对网络管理的需求。下面是 HP OpenView 的主要特点和功能: 网管工具支持领域广泛 HP OpenView 网管工具可以涉及到系统...

    HP OpenView 的安装

    ### HP OpenView 的安装知识点详解 #### 一、安装概述 HP OpenView Network Node Manager (NNM) 是一款用于监控和管理企业网络的强大工具。它能够帮助IT管理人员实时监测网络设备的状态,及时发现并解决问题,确保...

    HP openview 日常维护手册

    《HP OpenView 日常维护手册》是一份详细指导IT管理员如何进行HP OpenView系统日常运维的重要文档。HP OpenView是一款广泛应用于企业级网络管理和监控的软件,它提供了全面的IT基础设施管理解决方案,包括网络设备、...

    hp openview family

    HP OpenView Family是一系列全面的IT管理解决方案,专为企业在网络管理和服务交付方面面临的挑战而设计。这个家族包括多个组件,旨在帮助企业实现IT部门从内部支持向提供高质量、高可用性、安全的电子服务的转型。 ...

    OpenView 产品功能介绍

    OpenView 是惠普开发的一套全面的网络管理和监控软件,旨在帮助信息部门负责人全面了解和控制网络运行状态。OpenView 包含多个组件,其中两个关键的组件是 NNM(Network Node Manager)和 OVOP(OpenView Operations...

    HP OpenView身份管理解决方案白皮书

    HP OpenView作为惠普公司推出的一系列网络管理和系统管理产品,为用户提供了身份管理解决方案,其中包括客户管理、访问控制管理、隐私管理和联邦管理等方面的产品。 客户管理主要是指企业如何管理和维护与客户相关...

    hp openview中文资料教程

    集成 HP OpenView 报告器 *NNM_OVReporter_Integration.pdf 使用 HP OpenView 网络节点管理器管理网络 *Managing_Your_Network.pdf 安装快速入门 *Installation_Guide.pdf 创建和使用注册文件 *Creating_and_...

    HP openview 网络管理

    HP OpenView 网络管理(NNM)是一款先进的网络监控和管理软件,由惠普公司开发,旨在帮助网络管理员实现高效、集中的网络管理。本文将深入解析HP OpenView NNM的核心概念、功能以及使用策略,以促进对其全面理解和...

    HP openview 产品套件介绍

    ### HP OpenView 产品套件介绍 #### 一、HP OpenView 概述 HP OpenView 是一套由惠普公司研发的企业级IT管理解决方案。它旨在帮助组织更好地管理和监控其IT环境,确保业务的连续性并提高整体效率。OpenView 的核心...

    HP Openview Data Protector 维护与使用手册

    《HP Openview Data Protector》是惠普公司推出的一款企业级数据保护软件,它为企业提供了全面、灵活且高效的数据备份和恢复解决方案。本手册主要针对该软件的维护与使用进行详细阐述,旨在帮助管理员更好地管理和...

    hp openview中文资料教程下载

    hp openview中文资料教程下载hp openview中文资料教程下载hp openview中文资料教程下载

    HP-OPENVIEW NNM管理员手册

    ### HP-OPENVIEW NNM管理员手册关键知识点解析 #### 一、概述 《HP-OPENVIEW NNM管理员手册》是一部详尽介绍了网络性能管理的重要工具——NNM(Network Node Manager)的指南。它不仅包含了基本的安装流程、简单的...

    HP OpenView助平安保险驶入信息化快车道

    【HP OpenView】是惠普公司推出的一款强大的IT管理软件,它在平安保险的信息化进程中起到了关键作用。HP OpenView的主要特点是能够集中管理和监控异构的分布式环境,这对于像平安保险这样的大型企业至关重要,因为...

    HP_OpenView_NNM实现网络管理参考.pdf

    HP_OpenView_NNM实现网络管理参考 HP OpenView NNM是HP公司开发的一款功能强大、技术先进的网络管理软件,广泛应用于全球网管领域。该软件能够对局域网或广域网中的每一个环节中的关键网络设备及主机部件进行实时...

    HP Openview网管建设方案建议书

    【HP Openview 网管建设方案建议书】 在当今高度依赖信息技术的环境中,网络管理是确保企业稳定运行的关键因素。HP OpenView 是一个全面的网络管理系统,旨在满足客户对于高效、可靠且易于扩展的网络管理的需求。本...

    Openview NNM管理

    ### Openview NNM管理知识点详解 #### 一、Openview NNM管理概述 - **HP Openview NNM**(Network Node Manager)是一款由Hewlett-Packard开发的强大网络管理工具,用于集中监控和管理企业级网络环境。它通过提供...

Global site tag (gtag.js) - Google Analytics