论坛首页 Java版 Spring

示无法打开applicationContext.xml的问题

浏览 3831 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2006-09-04
环境:window2000+Spring+hibernate+mysql+exlipse3.1 +myeclipse4.1

一个小例子:

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</web-app>

applicationCont.xml:

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- ========================= Start of PERSISTENCE DEFINITIONS ========================= -->
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>/init.properties</value>
</property>
</bean>
<!-- Choose the dialect that matches your "dataSource" definition -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${datasource.driverClassName}</value>
</property>
<property name="url">
<value>${datasource.url}</value>
</property>
<property name="username">
<value>${datasource.username}</value>
</property>
<property name="password">
<value>${datasource.password}</value>
</property>
<property name="maxActive">
<value>${datasource.maxActive}</value>
</property>
<property name="maxIdle">
<value>${datasource.maxIdle}</value>
</property>
<property name="maxWait">
<value>${datasource.maxWait}</value>
</property>
<property name="defaultAutoCommit">
<value>${datasource.defaultAutoCommit}</value>
</property>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="mappingResources">
<list>
<value>com/wen/bean/Userinfotab.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>
<prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>
</props>
</property>
</bean>
<bean id="userInfoDAO" class="com.wen.dao.hibernate.UserInfoHibernateDAO">
<property name="sessionFactory">
<ref local="mySessionFactory"/>
</property>
</bean>

<bean id="userInfoService" class="com.wen.business.service.UserInfoSeviceImp">
<property name="userInfoDAO">
<ref local="userInfoDAO"/>
</property>
</bean>
<!-- <bean name="sysInfo" class="com.laoer.bbscs.sys.SysInfo" singleton="true"/> -->
<!-- <bean name="forbid" class="com.laoer.bbscs.sys.Forbid" singleton="true"/> -->
</beans>

TopAction:
[code:1] package com.wen.struts.action; import javax.servlet.ServletContext; import org.apache.struts.action.Action; import org.apache.struts.action.ActionServlet; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; import com.wen.business.IUserInfoService; public class TopAction extends Action { private WebApplicationContext wac; private IUserInfoService userInfoService; public void setServlet(ActionServlet actionServlet) { super.setServlet(actionServlet); ServletContext servletContext=actionServlet.getServletContext(); this.wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); this.userInfoService = (IUserInfoService) wac.getBean("userInfoService"); } protected WebApplicationContext getWebApplicationContext() { return wac; } protected IUserInfoService getUserInfoService() { return userInfoService; } } [/code:1] LoginAction [code:1] public class LoginAction extends TopAction { // --------------------------------------------------------- Instance Variables // --------------------------------------------------------- Methods /** * Method execute * @param mapping * @param form * @param request * @param response * @return ActionForward */ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form; // TODO Auto-generated method stub com.wen.bean.UserInfo ui = getUserInfoService().findUserInfoByPasswd(loginForm.getUserName(), loginForm.getPassWord()); if (ui == null) { ActionErrors errors = null; errors.add("error.user.nouser", new ActionError("error.user.nouser")); saveErrors(request, errors); return mapping.findForward("login"); } return mapping.findForward("login"); } } [/code:1] 其他文件如果需要再传 提示异常信息: [/code]
严重: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from resource [/WEB-INF/applicationContext.xml] of ServletContext; nested exception is java.io.FileNotFoundException: Could not open resource [/WEB-INF/applicationContext.xml] of ServletContext
java.io.FileNotFoundException: Could not open resource [/WEB-INF/applicationContext.xml] of ServletContext
at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:73)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:125)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:125)
at org.springframework.context.support.AbstractXmlApplicationContext.refreshBeanFactory(AbstractXmlApplicationContext.java:65)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:226)
at org.springframework.web.context.support.XmlWebApplicationContext.refresh(XmlWebApplicationContext.java:131)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:156)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:97)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:48)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:277)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:832)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:701)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:432)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1091)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:480)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2313)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
2006-9-4 11:13:36 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2006-9-4 11:13:36 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors
2006-9-4 11:13:36 org.apache.coyote.http11.Http11Protocol start
[code:1][/code:1]
   
时间:2006-09-04
listener可以放context-param前面?楼主对tomcat还不是很熟悉啊!
http://java.sun.com/dtd/web-app_2_3.dtd 去这里看下DTD再说吧!

另,我记得,myeclipse的xml会报错才对!
   
0 请登录后投票
时间:2006-09-04
我改了后还是出项同样的问题
请看:
web.xml:
[code:1]
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
</web-app>
[/code:1]
   
0 请登录后投票
时间:2006-09-04
错误提示是:没有找到applicationContext.xml文件
   
0 请登录后投票
时间:2006-09-08
无法找到applicationContext.xml的问题解决了
我在的web.xml中的<context-param>改成了
[code:1]
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>[/code:1]

但新的问题出现了:
[code:1]
严重: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'HibernateTransactionManager' defined in resource [/WEB-INF/classes/applicationContext.xml] of ServletContext: Bean class [org.springframework.orm.hibernate3.HibernateTransactionManager] not found; nested exception is java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.HibernateTransactionManager
java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.HibernateTransactionManager[/code:1]

[code:1]
严重: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'mySessionFactory' defined in resource [/WEB-INF/classes/applicationContext.xml] of ServletContext: Bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean] not found; nested exception is java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.LocalSessionFactoryBean
java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.LocalSessionFactoryBean
[/code:1]

这两个异常,
相应的包都存在于工程的lib目录里面,我在类中import过是存在的 但是在启动tomcat的时候始终出现上面的问题。请大家指教。

我的applicationContext.xml:
[code:1]
<?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="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/wen</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com.yourcompany.bean.Userinfotab.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="HibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="mySessionFactory"/>
</property>
</bean>
<bean id="userInfoDAO" class="com.yourcompany.dao.hibernate.UserInfoHibernateDAO">
<property name="sessionFactory">
<ref local="mySessionFactory"/>
</property>
</bean>

<bean id="userInfoService" class="com.yourcompany.business.server.UserInfoServerImp">
<property name="userInfoDAO">
<ref local="userInfoDAO"/>
</property>
</bean>
</beans>
[/code:1]

刚研究这个 对spring的配置文件还很生疏。望指点
   
0 请登录后投票
时间:2006-09-08
java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.LocalSessionFactoryBean

你的Spring.jar在WEB-INF\lib目录下吗?
   
0 请登录后投票
时间:2006-09-11
感谢楼上的 ,在。不在的话还好解决,问题就是在lib目录里面还是出这个错误
   
0 请登录后投票
时间:2006-09-12
问题已经解决,
把web.xml中的listener
<listener>
<listener-class>com.yourcompany.struts.servlet.SysListener</listener-class>
</listener>

换成
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
就run起来了 不知道何故?
令人费解!!!
   
0 请登录后投票
时间:2006-09-14
com.yourcompany.struts.servlet.SysListener是哪抄来的?
   
0 请登录后投票
时间:2006-09-15
我自己些的一个。
不是这个,我拷错了,这是其中的一个配置,在他之前还配置了:<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
结果就出现上边的问题了,现在解决了。我再去换成org.springframework.web.context.ContextLoaderListener试试看
   
0 请登录后投票
论坛首页 Java版 Spring

跳转论坛:
JavaEye推荐