首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

SSH的DAO 不能流入,main方法测试能注入,发布后就不行

2013-07-08 
SSH的DAO 不能注入,main方法测试能注入,发布后就不行我是新手,Spring版本为3.1,userService能注入Action,

SSH的DAO 不能注入,main方法测试能注入,发布后就不行
我是新手,Spring版本为3.1,userService能注入Action,但是userDAO不能注入userService,
虽然用main方法中读取applicationContext.xml文件后getBean()能注入,但发布后就不行了,报错userDAO的NullPointerException,但在userService中我也写了getset方法啊,配置文件中配好了,这是为什么呢?
求大神救救我吧!!

下面是日志,我在userService的setUserDAO方法中输出了一条语句,“set user dao!”,启动时用调用到这个方法

···
org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
INFO - RDBMS: MySQL, version: 5.5.15
INFO - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-3.1.11 ( $Date: 2005-09-21 18:20:03 +0000 (Wed, 21 Sep 2005) $, $Revision: 4287 $ )
INFO - Using dialect: org.hibernate.dialect.MySQLInnoDBDialect
INFO - Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory
INFO - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
INFO - Automatic flush during beforeCompletion(): disabled
INFO - Automatic session close at end of transaction: disabled
INFO - JDBC batch size: 15
INFO - JDBC batch updates for versioned data: disabled
INFO - Scrollable result sets: enabled
INFO - JDBC3 getGeneratedKeys(): enabled
INFO - Connection release mode: auto
INFO - Maximum outer join fetch depth: 2
INFO - Default batch fetch size: 1
INFO - Generate SQL with comments: disabled
INFO - Order SQL updates by primary key: disabled
INFO - Order SQL inserts for batching: disabled
INFO - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO - Using ASTQueryTranslatorFactory
INFO - Query language substitutions: {}
INFO - JPA-QL strict compliance: disabled
INFO - Second-level cache: enabled
INFO - Query cache: disabled
INFO - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
INFO - Optimize cache for minimal puts: disabled
INFO - Structured second-level cache entries: disabled
INFO - Echoing all SQL to stdout
INFO - Statistics: disabled


INFO - Deleted entity synthetic identifier rollback: disabled
INFO - Default entity-mode: pojo
INFO - Named query checking : enabled
INFO - building session factory
INFO - Not binding factory to JNDI, no JNDI name configured
INFO - Running hbm2ddl schema update
INFO - fetching database metadata
INFO - updating schema
INFO - table found: bookshare1.admin
INFO - columns: [adminname, apassword, adminid]
INFO - foreign keys: []
INFO - indexes: [u_username_unique, primary]
INFO - table found: bookshare1.book
INFO - columns: [pdfpath, picpath, cateid, bookid, bookname, grade, editionyear, sharedate, intro]
INFO - foreign keys: [fk_book_cate]
INFO - indexes: [u_bookname_unique, u_pdfpath_unique, primary, u_picpath_unique, fk_book_cate]
INFO - table found: bookshare1.book_tag
INFO - columns: [bookid, tagid, btid]
INFO - foreign keys: [fk_booktag_tag, fk_booktag_book]
INFO - indexes: [fk_booktag_tag, fk_booktag_book, primary]
INFO - table found: bookshare1.cate1
INFO - columns: [cateid, catename]
INFO - foreign keys: []
INFO - indexes: [primary, u_cate1name_unique]
INFO - table found: bookshare1.cate2
INFO - columns: [cateid, p_cate_id, catename]
INFO - foreign keys: [fk_two_one]
INFO - indexes: [primary, u_cate2name_unique, fk_two_one]
INFO - table found: bookshare1.comment
INFO - columns: [content, commentid, bookid, userid]
INFO - foreign keys: [fk_comment_book, fk_comment_user]
INFO - indexes: [fk_comment_book, primary, fk_comment_user]
INFO - table found: bookshare1.favor_user_book
INFO - columns: [bookid, fubid, userid]
INFO - foreign keys: [fk_favor_user, fk_favor_book]
INFO - indexes: [fk_favor_user, fk_favor_book, primary]
INFO - table found: bookshare1.grade
INFO - columns: [bookid, userid, grade, gradeid]
INFO - foreign keys: [fk_grade_book, fk_grade_user]
INFO - indexes: [fk_grade_book, primary, u_userid_bookid, fk_grade_user]


INFO - table found: bookshare1.tags
INFO - columns: [tagid, tagname]
INFO - foreign keys: []
INFO - indexes: [primary, u_tagname_unique]
INFO - table found: bookshare1.upload
INFO - columns: [bookid, upid, userid]
INFO - foreign keys: [fk_upload_book, fk_upload_user]
INFO - indexes: [fk_upload_book, primary, fk_upload_user]
INFO - table found: bookshare1.user
INFO - columns: [username, email, userid, password]
INFO - foreign keys: []
INFO - indexes: [u_username_unique, primary, u_email_unique]
INFO - schema update complete
INFO - configuring from resource: /hibernate.cfg.xml
INFO - Configuration resource: /hibernate.cfg.xml
INFO - Reading mappings from resource : com/niko/beans/User.hbm.xml
INFO - Mapping class: com.niko.beans.User -> user
···
INFO - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO - Using ASTQueryTranslatorFactory
INFO - Query language substitutions: {}
INFO - JPA-QL strict compliance: disabled
INFO - Second-level cache: enabled
INFO - Query cache: disabled
INFO - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
INFO - Optimize cache for minimal puts: disabled
INFO - Structured second-level cache entries: disabled
INFO - Statistics: disabled
INFO - Deleted entity synthetic identifier rollback: disabled
INFO - Default entity-mode: pojo
INFO - Named query checking : enabled
INFO - building session factory
INFO - Not binding factory to JNDI, no JNDI name configured
INFO - Using DataSource [org.apache.commons.dbcp.BasicDataSource@cdd54e] of Hibernate SessionFactory for HibernateTransactionManager
set user dao!
INFO - Root WebApplicationContext: initialization completed in 5297 ms
INFO - Parsing configuration file [struts-default.xml]
INFO - Parsing configuration file [struts-plugin.xml]
INFO - Parsing configuration file [struts.xml]
···
INFO - ... initialized Struts-Spring integration successfully



但在运行时,就不行:
set user service!
com.niko.service.UserServiceImpl@226649
userDAO is Null: true
ERROR - Exception occurred during processing request: null
java.lang.NullPointerException
at com.niko.service.UserServiceImpl.login(UserServiceImpl.java:30)
at com.niko.action.LoginAction.execute(LoginAction.java:59)

下面是我的Spring配置:
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<!-- 指定连接数据库的驱动 -->
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- mappingResouces属性用来列出全部映射文件 -->
<property name="mappingResources">
<list>
<!-- 以下用来列出Hibernate映射文件 -->

<value>com/niko/beans/User.hbm.xml</value>
<value>com/niko/beans/Admin.hbm.xml</value>
<value>com/niko/beans/Book.hbm.xml</value>
<value>com/niko/beans/BookTag.hbm.xml</value>
<value>com/niko/beans/Cate1.hbm.xml</value>
<value>com/niko/beans/Cate2.hbm.xml</value>
<value>com/niko/beans/Comment.hbm.xml</value>
<value>com/niko/beans/FavorUserBook.hbm.xml</value>
<value>com/niko/beans/Grade.hbm.xml</value>
<value>com/niko/beans/Tags.hbm.xml</value>
<value>com/niko/beans/Upload.hbm.xml</value>

</list>
</property>
<property name="hibernateProperties">
<props>
<!-- 指定数据库方言 -->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect</prop>
<!-- 是否根据需要每次自动创建数据库 -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<prop key="hibernate.show_sql">true</prop>
<!-- 将SQL脚本进行格式化后再输出 -->


<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>



<bean id="userDAO" class="com.niko.dao.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="adminDAO" class="com.niko.dao.AdminDAOImpl"></bean>

<bean id="bookDAO" class="com.niko.dao.BookDAOImpl"></bean>
<bean id="bookTagDAO" class="com.niko.dao.BookTagDAOImpl"></bean>
<bean id="cate1DAO" class="com.niko.dao.Cate1DAOImpl"></bean>
<bean id="cate2DAO" class="com.niko.dao.Cate2DAOImpl"></bean>
<bean id="commentDAO" class="com.niko.dao.CommentDAOImpl"></bean>
<bean id="favorUserBookDAO" class="com.niko.dao.FavorUserBookDAOImpl"></bean>
<bean id="gradeDAO" class="com.niko.dao.GradeDAOImpl"></bean>
<bean id="hibernateSessionFactory" class="com.niko.dao.HibernateSessionFactory"></bean>
<bean id="tagsDAO" class="com.niko.dao.TagsDAOImpl"></bean>
<bean id="uploadDAO" class="com.niko.dao.UploadDAOImpl"></bean>


<bean id="adminService" class="com.niko.service.AdminServiceImpl">
</bean>
<bean id="bookService" class="com.niko.service.BookServiceImpl">
</bean>
<bean id="bookTagService" class="com.niko.service.AdminServiceImpl">
</bean>
<bean id="favorUserBookService" class="com.niko.service.FavorUserBookServiceImpl">
</bean>
<bean id="tagsService" class="com.niko.service.TagsServiceImpl">
</bean>
<bean name="userService" class="com.niko.service.UserServiceImpl">
<property name="userDAO" ref="userDAO"/>
</bean>




<!-- Action -->

<bean name="loginAction" class="com.niko.action.LoginAction" scope="prototype">
<property name="userService">
<ref local="userService"/>
</property>
</bean>





这是什么原因呢? SSH Spring? dao


[解决办法]
在service类中是否设定了dao的set方法,例如
public class ServiceImpl{
  private Dao dao;
  public void setDao(Dao dao){
     this.dao = dao;
 }
.....
}
[解决办法]

引用
ERROR - Exception occurred during processing request: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
org.hibernate.HibernateException: No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here

没有配置事务的问题吧

热点排行