本人是新人,分不是很多~~全撒了~~希望能有高人给我指点
本人一开始建项目的时候把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;
}
}
本人一开始建项目的时候把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;
}
}
你不用把applicationContext.xml手动脱到WEB-INF里面,还是在src里就好,因为eclipse编译的时候会自动把它放在类路径里面,也就是\WebRoot\WEB-INF\classes下面,你现在手动拖放了,反倒画蛇添足,不再类路径里了
你试试看吧
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/configs/applicationContext.xml
</param-value>
</context-param>
应该还有别的问题
何苦这样呢,还不如用spring注入呢
不要这样手动加载么..
ApplicationContext ctx =
new ClassPathXmlApplicationContext("../applicationContext.xml"); 而且路径貌似也不对
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)
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.
在你的dao层操作数据库的时候,可能一个方法里写了多个操作,例如先查询,在更新,建议将他们写成2个方法,调完查询后返回出去结果在调用更新。还有,将applicationcontext配置文件中的key为readonly的更改掉。就应该能解决了
看一下TblPersoncustomer.hbm.xml 中id生成策略是什么
oracle的
<generator class="sequence">
<param name="sequence">XXXX</param>
</generator>
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>