本人是新人,分不是很多~~全撒了~~希望能有高人给我指点
本人一开始建项目的时候把ApplicationContext.xml文件放到SRC目录下面,后来手动拖到WEB-INF下面
现在我在我的ACTION里面调用ApplicationContext.xml文件报错,希望高手给予指点,最好详细一点。TOMCAT报错
HTTP Status 500 - --------------------------------------------------------------------------------javax.servlet.ServletException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [../applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: could not instantiate id generatorroot cause org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [../applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: could not instantiate id generator

root cause org.hibernate.MappingException: could not instantiate id generator
root cause org.hibernate.MappingException: could not interpret id generator strategy: hilo.hex
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
--------------------------------------------------------------------------------Apache Tomcat/6.0.18
WebRoot
   |
   META-INF
   page  //存放我工程的所有页面
   WEB-INFO
    |    |
    |    lib
    |    applicationContext.xml
    |    spring.tld
    |    spring-form.tld
    |    struts-bean.tld
    |    struts-config.xml
    |    struts-logic.tbl
    |    struts-nested.tld
    |    struts-tiles.tld
    |
    |
    index.jsp
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSouce"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.0.130:1521:orcl">
</property>
<property name="username" value="scott"></property>
<property name="password" value="tiger"></property>
</bean>

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSouce" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>
com/nicebridge/hcss/crm/hibernate/demo/TblPersoncustomer.hbm.xml
</value>
</list>
</property> 
</bean>

<bean id="PersonInfoOperate" class="com.nicebridge.hcss.crm.hibernate.operate.PersonInfoOperate">
    <property name="sessionFactory">
    <ref bean="sessionFactory"/>
    </property>
    </bean>
</beans>
PersonInfoAction.java
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.nicebridge.hcss.crm.action;import java.util.Iterator;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.nicebridge.hcss.crm.form.PersonInfoForm;
import com.nicebridge.hcss.crm.hibernate.operate.PersonInfoOperate;
import com.nicebridge.hcss.crm.hibernate.pojo.PersonCustomer;/** 
 * MyEclipse Struts
 * Creation date: 04-13-2009
 * 
 * XDoclet definition:
 * @struts.action path="/personInfo" name="personInfoForm" input="/page/crm/customerpage/personinfo.jsp" scope="request" validate="true"
 * @struts.action-forward name="success" path="/page/crm/index.jsp"
 * @struts.action-forward name="failure" path="/page/crm/logon.jsp"
 */
public class PersonInfoAction extends Action {
/*
 * Generated Methods
 */ /** 
 * Method execute
 * @param mapping
 * @param form
 * @param request
 * @param response
 * @return ActionForward
 */
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
PersonInfoForm personInfoForm = (PersonInfoForm) form;// TODO Auto-generated method stub

ApplicationContext ctx = 
new ClassPathXmlApplicationContext("../applicationContext.xml");

PersonInfoOperate person = (PersonInfoOperate) ctx.getBean("PersonInfoOperate");

String aa = "aaaa";
System.out.println("hello world");
System.out.println("我终于进来了");

List list = person.qureyAll();
Iterator iter = list.iterator();
request.setAttribute("Personlist",list);

request.setAttribute("eee",aa);

return mapping.findForward("success");
}
}
PersonInfoOperate.java package com.nicebridge.hcss.crm.hibernate.operate;import java.util.List;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class PersonInfoOperate {
private SessionFactory sessionFactory = null; public SessionFactory getSessionfactory() {
return sessionFactory;
} public void setSessionfactory(SessionFactory sessionfactory) {
this.sessionFactory = sessionfactory;
}

// public PersonInfoOperate(){
// Configuration config = new Configuration();
// SessionFactory factory = config.buildSessionFactory();
// this.session = factory.openSession();
// }

public List qureyAll(){
Session session = sessionFactory.openSession();
List list =null;
String hql = "from tbl_personcustomer as p";
Query q = session.createQuery(hql);
list = q.list();
return list;
}
}

解决方案 »

  1.   

    我没打仔细看你下面的程序,不过仅从上面看到出来,给我的想法:
    你不用把applicationContext.xml手动脱到WEB-INF里面,还是在src里就好,因为eclipse编译的时候会自动把它放在类路径里面,也就是\WebRoot\WEB-INF\classes下面,你现在手动拖放了,反倒画蛇添足,不再类路径里了
    你试试看吧
      

  2.   

    没仔细看 可以试下在web.xml里修改/WEB-INF/configs/applicationContext.xml这个路径为你改过后的路径
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
    /WEB-INF/configs/applicationContext.xml
    </param-value>
    </context-param>
      

  3.   

    估计是包的问题~~~hibernate-annotations.jar的版本对于hibernate3来说低了~~换个新版本的包试试~~
    应该还有别的问题
      

  4.   

    如果你要放到web-inf里,不能用ClassPathXmlApplicationContext,应该用FileSystemXmlApplicationContext。
    何苦这样呢,还不如用spring注入呢
      

  5.   

    应该文件TblPersoncustomer.hbm.xml的配置问题,id生成策略
      

  6.   

    直接在web.xml里面就加载掉applicationContext.xml
    不要这样手动加载么..
    ApplicationContext ctx =
    new ClassPathXmlApplicationContext("../applicationContext.xml"); 而且路径貌似也不对
      

  7.   

    TOMCAT报错贴出exception javax.servlet.ServletException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [../applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: could not instantiate id generator
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [../applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: could not instantiate id generator
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    java.security.AccessController.doPrivileged(Native Method)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    com.nicebridge.hcss.crm.action.PersonInfoAction.execute(PersonInfoAction.java:51)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      

  8.   

    root cause org.hibernate.MappingException: could not instantiate id generator
    org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:98)
    org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:152)
    org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:192)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
    org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)
    org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)
    org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    java.security.AccessController.doPrivileged(Native Method)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    com.nicebridge.hcss.crm.action.PersonInfoAction.execute(PersonInfoAction.java:51)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause org.hibernate.MappingException: could not interpret id generator strategy: hilo.hex
    org.hibernate.id.IdentifierGeneratorFactory.getIdentifierGeneratorClass(IdentifierGeneratorFactory.java:109)
    org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:92)
    org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:152)
    org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:192)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
    org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814)
    org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732)
    org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    java.security.AccessController.doPrivileged(Native Method)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    com.nicebridge.hcss.crm.action.PersonInfoAction.execute(PersonInfoAction.java:51)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
      

  9.   

    估计是你hibernate的JAR包版本问题,你拖ApplicationContext.XML之前会不会错嘛?试试看拖回去喃?
      

  10.   

    你在后台查询的时候创建了2个不同的session,可以将两个session合并。我以前遇到过的,最后解决方法,
    在你的dao层操作数据库的时候,可能一个方法里写了多个操作,例如先查询,在更新,建议将他们写成2个方法,调完查询后返回出去结果在调用更新。还有,将applicationcontext配置文件中的key为readonly的更改掉。就应该能解决了
      

  11.   

    org.hibernate.MappingException: could not instantiate id generator 
    看一下TblPersoncustomer.hbm.xml 中id生成策略是什么
    oracle的
               <generator   class="sequence">
                      <param   name="sequence">XXXX</param>  
                  </generator>   
      

  12.   

    <!-- spring的应用上下文 -->
           web.xml配置改成
            <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <!-- spring的监听器,以便在启动时就自动加载spring的配置 -->
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
      

  13.   

    放在web-inf/classes下面,修改一下配置文件,同时workspace里面的springbean和myhibernate这两个文件有相关的东西,也要设置,祝你好运!