求救,这个问题折腾我好几天了;
我加了抽象的Dao层,实体层,biz层之后就出现这样的错误了,能正常调用Dao层的方法,但是它貌似不能自动关闭Session的原因导至。希望高手帮我瞧瞧》。。我的分不是太多了,所以还望海涵...java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.OutOfMemoryError: Java heap space
WARN -   Resource org/apache/struts/action/ActionResources_zh_CN.properties Not Found.
WARN -   Resource org/apache/struts/action/ActionResources_zh.properties Not Found.
WARN - Unhandled Exception thrown: class javax.servlet.ServletException
DEBUG - Removed value [org.springframework.orm.hibernate3.SessionHolder@15cd9c0] for key [org.hibernate.impl.SessionFactoryImpl@1e4eb5b] from thread [http-90-Processor25]
DEBUG - Closing single Hibernate Session in OpenSessionInViewFilter
DEBUG - Closing Hibernate Session
ERROR - Servlet.service() for servlet action threw exception
java.lang.OutOfMemoryError: Java heap space

解决方案 »

  1.   

    内存溢出!是你所说的session没有关闭的原因,但你没有贴出代码我们怎么看得出哪段代码出问题,你是不是使用了spring的getSession()去操作,如果是这样 的话session要手动关闭的,如果是使用getHibernateTemplate();则不需要手动去关闭
      

  2.   

    菜鸟飘过
    还不知道SSH是什么。
    顶了~
      

  3.   

    我试过了,可惜还是不行application.xml:<beans>
    <!-- AH_TuiSongInfo Setting -->
    <bean name="/ah_tuisong"
    class="cn.wujie.framework.ad.ah.services.action.AH_tuisongAction">
    <property name="pluginBiz" ref="ah_tuisongBiz" />
    </bean>
    <bean id="ah_tuisongBiz"
    class="cn.wujie.framework.ad.ah.biz.AH_TuisonginfoBizImpl">
    <property name="tuisongDao" ref="ah_tuisongDao" />
    </bean>
    <bean id="ah_tuisongDao"
    class="cn.wujie.framework.ad.ah.dao.AH_TuisonginfoDAO">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> <!-- AH_UserConfigInfo Setting -->
    <bean name="/ah_usrcfg"
    class="cn.wujie.framework.ad.ah.services.action.AH_userconfigAction" >
    <property name="pluginBiz" ref="ah_usrcfgBiz" />
    </bean>
    <bean id="ah_usrcfgBiz"
    class="cn.wujie.framework.ad.ah.biz.AH_UserconfigBizImpl">
    <property name="usrcfgDao" ref="ah_usrcfgDao"></property>
    </bean>
    <bean id="ah_usrcfgDao"
    class="cn.wujie.framework.ad.ah.dao.AH_UserconfiginfoDAO" >
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> <!-- AH_UserFeedBackInfo Setting -->
    <bean name="/ah_usrfeedback"
    class="cn.wujie.framework.ad.ah.services.action.AH_userfeedbackAction" >
    <property name="pluginBiz" ref="ah_usrfdbBiz" />
    </bean>
    <bean id="ah_usrfdbBiz"
    class="cn.wujie.framework.ad.ah.biz.AH_UserfeedbackBizImpl">
    <property name="usrfdbkDao" ref="ah_usrfdbDao" />
    </bean>
    <bean id="ah_usrfdbDao"
    class="cn.wujie.framework.ad.ah.dao.AH_UserfeedbackDAO">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> <!-- AH_UserInfo Setting -->
    <bean name="/ah_usrinfo"
    class="cn.wujie.framework.ad.ah.services.action.AH_UserinfoAction" >
    <property name="pluginBiz" ref="ah_usrinfoBiz" />
    </bean>
    <bean id="ah_usrinfoBiz"
    class="cn.wujie.framework.ad.ah.biz.AH_UserinfoBizImpl">
    <property name="usrinfoDao" ref="ah_usrinfoDao" />
    </bean>
    <bean id="ah_usrinfoDao"
    class="cn.wujie.framework.ad.ah.dao.AH_UserinfoDAO">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    </beans>applicationContext-config.xml:<?xml version="1.0" encoding="UTF-8"?>
    <!--<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

    -->
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    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-2.5.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!--  dataSource config-->
    <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath:jdbc.properties</value>
    </list>
    </property>
    </bean>
    <bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName">
    <value>${jdbc.driverClassName}</value>
    </property>
    <property name="url">
    <value>${jdbc.url}</value>
    </property>
    <property name="username">
    <value>${jdbc.username}</value>
    </property>
    <property name="password">
    <value>${jdbc.password}</value>
    </property>
    <property name="maxActive">
    <value>${jdbc.maxActive}</value>
    </property>
    <property name="maxIdle">
    <value>${jdbc.maxIdle}</value>
    </property>
    <property name="maxWait">
    <value>${jdbc.maxWait}</value>
    </property>
    <property name="testOnBorrow">
    <value>${jdbc.testOnBorrow}</value>
    </property>
    <property name="testOnReturn">
    <value>${jdbc.testOnReturn}</value>
    </property>
    <property name="testWhileIdle">
    <value>${jdbc.testWhileIdle}</value>
    </property>
    <property name="validationQuery">
    <value>${jdbc.validQuery}</value>
    </property>
    </bean> <!-- SessionFactory -->
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="dataSource" />
    </property>
    <!-- 将 LobHandler 注入到 SessionFactory 中 -->
    <property name="lobHandler">
    <ref bean="oracleLobHandler" />
    </property>
    <!-- 完毕 -->
    <!--
    property name="configLocation">
    <value>classpath:hibernate.cfg.xml</value> </property
    -->
    <property name="mappingDirectoryLocations">
    <list>
    <value>classpath:cn/wujie/framework/ad/domain</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    ${hibernate.dialect}
    </prop>
    <prop key="hibernate.show_sql">
    ${hibernate.show_sql}
    </prop>
    <prop key="hibernate.format_sql">
    ${hibernate.format_sql}
    </prop>
    <prop key="hibernate.jdbc.fetch_size">
    ${hibernate.jdbc.fetch_size}
    </prop>
    <prop key="hibernate.jdbc.batch_size">
    ${hibernate.jdbc.batch_size}
    </prop>
    <prop key="hibernate.cache.use_second_level_cache">
    ${hibernate.cache.use_second_level_cache}
    </prop>
    </props>
    </property>
    </bean> <!-- 使用spring+hibernate处理oracle CLOB-->
    <bean id="nativeJdbcExtractor" lazy-init="true"
    class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" /> <bean id="oracleLobHandler"
    class="org.springframework.jdbc.support.lob.OracleLobHandler"
    lazy-init="true">
    <property name="nativeJdbcExtractor">
    <ref bean="nativeJdbcExtractor" />
    </property>
    </bean>
    <!-- 完毕-->
    <!-- TransactionManager -->
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref local="sessionFactory" />
    </property>
    </bean>
    <!-- 类型 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="add*" propagation="REQUIRED" />
    <tx:method name="save*" propagation="REQUIRED" />
    <tx:method name="del*" propagation="REQUIRED" />
    <tx:method name="update*" propagation="REQUIRED" />
    <tx:method name="modify*" propagation="REQUIRED" />
    <tx:method name="*" read-only="true" />
    </tx:attributes>
    </tx:advice>
    <!--指定切面  -->
    <aop:config>
    <aop:pointcut id="allManagerMethod"
    expression="execution(* cn.wujie.framework.ad.abstractManager.impl.*.*(..))" />
    <aop:advisor pointcut-ref="allManagerMethod"
    advice-ref="txAdvice" />
    </aop:config> <!-- 代理工厂  -->
    <!--<bean id="baseTransactionProxy" abstract="true"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
    <ref bean="transactionManager" />
    </property>
    <property name="transactionAttributes">
    <props>
    <prop key="update*">
    PROPAGATION_REQUIRED,-RuntimeException
    </prop>
    <prop key="add*">
    PROPAGATION_REQUIRED,-RuntimeException
    </prop>
    <prop key="save*">
    PROPAGATION_REQUIRED,-RuntimeException
    </prop>
    <prop key="modify*">
    PROPAGATION_REQUIRED,-RuntimeException
    </prop>
    <prop key="delete*">
    PROPAGATION_REQUIRED,-RuntimeException
    </prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    </props>
    </property>
    </bean>
    -->
    <!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 
    <context:component-scan base-package="cn.wujie.framework.ad" />

    使用annotation定义事务 
    <tx:annotation-driven transaction-manager="transactionManager" />
    -->
    <!-- 定时器 -->
    <!--
    <bean id="xxgljob" class="cn.wujie.framework.yx.datatrans.XxglJob">
    <property name="xxglXxcDao"> <ref bean="xxglXxcDao"/> </property>
    </bean> <bean id="sendXxJob"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject"> <ref local="xxgljob" /> </property>
    <property name="targetMethod"> <value>execute</value> </property>
    </bean> <bean id="xxglTimeTrigger"
    class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail"> <ref local="sendXxJob" /> </property>
    <property name="startDelay"> <value>60000</value> </property>
    <property name="repeatInterval"> <value>86400000</value> </property>
    </bean> <bean id="myjob"
    class="cn.wujie.framework.yx.datatrans.GlczjlSjcsJob"> </bean> <bean
    id="saveProjectJob"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject"> <ref local="myjob" /> </property>
    <property name="targetMethod"> <value>execute</value> </property>
    </bean> <bean id="timeTrigger"
    class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail"> <ref local="saveProjectJob" /> </property>
    <property name="startDelay"> <value>1000</value> </property>
    地磅取数据间隔时间目前是5分钟 <property name="repeatInterval"> <value>300000</value>
    </property> </bean> <bean id="scheduler" lazy-init="false"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers"> <list> <ref bean="timeTrigger" /> <ref
    bean="xxglTimeTrigger" /> </list> </property> </bean>
    -->
    </beans>
      

  4.   


    web.xml:<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>广告推送系统</display-name>
    <!-- 配置Struts启动 -->
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>
    org.apache.struts.action.ActionServlet
    </servlet-class>
    <init-param>
    <param-name>config</param-name>
    <param-value>
    /ah-struts-config.xml
    </param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>3</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <!-- 配置Spring启动监听 -->
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:*applicationContext*.xml</param-value>
    </context-param> <!-- Listener log4jConfigLocation -->
    <listener>
    <listener-class>
    org.springframework.web.util.Log4jConfigListener
    </listener-class>
    </listener>
    <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <!-- 配置Spring字符集过滤器 -->
    <filter>
    <filter-name>Spring character encoding filter</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GBK</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Spring character encoding filter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 配置Hibernate延迟加在 -->
    <filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"><struts-config>
    <form-beans>
    <form-bean name="ahTuisongForm"
    type="cn.wujie.framework.ad.ah.services.form.AhTuisongForm" />
    </form-beans> <global-exceptions />
    <global-forwards />
    <action-mappings>
    <action parameter="operate" path="/ah_tuisong"
    type="cn.wujie.framework.ad.ah.services.action.AH_tuisongAction" >
    <forward name="usrfeedback_findByZone" path="/ah_usrfeedback.html?operate=findByZone"/>
    <forward name="tuisong_result" path="/tuisong_query_result.jsp" />
    <forward name="login" path="/login.jsp" />
    </action>
    <action parameter="operate" path="/ah_usrcfg"
    type="cn.wujie.framework.ad.ah.services.action.AH_userconfigAction">
    <forward name="tuisong_findByZone" path="/ah_tuisong.html?operate=findByZone" />
    <forward name="login" path="/login.jsp" />
    </action>
    <action parameter="operate" path="/ah_usrfeedback"
    type="cn.wujie.framework.ad.ah.services.action.AH_userfeedbackAction">
    <forward name="tuisong_findByZone" path="/ah_tuisong.html?operate=findByZone" />
    <forward name="login" path="/login.jsp" />
    </action>
    <action parameter="operate" path="/ah_usrinfo"
    type="cn.wujie.framework.ad.ah.services.action.AH_UserinfoAction">
    <forward name="usrcfg_findByZone" path="/ah_usrcfg.html?operate=findByZone" />
    <forward name="login" path="/login.jsp" />
    </action>
    </action-mappings>
    <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />
    <message-resources
    parameter="cn.wujie.framework.ad.ah.services.ApplicationResources" />
    </struts-config>