今天启动tomcat 后 在浏览器输入地址后 出现如下问题:之前还好好的。
exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionFactory' is defined
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:338)
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedBeanDefinition(AbstractBeanFactory.java:870)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:237)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:644)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:218)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.lookupSessionFactory(OpenSessionInViewFilter.java:202)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:146)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:413)
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
初步问题是:找不到org.springframework.beans.factory 下 bean 'sessionFactory' 郁闷!
首先在web-xml 配置了application*.xml加载路劲。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring/application*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
当web.xml加载时 延迟加载spring的配置文件application*.xml
在applicationContext.xml中含有bean 为SeesionFactory
如下:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
................/>
路劲没问题,应该就能找到bean 为 seesionFactory 不知为什么?
在网上搜索了一通,发现OpenSessionInViewFilter可能引起这个异常。
异常说明:sessionFactory bean未定义
异常原因:applicationContext.xml配置文件中使用其他名字sessionFactory
在web.xml的位置如下
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
<!--<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value> -->
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
OpenSessionInViewFilter的主要功能是用来把一个Hibernate Session和一次完整的请求过程对应的线程相绑定。目的是为了实现"Open Session in View"的模式。例如:它允许
在事务提交之后延迟加载显示所需要的对象。
OpenSessionInViewFilter 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到。所以 OpenSessionInViewFilter 适用于 Service 层使
用HibernateTransactionManager 或 JtaTransactionManager 进行事务管理的环境,也可以用于非事务只读的数据操作中。
而我的applicationContext-dao.xmlz中的
<bean id="accountDAO" class="com.dbw.cms.dao.hibernate.AccountDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
是使用sessionFactory啊,没错。可是他还是没找到bean 为sessionFactory 晕!
最后发现我WEB-INF下面lib文件夹下文件没有了 也就说很多包文件丢失 ,可能我代码同步更新的时候,jdk的路劲和其他的不一样
jdk安装的时候 有JAVA_HOME PATH CLASSPATH
具体作用:path和classpath的作用:path是为JDK提供的那些工具设的,如java.exe,javac.exe,而classpath是为 Java程序所用到的库文件所设的,于是path设成:java_home
/bin;而classpath设为:java_home/jre/lib /rt.jar,如果我们开发的一个应用中用到了非j2se提供的库文件,则需将这些文件加到classpath中,比如说利用javamail开发一个邮
件应用,就应该把mail.jar
等文件加到classpath中:java_home/jre/lib/ext/mail.jar;.
如果一台PC上装了几个JRE,那么就要注意了,有时很容易产生问题,很可能我们用来编译Java程序的javac.exe所相关的JRE与运行程序时所用的JRE不是一个版本, 这可能会产生
版本冲突,这可以通过设定path变量来解决。
最后应用中的第三方文件应该加到java_home/jre/lib/ext下
而我之前的WEB-INF下面lib文件夹下文件没有任何第三包 可能是JDK的问题,结果尝试了重新配置了本机的JDK后 ,果然问题解决!
分享到:
相关推荐
MyEclipse生成的HibernateSessionFactory.java文件,应该是完整的。
3. **Bean类(Java Bean)**:在Java中,Bean是一种遵循特定规范的Java类,通常用于封装数据。它具有默认构造函数,公共属性(getters和setters),以及可序列化的特性。在ORM中,Bean类代表数据库表中的一个记录。 ...
在Java的持久化框架中,Hibernate是一个非常重要的组件,它为开发者提供了强大的对象关系映射(ORM)功能,使得数据库操作变得更为简单。...理解和熟练运用`SessionFactory`对于提升Java应用的数据库处理能力至关重要。
在Java的持久化框架Hibernate中,`SessionFactory`是核心组件之一,它负责管理数据库会话并提供对象-关系映射(ORM)的功能。本篇文章将深入探讨`SessionFactory`的使用,以及如何创建和操作它。 `SessionFactory`...
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ... </bean> ``` 这里,`configLocation`指定了Hibernate配置文件的位置,`packagesToScan`告诉Spring哪些...
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
2. **配置HibernateTemplate**:接下来,我们创建一个HibernateTemplate的bean,并将其SessionFactory属性设置为上面配置的SessionFactory。这样,HibernateTemplate就能通过SessionFactory执行数据库操作了: ```...
#### 六、No bean named 'sessionFactory' is defined **异常描述:** 使用Spring框架时,找不到名为`sessionFactory`的bean。 **异常信息:** 错误提示通常会指出未找到名为`sessionFactory`的bean。 **异常原因...
但是,为了实现nosession模式,我们可以使用SessionFactory的createSQLQuery()方法来执行原生的SQL查询,这样就无需打开和关闭Session。以下是一个简单的示例: ```java SessionFactory sessionFactory = ...
例如,通过在Spring配置文件中定义SessionFactory bean,我们可以控制其初始化、关闭,以及事务管理等行为。 在Spring中,我们通常会使用`<bean>`标签来声明SessionFactory,如下所示: ```xml <bean id=...
4. `spring-config.xml`和`beans.xml`: 这些是Spring框架的配置文件,可能包含SessionFactory和相关bean的配置,以及事务管理的设置,这些设置将直接影响到`getCurrentSession()`的行为。 5. `ehcache_hibernate.xml...
`SpringMVC接收表单bean示例`是一个具体的应用场景,它演示了如何使用Spring MVC来优雅地处理前端提交的表单数据,并通过Java Bean进行封装。在这个示例中,结合了Spring MVC与Hibernate,提供了一个完整的后端数据...
针对sessionFactory没有出现的可能原因;
- **配置Spring**:编写XML配置文件,声明Spring的Bean定义,包括数据源、SessionFactory、事务管理器等。 - **整合Hibernate**:配置Hibernate SessionFactory,定义实体类,使用注解或XML映射文件描述数据库表。...
在Java的Hibernate框架中,`SessionFactory` 和 `Session` 是两个非常重要的概念,它们是Hibernate持久化机制的核心组件。理解 `SessionFactory.getCurrentSession()` 和 `Session.openSession()` 的区别对于优化和...
Hibernate是一个强大的Java持久层框架,它的SessionFactory是其核心组件之一,负责管理与数据库的会话。 首先,让我们深入理解SessionFactory。SessionFactory是Hibernate中的一个单例对象,它负责创建Session实例...
Java软件工程师笔试题涵盖了许多关键知识点,这包括但不限于Java编程基础、面向对象设计、数据库管理、以及流行的Java框架。以下是对这些主题的详细说明: 1. **Java编程基础**:这是Java软件工程师的基础,包括...