我刚学SSH的,所以不知道什么原因
Spring和Hibernate已经配置好了,我新建一个Junit测试Spring和hibernate工作情况,发现一切正常
- Java code
ApplicationContext ctx = new FileSystemXmlApplicationContext("XXXXX.xml"); EmpService abccc = (EmpService)ctx.getBean("empService"); System.out.println(abccc.validLogin("123","123"));
现在加入了struts,在其中一个action中发现错误
- Java code
int result = empService.validLogin(getUserName(), getPassWord());
这句话有错误,错误内容是
- Java code
java.lang.reflect.InvocationTargetException 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)
我设置了断点跟踪,发现是在DAOImpl文件中发生的一个错误
- Java code
log.debug("finding MgrTable instance by Name And Passworld"); try { String queryString = "from MgrTable as model where model.empName"+ "= ? and model.empPass= ?"; Query queryObject = getSession().createQuery(queryString); queryObject.setParameter(0, name); queryObject.setParameter(1, passWorld); if (queryObject.list().size()>0) { return (MgrTable)queryObject.list().get(0); }else { return null; } } catch (RuntimeException re) { log.error("find by Name And Passworld failed", re); throw re; }
其中的Query queryObject = getSession().createQuery(queryString);
执行getSession()一切正常,但是执行createQuery()函数的时候发现发生了错误,很奇怪的是为什么单元测试一切正常,但是通过web执行后却发生错误。高手给点思路,本人太菜了
------解决方案--------------------------------------------------------
这个异常,一般是由于调用Mathod类的invoke()方法,该方法所代表的指定方法抛出异常时,或者调用Constructor类的newInstance()方法,该方法所代表的底层构造方法抛出异常时,由java.lang.reflect.InvocationTargetExceptio异常包装后作为新的异常抛出而产生,默认异常信息是NULL。
所以我怀疑是使用反射的方式调用构造函数时,由于数据或者其他问题造成了构造方法抛出异常,以InvocationTargetException异常的方式显示出来。
问题出在:
java.lang.reflect.InvocationTargetException
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)
仔细检查一下,应该能解决
------解决方案--------------------------------------------------------
可能是参数传递问题~
------解决方案--------------------------------------------------------
单元测试的时候你用FileSystemXmlApplicationContext容器 谁知道你现在是怎么做的
------解决方案--------------------------------------------------------
最好是把你的spring配置文件贴出来