急救,webwork的IOC注入实例失败!

07-08-29 boby2046
请各位大侠抽空看看,按照AdminApp的demo,整合了webwork与hibernate,

webwork-default.xml

<interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>

<interceptor name="hibernate" class="com.twinbay.interceptor.HibernateInterceptor"/>

components.xml

<components>

<component>

<scope>request</scope>

<class>com.twinbay.component.HibernateSession</class>

<enabler>com.twinbay.component.HibernateSessionAware</enabler>

</component>

<component>

<scope>application</scope>

<class>com.twinbay.component.HibernateSessionFactory</class> <enabler>com.twinbay.component.HibernateSessionFactoryAware</enabler>

</component>

</components>

可是组件装载不起作用,发生了NullPointer的异常

java.lang.NullPointerException

com.twinbay.action.AbstractAction.getSession(AbstractAction.java:60)

问题出在下面这句,session没有通过组件注入(框架管理生命周期),

protected Session getSession() throws HibernateException {

return session.getSession();

}

baidu,google很久了都找不出问题的所在,在下对webwork的IOC十分不熟悉。

boby2046
2007-08-29 10:59
AbstractAction实现HibernateSessionAware而且有HibernateSession的getter并完成HibernateSession的注入.

而HibernateSession实现了HibernateSessionFactoryAware有HibernateSessionFactory的getter并完成HibernateSessionFactory的注入,

奇怪的是两者均不起作用...

单元测试是通过的,可一在WEB上就出问题了。。。

boby2046
2007-08-30 02:31
问题解决,webwork版本问题,2.2以上的版本开始使用spring的IOC,用2.2以下的版本就可以了。

banq
2007-08-31 09:59
非常好,赞一个,欢迎这样实用的详细解决方案。

猜你喜欢