`
backbase
  • 浏览: 91444 次
  • 性别: Icon_minigender_1
  • 来自: 虾汤水库
社区版块
存档分类
最新评论

could not initialize proxy - the owning Session was closed

阅读更多

 

问题:

could not initialize proxy - the owning Session was closed

 

参考如下的帖子:http://lz726.iteye.com/blog/116616

 

问题的描述:

在使用quartz定时扫描处理客户上行短信的方法中,调用自己定义的一个Service层中的一个load一个实体对象如Member

member = load(1)返回到该方法使用,

由于是采用load方法,所以返回的是真正实体对象的一个代理,而不是真正的实体对象。返回后,

由于调用自己定义的一个Service层后事务所对应的SessionFactory就已经关闭了,

然后再重新回到自己定义的方法中的时候,Service中SessionFactory已经关闭当然其对应的session也已经关闭,此时我们在去调用

我们load过来的对象的某个方法的时候如member.getName(),此时SessionFactory已经关闭,所以就会报

could not initialize proxy - the owning Session was closed 这个异常,

 

解决办法是什么呢?

在我们的applicationContext-quartz.xml文件中动态注入一个SessionFactory即可。参考如下的代码片段:

 

<beans>

    <!-- The Hibernate interceptor, which takes care of opening and closing hibernate session around method calls. -->

    <bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">

        <property name="sessionFactory">

            <ref bean="sessionFactory"/>

        </property>

    </bean>

 

        <bean id="quartzSchedulerFactory" lazy

.................

</beans>

 

同时定义一个代理

 

      <bean id="pointPaymentCouponIncomingSmsHandler" class="com.milesup.scheduler.handler.PointPaymentCouponIncomingSmsHandler">

                <property name="telecomService">

                        <ref bean="telecomService"/>

                </property>

             。。。。。。。。。。。。。。。。。

 

        </bean>

        <!-- A proxy with the hibernate interceptor wired in so it can access the persistent context -->

    <bean id="pointPaymentCouponIncomingSmsHandlerProxy" class="org.springframework.aop.framework.ProxyFactoryBean">

        <property name="target">

            <ref bean="pointPaymentCouponIncomingSmsHandler"/>

        </property>

        <property name="interceptorNames">

            <value>hibernateInterceptor</value>

        </property>

    </bean>

 

以上就是采用AOP技术,在运行时动态注入一个hibernateInterceptor即注入一个SessionFactory的方式解决这个问题。

 

具体参考附件

分享到:
评论

相关推荐

    Hibernate映射导致的几个异常

    Could not initialize proxy - the owning Session was closed 这是Hibernate懒加载机制中的常见异常,当尝试访问一个已被关闭的Session中的懒加载属性时触发。例如,如果Session在使用`setFetchMode(FetchMode....

    Hibernate延迟加载以及利用Spring

    Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed ``` - **日志记录**:为了更好地诊断问题,可以使用log4j等工具进行日志...

    Plsql 12连接Oracle时出现Could not initialize oci.dll解决方案 oracle 客户端

    在使用PL/SQL Developer 12连接Oracle数据库时,可能会遇到“Could not initialize oci.dll”这样的错误提示。这个错误通常表明系统无法找到或正确加载Oracle客户端的oci.dll库文件,这是Oracle Instant Client的一...

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    集成spring的hibernate懒加载

    3. **Hibernate的Hibernate.initialize()方法**:在需要使用懒加载属性的地方,手动调用此方法初始化代理对象。但这需要在业务代码中显式处理,不够优雅。 4. **使用Hibernate的Criteria API或HQL查询**:在查询时...

    oracle_plsql连服务端时 Initialization error could initialize错误处理方法

    解决:oracle_plsql连服务端时 Initialization error could initialize错误处理方法

    S2S3H3整合以及泛型Dao与Service封装

    并且对Dao和Service进行了封装,内含.jar包,并且解决了一对多双向关联的could not initialize proxy - no Session错误,同时解决了……invoked on net.sf.json.JSONException: There is a cycle in the hierarchy!...

    Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案

    在使用PL/SQL Developer这款强大的Oracle数据库管理工具时,有时可能会遇到“Could not initialize oci.dll”的错误提示,这通常是由于应用程序与Oracle客户端组件之间的兼容性问题导致的。本文将详细介绍如何解决这...

    java串口所需依赖dll文件合集

    监听COM口启动程序报错 Could not initialize class gnu.io.RXTXCommDriver异常 是因为需要在%JAVA_HOME%/jre/bin目录中添加rxtxParallel.dll、rxtxSerial.dll文件

    解决hbase client在windows环境下报NoClassDefFound问题

    解决hbase client在windows环境下报Could not initialize class org.fusesource.jansi.internal.Kernel32的问题,把jar包放入hbase client的lib包下,重新运行hbase.cmd shell即可

    instantclient_11_2.zip

    Could not initialize "D:\app\Happy\product\11.2.0\dbhome_1\bin\oci.dll" Make sure you have the 32 bits Oracle Client installed. OracleHomeKey: OracleHomeDir: D:\app\Happy\product\11.2.0\dbhome_1 ...

    jacob_1.14.3.rar

    内涵jacob_1.14.3-x64.dll;jacob_1.14.3-64.jdk(maven地址);解决方法:Could not initialize class com.jacob.com.ComThread

    Initialize-the-array.zip_array.initialize

    在编程领域,数组是一种基本的数据结构,用于存储同类型的元素集合。数组的初始化是编程过程中一个重要的步骤,尤其是在C++这种静态类型语言中。数组的初始化确保了在程序开始执行时,数组中的每个元素都有一个预设...

    ezmorph-1.0.6.jar

    缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig 使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig ...

    linux上实现视频截图

    在Linux操作系统上实现视频截图是一项常见的任务,尤其对于开发者来说,可能需要在处理多媒体内容时进行这样的操作。这里我们将深入探讨如何使用JavaCPP库在32位Linux环境下完成这一目标。 JavaCPP是一个强大的Java...

    derby.jar 。。

    java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40 导致的原因: 在azkaban的server和executor中缺少一个叫derby.jar的包

    mysql第一次安装成功后初始化密码操作步骤

    在这种情况下,运行`mysqld --initialize-insecure --user=mysql`,这会创建一个无密码的用户。 6. **登录并修改默认密码**: 打开新的命令提示符,输入`mysql -u root -p`,然后输入之前生成的随机密码。登录成功...

    WINSOCK坏了 winsockfix

    错误消息“unable to initialize windows sockets interface error code 0”表明Winsock初始化失败,错误代码0通常表示系统级的错误,可能是由于Winsock配置出错、相关动态链接库(DLL)文件损坏、网络驱动程序冲突...

    基于SSH框架的BBS论坛JavaEE项目源码

    7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 ...

Global site tag (gtag.js) - Google Analytics