新手Hibernate+Spring的问题

AlphaGroup 2006-07-10 11:29:18
出现错误
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
com.yourcompany.BookDaoHibernate.getBooks(BookDaoHibernate.java:13)
org.apache.jsp.index_jsp._jspService(index_jsp.java:79)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<!-- <property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>-->
<property name="mappingResources">
<list>
<value>com/yourcompany/Book.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
</props>
</property>
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>com.microsoft.sqlserver.jdbc.SQLServerDriver</value>
</property>
<property name="url">
<value>jdbc:sqlserver://localhost</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value>xxxxxxxxxxxxxx</value></property>
</bean>

<bean id="BookDaoHibernate" class="com.yourcompany.BookDaoHibernate" autowire="byName">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
</beans>

BookDAOHibernate.java
package com.yourcompany;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class BookDaoHibernate extends BaseDAOHibernate implements IBookDAO {
protected final Log log = LogFactory.getLog(getClass());

public List getBooks() throws Exception
{
return getHibernateTemplate().find("from com.yourcompany.Book");
}
}

...全文
295 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
IceCraft 2006-07-11
  • 打赏
  • 举报
回复
com.yourcompany.BookDaoHibernate.getBooks(BookDaoHibernate.java:13)
这一行报空指针,貌似被调用的BookDaoHibernate为null。
而且楼主好像是在jsp中直接调用BookDaoHibernate。
首先请确认web.xml中是否正确配置了spring的启动初始化,如果spring都没有初始化,你直接去用肯定是null了。(使用log4j.properties来让控制台显示spring的初始化信息,确认这些bean都正确初始化了)
另外,没有见到楼主配置中间的服务层,而是直接由显示层调用持久层。那也就没有了Spring采用AOP事物控制了。请参考http://dev.csdn.net/develop/article/43/43117.shtm 来配置一个结构合理的架构。jsp-->事务代理工厂bean-->service bean-->dao-->hibernate-->jdbc-->db
zhuangyan2004 2006-07-11
  • 打赏
  • 举报
回复
BookDaoHibernate为空,看看spring的配置。
AlphaGroup 2006-07-11
  • 打赏
  • 举报
回复
个人估计是什么地方没有配置好,就是不知道是哪儿。
且所有的支持jar都复制到Tomcat的相应lib了。
AlphaGroup 2006-07-11
  • 打赏
  • 举报
回复
log4j.properties显示应该是启动了。
web.xml设置如下
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext*.xml
classpath*:META-INF/applicationContext*.xml
</param-value>
</context-param>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

67,513

社区成员

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

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