当我使用SpringMVC + hibernate + tomcat时

时间:2013-11-10 13:58:53

标签: hibernate spring-mvc

我正在使用SpringMVC + hibernate + tomcat创建一个webapp。当我启动tomcat时。没有错误或警告。网站没问题。但是当我提交一些数据时,chrome正在保持挂起状态。没有错误在tomcat log.I我正在学习使用SpringMVC。 弹簧-config.xml中:

<context:component-scan base-package="com.gujiaqi" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

弹簧controller.xml:

<context:component-scan base-package="com.gujiaqi" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>
<!-- ... -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/"/>
    <property name="suffix" value=".jsp"/>
</bean>

弹簧hibernate.xml:

<!-- 配置数据源 -->
<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://127.0.0.1/springmvc" />
    <property name="username" value="soho" />
    <property name="password" value="123456" />
</bean>

<!--  配置hibernate SessionFactory-->
<bean id="sessionFactory"
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hiberante.format_sql">true</prop>
        </props>
    </property>
    <property name="packagesToScan">
        <!-- 这里为SessionFactory配置了实体bean的自动扫描 -->
        <list>
            <value>com.gujiaqi.bean</value>
        </list>
    </property>
</bean>

<!-- 事务管理器 -->
<bean id="transactionManager"
      class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--启动spring注解功能-->
<tx:annotation-driven transaction-manager="transactionManager" />
<aop:config>
    <aop:pointcut id="serviceOperation" expression="execution(* com.gujiaqi.service.impl.*.*(..))" />
    <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" />
</aop:config>
<!-- 事务代理类 -->


<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="update*" propagation="REQUIRED"/>
        <tx:method name="save*" propagation="REQUIRED"/>
        <tx:method name="add*" propagation="REQUIRED"/>
        <tx:method name="create*" propagation="REQUIRED"/>
        <tx:method name="do*" propagation="REQUIRED"/>
        <tx:method name="del*" propagation="REQUIRED"/>
        <tx:method name="remove*" propagation="REQUIRED"/>
        <tx:method name="get*" read-only="true" />
        <tx:method name="query*" read-only="true" />
        <tx:method name="find*" read-only="true" />
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>

个人资料有什么问题吗?

也许我的英语很差,问题不明确。

1 个答案:

答案 0 :(得分:0)

悬挂的服务方法是什么样的?尝试这样做以进一步调试它:

  • 在被调用的服务层方法上放置一个断点,以查看它是否被称为
  • 让它挂起,暂停调试器,然后查看调试器视图上每个线程的堆栈,看看线程在做什么。大部分都将处于非活动状态,但其中一个将运行您的服务。堆栈将告诉你它挂起的原因
  • 查看数据库发生了什么,打开了多少个会话,是否被阻止等等,使用My SQL workbench
  • 将spring和hibernate的日志记录级别增加到DEBUG

如果仍然卡住,您可以发布您的进一步结论和服务方法代码吗?