SSH中sessionFactory==null

devilji0401 2008-08-31 09:37:06
我系统启动时,启动了一个Servlet,在里面调用了HibenateProductDaoImpl的findAllProducts()方法,返回一个产品信息的集合.
但是该方法在执行HibernateTemplate的find(hql)方法时出错;
查询操作不能完成;以下是错误提示。

信息: SessionListener: contextInitialized()
sessionFactory==>null
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
sessionFactory==>org.hibernate.impl.SessionFactoryImpl@1ae90c
2008-8-30 23:58:27 org.apache.catalina.core.ApplicationContext log
严重: StandardWrapper.Throwable
java.lang.NullPointerException
at com.gjun.dao.HibenateProductDaoImpl.findAllProduct(HibenateProductDaoImpl.java:28)
at com.gjun.servlet.InitServlet.init(InitServlet.java:65)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2008-8-30 23:58:27 org.apache.catalina.core.StandardContext loadOnStartup


...全文
267 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xsx1985 2008-09-09
  • 打赏
  • 举报
回复
最简单明了的还是setter依赖注入
在Spring配置文件里面,首先定义了AjaxBean为Spring的一个bean,然后把你定义好的dao、service等等,需要什么就注入什么,
前提是这些dao、service你在Spring的配置文件中也定义过,否则是获取不到的

例如:
<bean id="testBean" class="HOHO.testService">
<property name="testDAO" ref="testDAO">
</bean>

<bean id="testDAO" class="HOHO.testDAO">
<property name="sessionFactory" ref="sessionFactory">
</bean>

在testService中
你就需要
TestDAO testDAO;

public void setTestDAO(TestDAO testDAO)
{
this.testDAO = testDAO;
}
devilji0401 2008-09-05
  • 打赏
  • 举报
回复
我发现了....我在启动的Servlet中new 了一个HibenateProductDaoImpl();它继承了HibernateDAOSupport则会出错,这时它好像只能用注入的方式.否则直接用Hibernate就没问题.
在非Action的类中要注入DAO是用
<bean id="" class=""/>的形式吧??
我写了个AjaxBean.java试了下用设值注入不行.
只能用构造子方法的形式注入DAO
devilji0401 2008-09-05
  • 打赏
  • 举报
回复
构造子方法的形式注入DAO,也是不行的,

不知各位有什么办法给下面的AjaxBean注入DAO??
依赖注入的问题:
public class AjaxBean {
public static Logger logger = Logger.getLogger(AjaxBean.class);
public boolean chkLoginName(String loginName){
// IUserService userS=new UserServiceImpl();
boolean result = false;
try{
// 存在该用户名,则返回true;
////////////////////////////////////////////////
result = userS.checkUser(loginName);/////////在这里出错!!!!!
////////////////////////////////////////////////
}catch(Exception ex){
    logger.info("在执行AjaxBean类中的chkLoginName方法时出错:\n");
ex.printStackTrace();
}
return result;
}
}




怎样才能给AjaxBean注入BO或DAO????是AjaxBean要实现某个接口或某个类吗????




xian_hf 2008-09-01
  • 打赏
  • 举报
回复
spring配置文件没有写sessionFactory吧
herowzz 2008-08-31
  • 打赏
  • 举报
回复
在spring的配置文件有没有配置HibenateProductDaoImpl
老紫竹 2008-08-31
  • 打赏
  • 举报
回复
sessionFactory
这个在使用前,是谁负责初始化的?

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧