javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
root cause java.lang.NullPointerException
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.endTransaction(SqlMapExecutorDelegate.java:782)
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.endTransaction(SqlMapSessionImpl.java:176)
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.endTransaction(SqlMapClientImpl.java:154)
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.autoEndTransaction(SqlMapExecutorDelegate.java:883)
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:622)
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589)
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:122)
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:99)
com.us.jack.dao.impl.ArticleTypeService.getArticleTypelist(ArticleTypeService.java:35)
com.us.jack.action.ArticleListAction.list(ArticleListAction.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:186)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
public String list() {
        setAtService(new ArticleTypeService());
        try {
            setArticleTypelist((List) getAtService().getArticleTypelist());  //line number 42  报错指示的地方
        } catch (SQLException ex) {
            Logger.getLogger(ArticleAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        HttpServletRequest request = ServletActionContext.getRequest();
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(ArticleAction.class.getName()).log(Level.SEVERE, null, ex);
        }
        request.setAttribute("articleTypelist", articleTypelist);
        articletype = new ImageType();
        if (getType() != null) {
            articletype = (ImageType) atService.get(getType());
            String name = articletype.getName();
            request.setAttribute("name", name);
        }
        prepareCriteria();
        page = getArticleService().getPagedAll(criteria, page);
        return SUCCESS;
    }  public List getArticleTypelist() throws SQLException {
        SqlMapClient sqlMap = IbatisFactory.getSqlMapClient();
        List list = new ArrayList();
        try {
            list = sqlMap.queryForList("getArticleTypelist");   //line 35 报错指示的地方
        } catch (SQLException ex) {
            Logger.getLogger(ArticleTypeService.class.getName()).log(Level.SEVERE, null, ex);
        }
        return list;
    }
请问谁知道 这个错误原因 项目框架式 struts2+spring2.5+ibatis  <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="article" namespace="/manage/articlemanager" extends="agr-default">
              <action name="list" class="com.us.jack.action.ArticleListAction" method="list">
            <result name="success">/WEB-INF/pages/article/articleList.jsp</result>
        </action>        <action name="add" class="com.us.jack.action.ArticleAction" method="add">
            <result name="success">/WEB-INF/pages/article/articleAdd.jsp</result>
        </action>        <action name="save" class="com.us.jack.action.ArticleAction" method="save">
            <result name="success" type="redirect">${returnUrl}</result>
        </action>        <action name="getSelectTree" class="com.us.jack.action.ArticleAction" method="SelectTree">
            <result name="success" >/WEB-INF/pages/article/selectTree.jsp</result>
        </action>        <action name="view" class="com.us.jack.action.ArticleAction" method="view">
            <result name="success">/WEB-INF/pages/article/articleView.jsp</result>
        </action>
        <action name="audit" class="com.us.jack.action.ArticleAction" method="audit">
            <result type="redirect">${returnUrl}</result>
        </action>
        <action name="edit" class="com.us.jack.action.ArticleAction" method="edit">
            <result name="success">/WEB-INF/pages/article/articleEdit.jsp</result>
        </action>
        <action name="update" class="com.us.jack.action.ArticleAction" method="update">
            <result name="success" type="redirect">${returnUrl}</result>
        </action>
        <action name="del" class="com.us.jack.action.ArticleAction" method="del">
            <result name="success" type="redirect">${returnUrl}</result>
        </action>
        <action name="batchDel" class="com.us.jack.action.ArticleAction" method="batchDel">
            <result name="success" type="redirect">${returnUrl}</result>
        </action>
        <action name="viewtest" class="com.us.jack.action.ArticleAction" method="viewtest">
            <result name="success">/WEB-INF/pages/article/test.jsp</result>
        </action>
    </package>
</struts>这是 struts 配置文件里 的 这里没用 spring来管理