Java FUSE hibernate应用程序未找到当前线程异常的会话

Java FUSE hibernate应用程序未找到当前线程异常的会话,java,spring,hibernate,jbossfuse,hibernateexception,Java,Spring,Hibernate,Jbossfuse,Hibernateexception,我正在FUSE服务器上进行Hibernate的简单演示,我在这里找到了这个示例代码示例。 我尝试在FUSE 6.3中使用Hibernate 4集成运行此代码,我能够安装所有必需的依赖项,但当我尝试执行数据库操作时,我遇到以下错误 org.hibernate.HibernateException: No Session found for current thread at org.springframework.orm.hibernate4.SpringSessionContex

我正在FUSE服务器上进行Hibernate的简单演示,我在这里找到了这个示例代码示例。 我尝试在FUSE 6.3中使用Hibernate 4集成运行此代码,我能够安装所有必需的依赖项,但当我尝试执行数据库操作时,我遇到以下错误

org.hibernate.HibernateException: No Session found for current thread
at         org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:97)
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:997)
at com.vcc.poc.dao.impl.StudentDaoImpl.getStudent(StudentDaoImpl.java:67)
at sun.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_111]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:56)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:39)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at com.sun.proxy.$Proxy93.getStudent(Unknown Source)
at com.vcc.poc.service.impl.StudentServiceImpl.getStudent(StudentServiceImpl.java:15)
at sun.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_111]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at com.sun.proxy.$Proxy94.getStudent(Unknown Source)
at sun.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_111]
at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_111]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:56)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:39)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)[org.springframework.osgi:spring-osgi-core:1.2.1]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:132)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:120)[org.apache.servicemix.bundles:org.apache.servicemix.bundles.spring-aop:3.2.16.RELEASE_1]
这是我的studentmpl.java文件内容

    package com.vcc.poc.dao.impl;

    import java.util.List;

    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.hibernate.HibernateException;
    import org.hibernate.Query;
    import org.hibernate.SessionFactory;
    import org.hibernate.internal.SessionImpl;

    import com.vcc.poc.dao.StudentDao;
    import com.vcc.poc.model.Student;

    public class StudentDaoImpl implements StudentDao{

    private static final transient Log LOG = LogFactory.getLog(StudentDaoImpl.class);

        /** The session factory. */
        private SessionFactory sessionFactory;

        /** The q. */
        private Query q = null;

        /** The Constant findStudentByReference. */
        private final static String findStudentByReference =
            "select i from Student as i where i.studentRef = :ref";

        /** The Constant findStudent. */
        private final static String findStudent =
            "select i from Student as i";

        /**
         * Sets the session factory.
         * 
         * @param sessionFactory the new session factory
         */
        public void setSessionFactory( SessionFactory sessionFactory )
        {
            this.sessionFactory = sessionFactory;
        }

        /*
         * (non-Javadoc)
         * @see org.apache.camel.example.reportincident.dao.IncidentDAO#findIncident()
         */
        public List<Student>  findStudent()
            throws HibernateException
        {

            // Prepare query
            q = this.sessionFactory.getCurrentSession().createQuery( findStudent );

            // Retrieve the Incidents from database
            List<Student> list = q.list();

            return list;

        }

        /*
         * (non-Javadoc)
         * @see org.apache.camel.example.reportincident.dao.IncidentDAO#getIncident(long)
         */
        public Student getStudent(int id) 
        {
            return (Student) this.sessionFactory.getCurrentSession().get( Student.class, id );
        }


        /*
         * (non-Javadoc)
         * @see org.apache.camel.example.reportincident.dao.IncidentDAO#saveIncident(org.apache.camel.example.reportincident.model.Incident)
         */
        public void saveStudent(Student Student)
        {
            SessionImpl session = (SessionImpl) this.sessionFactory.getCurrentSession();
            this.sessionFactory.getCurrentSession().saveOrUpdate( Student );
        }


    }
这是META-INF/spring文件夹中的data-source-beans.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!--
        Licensed to the Apache Software Foundation (ASF) under one or more
        contributor license agreements.  See the NOTICE file distributed with
        this work for additional information regarding copyright ownership.
        The ASF licenses this file to You under the Apache License, Version 2.0
        (the "License"); you may not use this file except in compliance with
        the License.  You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

        Unless required by applicable law or agreed to in writing, software
        distributed under the License is distributed on an "AS IS" BASIS,
        WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        See the License for the specific language governing permissions and
        limitations under the License.
    -->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:osgi="http://www.springframework.org/schema/osgi"
        xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
        xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/osgi
           http://www.springframework.org/schema/osgi/spring-osgi.xsd
           http://www.springframework.org/schema/osgi-compendium
           http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd">

        <context:annotation-config />
        <context:property-placeholder properties-ref="preProps" />  

        <!--  DB connection and persistence layer -->
        <!--  DataSource Definition  -->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="${driverClassName}" />
            <property name="url" value="${url}" />
            <property name="username" value="${username}" />
            <property name="password" value="${password}" />
        </bean>


        <!--  Spring Data Access Exception Translator Definition    -->
        <bean id="jdbcExceptionTranslator" class="org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator">
            <property name="dataSource">
                <ref bean="dataSource" />
            </property>
        </bean>

        <!--  Hibernate SessionFactory Definition -->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

            <property name="mappingLocations">
                <list>
                    <value>classpath*:META-INF/com/vcc/poc/model/*.hbm.xml</value>
                </list>
            </property>

            <property name="hibernateProperties">
                <props>
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                    <prop key="hibernate.show_sql">false</prop>
                    <prop key="hibernate.format_sql">true</prop>
                    <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
                    <prop key="hibernate.jdbc.batch_size">10</prop>
                    <prop key="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</prop>
                    <!-- 
                    <prop key="hibernate.transaction.manager_lookup_class">org.springframework.orm.hibernate3.LocalTransactionManagerLookup</prop>
                    <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
                     -->
                </props>
            </property>
            <property name="dataSource">
                <ref bean="dataSource" />
            </property>
            <!-- 
            <property name="jtaTransactionManager">
              <osgi:reference>
                 <osgi:interfaces>
                   <value>org.springframework.transaction.PlatformTransactionManager</value>
                   <value>javax.transaction.TransactionManager</value>
                </osgi:interfaces>
               </osgi:reference>
            </property>
            -->

        </bean>

        <!-- Hibernate Transaction Manager Definition -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory">
                <ref local="sessionFactory" />
            </property>
        </bean>


        <!--
            Hibernate Transaction Manager exported as OSGI service because used
            org.apache.camel.example.reportincident.service

        <osgi:service id="transactionManagerOsgi" ref="transactionManager"
            interface="org.springframework.transaction.PlatformTransactionManager" />
            -->

        <osgix:cm-properties id="preProps" persistent-id="com.vcc.poc.dao.datasource">
            <prop key="driverClassName">com.mysql.jdbc.Driver</prop>
            <prop key="url">jdbc:mysql:///demo</prop>
            <prop key="username">root</prop>
            <prop key="password">password</prop>        
        </osgix:cm-properties>



    </beans>

classpath*:META-INF/com/vcc/poc/model/*.hbm.xml
org.hibernate.dialogue.mysqldialogue
假的
真的
真的
10
org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory
com.mysql.jdbc.Driver
jdbc:mysql:///demo
根
密码
这是我的项目结构

有没有人在FUSE hibernate集成中遇到过这种问题。我能够安装项目没有任何问题。但每当我尝试执行数据库操作时,我都会遇到这个错误


请一些专家帮我解决这个问题

您可以通过更改以下内容来解决此问题

根据下面的帖子,将以下内容添加到beans标记中的schemaLocation

http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd  
在这里,您还应该添加以下行。基于

更改后的bean注释应类似于以下内容

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:osgi="http://www.springframework.org/schema/osgi"
    xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/osgi
       http://www.springframework.org/schema/osgi/spring-osgi.xsd
       http://www.springframework.org/schema/osgi-compendium
       http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd

      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-2.5.xsd          
      ">

    <tx:annotation-driven/>
    <context:annotation-config />
    <context:property-placeholder properties-ref="preProps" />  
    <context:component-scan base-package="com.vcc.poc"></context:component-scan>

<tx:annotation-driven/>
<context:annotation-config />
<context:component-scan base-package="com.vcc.poc"></context:component-scan>
    @Transactional
    public Student getStudent(int id)
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:osgi="http://www.springframework.org/schema/osgi"
    xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/osgi
       http://www.springframework.org/schema/osgi/spring-osgi.xsd
       http://www.springframework.org/schema/osgi-compendium
       http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd

      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx-2.5.xsd          
      ">

    <tx:annotation-driven/>
    <context:annotation-config />
    <context:property-placeholder properties-ref="preProps" />  
    <context:component-scan base-package="com.vcc.poc"></context:component-scan>