Changes between Version 16 and Version 17 of youhua/2017_1


Ignore:
Timestamp:
01/18/2017 02:13:58 PM (9 years ago)
Author:
wuyuanbo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • youhua/2017_1

    v16 v17  
    4646 
    4747'''原因'''[[BR]] 
     48EnvUtils.getEnv()用到了线程单例,当线程第一次调用时threadLocal会实例一个Env对象,之后这个线程再调用都只返回这个对象,而且只能被这个线程调用。[[BR]] 
    48491、2点的错误原因比较明显,原因是在代码执行的时候没有经过过滤器,EnvUtils.getEnv()只是把Env实例化了,env对象里的servletContext属性是空的,没有进行设置,调用的时候就报空指针异常了。[[BR]] 
    49 第3点报错的原因是因为EnvUtils.getEnv()用到了线程单例(代码如下),当线程第一次调用时threadLocal会实例一个Env对象,之后这个线程再调用都只返回这个对象,而且只能被这个线程调用,当在处理请求过程中如果新启了线程再调用EnvUtils.getEnv()时,threadLocal就会新实例一个Env对象,这个实例和1、2一样,没有设置env里的servletContext属性,调用env.getBean(xxx.class)的时候就会报空指针异常。 
     50第3点报错的原因是因为当在处理请求过程中启用了新的线程,新线程调用EnvUtils.getEnv()时,threadLocal就会新实例一个Env对象,这个实例和1、2一样,没有设置env里的servletContext属性,调用env.getBean(xxx.class)的时候就会报空指针异常。 
    5051{{{ 
    5152public class EnvUtils {