我在后台业务层测试hibernate是有效地,值已经取到了。可以通过struts2执行action,在action方法中调用业务层时,hibernate却报错了,factory、session都加载失败。这是怎么回事呢?是jar包的问题,还是?????????求指教谢谢

解决方案 »

  1.   

    异常是这个:
    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
    com.shucb.WYMS.dao.HouseTypeDao.list(HouseTypeDao.java:22)
    com.shucb.WYMS.service.HouseTypeService.list(HouseTypeService.java:14)
    com.shucb.WYMS.action.HouseTypeAction.list(HouseTypeAction.java:46)
    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:441)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter
    后台运行时可以的,在地址栏里执行action就报错了,配置文件加载失败,就报这个空指针异常了
      

  2.   

    package com.shucb.WYMS.action;import java.util.*;import com.opensymphony.xwork2.ActionSupport;
    import com.shucb.WYMS.bean.HouseTypeBean;
    import com.shucb.WYMS.service.HouseTypeService;public class HouseTypeAction extends ActionSupport {

    private static final long serialVersionUID = 1L;
    private HouseTypeService houseTypeService = new HouseTypeService();

    private List<HouseTypeBean> houseTypes;
    private HouseTypeBean houseType;
    private int house_type_id;

    public List<HouseTypeBean> getHouseTypes() {
    return houseTypes;
    } public void setHouseTypes(List<HouseTypeBean> houseTypes) {
    this.houseTypes = houseTypes;
    } public HouseTypeBean getHouseType() {
    return houseType;
    } public void setHouseType(HouseTypeBean houseType) {
    this.houseType = houseType;
    } public int getHouse_type_id() {
    return house_type_id;
    } public void setHouse_type_id(int houseTypeId) {
    house_type_id = houseTypeId;
    }

    public String list() {
    System.out.println("我到啦");
    houseTypes = houseTypeService.list();//有问题
    return SUCCESS;
    }

    public String add(HouseTypeBean houseType) {
    houseTypeService.add(houseType);
    return SUCCESS;
    }

    public String update(HouseTypeBean houseType) {
    houseTypeService.update(houseType);
    return SUCCESS;
    }

    public String addInput() {
    return INPUT;
    }
    public String updateInput() {
    houseType = houseTypeService.findById(house_type_id);
    return INPUT;
    }

    public static void main(String args []) {
    HouseTypeService houseTypeService1 = new HouseTypeService();
    System.out.println(houseTypeService1.list().size());//没问题



    }
    }
      

  3.   

    把houseTypeService 的实例化放到要到用的方法里看一下
      

  4.   

    看一下配置文件吧
    struts和spring整合的时候要把action交给spring来管理的,异常提示是空指针,houseTypeService是不是用spring注入的,如果是,检查配置是有没有字母错误,如果没有,想一下struts2-spring-plugin有没有引入
      

  5.   

    我没有用spring,直接实例化service的
      

  6.   

    直接執行沒有問題,加了struts2出問題,看下struts2配置,先不訪問service
      

  7.   

    我也试过了。不访问service,直接实例化了一个list,是可以传到指定页面上的,并且可以显示出,所以struts跳转问题,配置也没问题。
    问题是:运行时,struts通过action跳转之前,要通过hibernate取到所需数据(即访问service层),这时要加载配置文件,可是却报错了,sessionFactory获取失败。到底是什么问题呢??
      

  8.   

    断点DeBug一下,看是哪里空指针异常。
      

  9.   

    你是异常不是出在dao里么?和action啥关系?
    com.shucb.WYMS.dao.HouseTypeDao.list(HouseTypeDao.java:22)
     
      

  10.   

    LZ的HouseTypeDao也是直接实例化的?最好加个断点调试看看HouseTypeDao是不是空的……
      

  11.   

    单独使用都可以,就是整合起来就没用了。session获取失败,所以dao就报错