论坛首页 Java企业应用论坛

示无法打开applicationContext.xml的问题

浏览 20572 次
精华帖 (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:
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;
  }
}


LoginAction
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");;
	}

}


其他文件如果需要再传
提示异常信息:


严重: 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

    
   发表时间: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:
<?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>
0 请登录后投票
   发表时间:2006-09-04  
错误提示是:没有找到applicationContext.xml文件
0 请登录后投票
   发表时间:2006-09-08  
无法找到applicationContext.xml的问题解决了
我在的web.xml中的<context-param>改成了
  	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
	</context-param>


但新的问题出现了:
严重: 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


严重: 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


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

我的applicationContext.xml:
<?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>


刚研究这个 对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企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics