【问题标题】:Running Spring Hibernate Project in Tomcat as Standalone and Embedded Tomcat in STS IDE在 STS IDE 中作为独立和嵌入式 Tomcat 在 Tomcat 中运行 Spring Hibernate 项目
【发布时间】:2018-02-03 12:06:59
【问题描述】:

当我使用 Tomcat 作为独立 Web 应用程序运行我的应用程序时遇到问题。

我使用 spring 、 struts 2 和 hibernate 。

奇怪的是,当我从 STS IDE 中的嵌入式 tomcat 运行应用程序时,它运行良好。

在这两种情况下,Web 应用程序都运行良好,但某些休眠模型未初始化,导致应用程序在独立模式下运行时某些屏幕出现故障。

任何帮助/指导将不胜感激。

以下是确切的错误:

预加载模型或 ppa_ids 错误 org.springframework.orm.hibernate3.HibernateQueryException:RealTimeModel 未映射 [从 RealTimeModel 中选择不同的 forecast_model];嵌套异常是 org.hibernate.hql.ast.QuerySyntaxException: RealTimeModel is not mapped [select distinct forecast_model from RealTimeModel] 在 org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:656)

applicationContext.xml

<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"
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">
<!-- MyBatis setup start -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>
<context:property-placeholder location="classpath:jdbc.properties" />
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
        <ref bean="transactionManager" />
    </property>
    <property name="transactionAttributes">
        <props>
            <prop key="create*">PROPAGATION_REQUIRED</prop>
            <prop key="insert*">PROPAGATION_REQUIRED</prop>
            <prop key="update*">PROPAGATION_REQUIRED</prop>
            <prop key="delete*">PROPAGATION_REQUIRED</prop>
            <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
        </props>
    </property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    <property name="dataSource" ref="dataSource" />
</bean>
<bean id="permissionMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.guzmanenergy.dal.PermissionMapper"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<bean id="roleMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.guzmanenergy.dal.RoleMapper"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.guzmanenergy.dal.UserMapper"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<bean id="authorityMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.guzmanenergy.dal.AuthorityMapper"></property>
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<bean id="permissionService" class="com.guzmanenergy.service.impl.PermissionServiceImpl">
    <property name="permissionMapper" ref="permissionMapper"></property>
</bean>
<bean id="authorityService" class="com.guzmanenergy.service.impl.AuthorityServiceImpl">
    <property name="authorityMapper" ref="authorityMapper"></property>
</bean>
<bean id="userServiceTarget" class="com.guzmanenergy.service.impl.UserServiceImpl">
    <property name="usermapper" ref="userMapper"></property>
</bean>
<bean id="userService" parent="txProxyTemplate">
    <property name="target" ref="userServiceTarget"></property>
</bean>
<!-- MyBatis setup stop -->
<!-- email setup start -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.gmail.com" />
    <property name="port" value="587" />
    <!-- 25, 465, 587 -->
    <property name="username" value="support@getrident.com" />
    <property name="password" value="Aragon101!" />
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
        </props>
    </property>
</bean>
<!--    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> -->
<!--        <property name="host" value="smtp.gmail.com" /> -->
<!--        <property name="port" value="587" />  25, 465, 587 -->
<!--        <property name="username" value="GPMreporting@gmail.com" /> -->
<!--        <property name="password" value="Guzman1234" /> -->
<!--        <property name="javaMailProperties"> -->
<!--           <props> -->
<!--                  <prop key="mail.smtp.auth">true</prop> -->
<!--                  <prop key="mail.smtp.starttls.enable">true</prop> -->
<!--           </props> -->
<!--        </property> -->
<!--    </bean> -->
<bean id="resetPasswordMailer" class="com.guzmanenergy.util.ResetPasswordMailer">
    <property name="mailSender" ref="mailSender" />
</bean>
<bean id="sendEmail" class="com.guzmanenergy.util.SendMail">
    <property name="mailSender" ref="mailSender" />
</bean>
<!-- email setup stop -->
<!-- Spring + Hibernate Configuration -->
<import resource="applicationContext-hibernate.xml"/>
<!-- Curve Action Beans -->
<bean id="curveDao" class="com.guzmanenergy.action.dao.Impl.CurveDaoImpl" scope="prototype">
    <property name="sessionFactory">
        <ref bean="Hibernate_sessionFactory"/>
    </property>
</bean>
<bean id="curveService" class="com.guzmanenergy.action.service.Impl.CurveServiceImpl" scope="prototype">
    <property name="curveDao">
        <ref bean="curveDao"/>
    </property>
</bean>
<bean id="curveAction" class="com.guzmanenergy.action.CurveAction_s2sh" scope="prototype">
    <property name="curveService">
        <ref bean="curveService"/>
    </property>
</bean>
<!-- Curve Action Beans End -->
<!-- Beans for physical_longterm_main -->
<bean id="physicalLongtermMainDao" class="com.guzmanenergy.action.dao.Impl.PhysicalLongtermMainDaoImpl" scope="prototype">
    <property name="sessionFactory">
        <ref bean="Hibernate_sessionFactory"/>
    </property>
</bean>
<!-- Beans for physical_longterm_main  End-->
<!-- Real Time Model Beans -->
<bean id="realTimeModelDao" class="com.guzmanenergy.action.dao.Impl.RealTimeModelDaoImpl" scope="prototype">
    <property name="sessionFactory">
        <ref bean="Hibernate_sessionFactory"/>
    </property>
</bean>
<bean id="realTimeModelService" class="com.guzmanenergy.action.service.Impl.RealTimeModelServiceImpl" scope="prototype">
    <property name="realTimeModelDao">
        <ref bean="realTimeModelDao"/>
    </property>
    <property name="physicalLongtermMainDao">
        <ref bean="physicalLongtermMainDao"/>
    </property>
</bean>
<bean id="RealTimeModelAction" class="com.guzmanenergy.action.RealTime_Model_Action" scope="prototype">
    <property name="realTimeModelService">
        <ref bean="realTimeModelService"/>
    </property>
</bean>
<!-- Real Time Model Beans -->
<!-- forecast model download -->
<bean id="ForcastModelDownloadAction" class="com.guzmanenergy.action.ForcastModelDownloadAction" scope="prototype">
    <property name="realTimeModelService">
        <ref bean="realTimeModelService"/>
    </property>
</bean>
<!-- forecast model download -->
<!-- Spring + Hibernate Configuration End -->

applicationContext-hibernate.xml

<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:aop="http://www.springframework.org/schema/aop"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
                 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                 http://www.springframework.org/schema/context
                 http://www.springframework.org/schema/context/spring-context-3.0.xsd
                 http://www.springframework.org/schema/aop
                 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                 http://www.springframework.org/schema/tx
                 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" id="ETRM_database">
    <property name="locations">
        <value>classpath:jdbc.properties</value>
    </property>
</bean>

<!-- 
<bean id="dataSource" destroy-method="close"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>
 -->

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<bean id="Hibernate_sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="mappingDirectoryLocations">
        <list>
            <value>classpath:com/guzmanenergy/action/domain</value>
        </list>
    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
            <prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache.xml</prop>
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <prop key="generate_statistics">true</prop>
            <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</prop>
        </props>
    </property>
    <!--
    <property name="configLocation">
                <value>classpath:hibernate.cfg.xml</value>
            </property> 
     -->
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" scope="prototype">
    <property name="sessionFactory">
        <ref bean="Hibernate_sessionFactory"/>
    </property>
</bean>

<tx:advice id="ETRM_tx" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="save*" read-only="false"/>
        <tx:method name="update*" read-only="false"/>
        <tx:method name="delete*" read-only="false"/>
        <tx:method name="*" read-only="true"/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut expression="execution(* com.guzmanenergy.action.service.Impl.*.*(..))" id="ETRM_perform"/>
    <aop:advisor advice-ref="ETRM_tx" pointcut-ref="ETRM_perform"/>
</aop:config>

【问题讨论】:

标签: java spring hibernate tomcat


【解决方案1】:

找到了答案,hbm.xml 文件位于 main/java 文件夹中。但它们应该在 main/resources 文件夹中。

【讨论】:

    猜你喜欢
    • 2017-05-31
    • 2012-06-11
    • 2018-10-04
    • 1970-01-01
    • 2018-05-13
    • 2019-03-13
    • 2012-06-21
    • 2016-11-20
    • 2013-12-17
    相关资源
    最近更新 更多