nutzam/nutz — Issue #71: 应用启动后，客户端用Chrome登录同时请求某个Module类的两个入口方法时，注入的某个属性空指针异常
Author: conanca
Created: 2011-10-11 08:37:50+00:00
State: open

我的 Module类如下：

@IocBean
@At("/system/sysEnum")
public class SysEnumModule {

@Inject
private SysEnumService sysEnumService;
@Inject
private SysEnumItemService sysEnumItemService;

@At
public ResponseData getSysEnumGridData(@Param("..") JqgridReqData jqReq) {
return sysEnumService.getGridData(jqReq);
}

@At("/getSysEnumItemGridData/*")
public ResponseData getSysEnumItemGridData(int sysEnumId, @Param("..") JqgridReqData jqReq) {
return sysEnumItemService.getGridData(jqReq, sysEnumId); // 这行报空指针异常！
}
...

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`

1.应用启动后，第一次用Chrome登录，
2.请求 /getSysEnumItemGridData 和 /getSysEnumGridData 这两个url
3.这一行语句报空指针异常：sysEnumItemService.getGridData(jqReq, sysEnumId);
4.再次请求以上两个Url，则正常
5.重启应用，重复以上操作，问题再现
6.换用FF/IE，重复以上操作，则正常

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

兽兽说：

Wendal~兽 16:24:37
有点问题, Ioc不是线程安全的

Wendal~兽 16:25:31
A线程的Ioc把对象生成了,但还没组装好,但Ioc已经标记来这个对象,所以返回了
Wendal~兽 16:25:34
然后就出错了
Wendal~兽 16:25:52
B线程拿到的是还没组装好的对象